This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430F169八位数码管上显示八个数字01234567



/********************************************** 
程序功能:在八位数码管上显示八个数字01234567
----------------------------------------------- 
测试说明:观察数码管显示 
***********************************************/ 
#include  <msp430x14x.h>
typedef unsigned char uchar; 
#define wei_h P5OUT|= BIT5
#define wei_l P5OUT&= ~BIT5 
#define duan_l   P6OUT &= ~BIT6 
#define duan_h  P6OUT |= BIT6 
//数码管7位段码:0--f 
uchar scandata[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 
                      0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//记录显示位数的全局变量 uchar cnt = 0; 

/********************主函数********************/
void main(void) { 
    /*下面六行程序关闭所有的IO口*/     
    P1DIR = 0XFF;
    P1OUT = 0XFF; 
    P2DIR = 0XFF;
    P2OUT = 0XFF; 
    P3DIR = 0XFF;
    P3OUT = 0XFF;
     P4DIR = 0XFF;
    P4OUT = 0XFF;
     P5DIR = 0XFF;
    P5OUT = 0XFF;
     P6DIR = 0XFF;
    P6OUT = 0XFF;
    WDTCTL = WDT_ADLY_1_9;        // 设置内部看门狗工作在定时器模式,1.9ms中断一次 
    IE1 |= WDTIE;                 // 使能看门狗中断      
    P6DIR |= BIT2;
    P6OUT |= BIT2;  //关闭电平转换    
    P5DIR = 0xff;                 //设置P4,P5的IO方向为输出
     P4DIR = 0xff;                     
    P5OUT = 0x00;                 //设置P4,P5的输出初值
     P4OUT = 0xff;    
    _BIS_SR(LPM3_bits + GIE);     //CPU进入LPM3低功耗模式,同时打开全局中断 }
/*******************************************
函数名称:watchdog_timer 
功    能:看门狗中断服务函数,在这里输出数码管的 
          段选和位选信号 
参    数:无
返回值  :无 
********************************************/
#pragma vector=WDT_VECTOR 
__interrupt void watchdog_timer(void) {  
    //P4OUT = 0xff; 
    P4OUT = scandata[cnt];        //输出段选信号 
    duan_h;
     duan_l; 
    P4OUT = ~(1 << cnt);           //输出位选信号
     wei_h; 
    wei_l;    
    cnt++;                        //位计数变量在0~5之间循环
     if(cnt == 8) cnt = 0;