实验:MSP430F249 数码管计数到60自动清零(详细注释)

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

Date: March 14, 2023


基础设定:

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

Untitled

Untitled




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

具体内容:

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

仿真图:

Untitled

  • Code: 详细注释

    #include<msp430x24x.h>
    
    /*
      实现思路:
        首先,采用晶振实现每秒准确定时,并调用中断函数,发送信号给扫描器,同时也设定到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

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值