实验:MSP430F249 数码管计数到60自动清零(详细注释)
创始人
2025-05-29 18:12:55

实验:MSP430F249 数码管计数到60自动清零

Date: March 14, 2023


基础设定:

IAR基础设置:设置设备与输出文件及格式

Untitled

Untitled




实验:MSP430F249 数码管计数到60自动清零

具体内容:

MSP430F249 数码管计数到60自动清零

仿真图:

Untitled

  • Code: 详细注释

    #include/*实现思路:首先,采用晶振实现每秒准确定时,并调用中断函数,发送信号给扫描器,同时也设定到60秒复位。其次,实现数码管扫描已发送的信号并显示LED
    *///定义两个数组
    unsigned dis_buf[2]={0}; //数组中有两个位置,一个给十位,一个给个位
    unsigned char counter=0;//共阴极数码管缓存区
    unsigned char Led_Tab2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//延时函数
    void delay(unsigned i){do(i--);while(i!=0);
    }//数码管扫描
    void scan(){for(unsigned char i=0;i<40;i++){P5OUT=BIT1; //0010 => 让十位亮     0010, p5.1高电频,p5.0低电平(接地)P4OUT=0;P4OUT=Led_Tab2[dis_buf[1]]; //送段码,显示十位数delay(100); //延长灯亮度时间(先让十位显示)P5OUT=BIT0; //0001 => 让个位亮P4OUT=0;P4OUT=Led_Tab2[dis_buf[0]];//送段码,显示个位数delay(100); //让两个数码管同时显示}
    }void main(void){/*功能:预处理*///关闭看门狗WDTCTL= WDTPW + WDTHOLD; //芯片引脚输入输出方向P3DIR=0x01;P3OUT=0X01;P4DIR=0xff;P4OUT=0xff;P5DIR=0x03;P5OUT=0xff; //初始状态数码管不亮/*功能:定时(采用晶振计算定时,计算1s时长)*/CCTL0=CCIE; //启动Iimer_A定时器CCR0 = 32768; //晶振频率TACTL = TASSEL_1+MC_1; //_EINT(); //中断允许触发器/*功能:点亮并刷新LED*///不断保持数码管扫描while(1){scan();}
    }//中断函数
    #pragma vector=TIMERA0_VECTOR
    __interrupt void Timer_A (void){P3OUT^=0x01;counter++;//功能:计数到60归零if(counter==61) counter=0; //修改计数器的定时范围dis_buf[1]=counter/10;//取门数值前十位数dis_buf[0]=counter%10;//取门数值的个位数
    }
    

运行结果:没有任何报错和警告

Untitled

问题&解决:

  1. 仿真运行时,按键按下灯不亮,或者一直亮

    解决:重启proteus软件

  2. 仿真报Unrecognized opcode at 0x000006: 0x0000的错误

    解决:设备问题,IAR软件中选中MSP430F249

相关内容

热门资讯

原创 新... 新疆大盘鸡,一道色香味俱全的佳肴,以其独特的调味和烹饪方式,俘获了无数食客的心。今天,就让我们跟随作...
北京年味飘悉尼|2026北京“... 当地时间2月11日至12日,“欢乐春节·你好北京”游园会在澳大利亚悉尼市中心达令港谊园成功举办,当地...
横店电影城春节放大招!看大片+... 2026年春节档明日(2月15日)正式开启!横店影视旗下400多家直营影城,早早就全力开启新春筹备模...