广告

原创 msp430数码管程序

2009-5-14 11:20 1640 0 分类: MCU/ 嵌入式

http://space.ednchina.com/Upload/2009/5/14/d47553be-e4f3-4ba5-a34e-d675ae68ddb0.rar #include <msp430x14x.h>
unsigned char  table[]={0xC0,0xF9,0xA4,0xB0,0x99,
                            0x92,0x82,0xF8,0x80,0x90};
unsigned char min;
unsigned char sec;
unsigned char hour;
void delay1ms()
{
 unsigned char i;
 for(i=124;i>0;i--);  //延时124*8+10=1002us
}


void delay1  (void)
{
    unsigned int tmp;
   
    for(tmp = 12000;tmp > 0;tmp--);
}
void LED_display( )       //显示
{
 
 
         P5OUT=0x01;                  //51.0=0,选通第一位
  P1OUT=table[hour / 10];     //显示分钟的十位
  delay1ms();
  P1OUT =0xff;                 //消隐
        
          P5OUT=0x02;                  //51.0=0,选通第一位
  P1OUT=table[hour %10];     //显示分钟的十位
  delay1ms();
  P1OUT =0xff;
        
  P5OUT=0x04;                  //51.0=0,选通第一位
  P1OUT=0xbf;              //显示分钟的十位
  delay1ms();
  P1OUT =0xff;                 //消隐
        
          P5OUT=0x08;                  //51.0=0,选通第一位
  P1OUT=table[min /10];     //显示分钟的十位
  delay1ms();
  P1OUT =0xff; 
        
          P5OUT=0x10;                  //51.0=0,选通第一位
  P1OUT=table[min %10];     //显示分钟的十位
  delay1ms();
  P1OUT =0xff; 
        
          P5OUT=0x20;                  //51.0=0,选通第一位
  P1OUT=0xbf;     //显示分钟的十位
  delay1ms();
  P1OUT =0xff; 
        
          P5OUT=0x40;                  //51.0=0,选通第一位
  P1OUT=table[sec /10];     //显示分钟的十位
  delay1ms();
   P1OUT =0xff;                   //消隐
        
          P5OUT=0x80;                  //51.0=0,选通第一位
  P1OUT=table[sec % 10];     //显示分钟的十位
  delay1ms();
   P1OUT =0xff;          //消隐
        
}   


 


#pragma vector = WDT_VECTOR
__interrupt void watchdog_timer(void)
{   
  sec ++;
  if (sec==60)
  {
     sec="0";
     min++;
     if (min==60)
     {
       min="0";
       hour++;
       if (hour==13)
         hour="1";
     }
  }
    
}


#pragma vector="PORT2"_VECTOR
__interrupt  void Port2 (void)


{
 if ((P2IFG&BIT0)==BIT0)
  {
     delay1 ();
     if ((P2IFG&BIT0)==BIT0)
     {
       while((P2IN&BIT0) ==BIT0 ) ;      //等待按键放开
   sec ++ ;
   if (sec==60)
     sec="0";
     }
   P2IFG&=~BIT0;
   
  }
 else  if ((P2IFG&BIT1)==BIT1)
  {
  
   min ++ ;
    if (min == 60)
     min = 0;
   
   P2IFG&=~BIT1;
  }


 else  if ((P2IFG&BIT2)==BIT2)
  {
   
     delay1 ();
     if ((P2IFG&BIT2)==BIT2)
     {
       while((P2IN&BIT2) ==BIT2 ) ;      //等待按键放开
     hour ++ ;
    if (hour == 13)
     hour = 1;
     }
   P2IFG&=~BIT2;
  }


 else  if ((P2IFG&BIT3)==BIT3)
  {
     delay1 ();
     if ((P2IFG&BIT3)==BIT3)
     {
       while((P2IN&BIT3) ==BIT3 ) ;      //等待按键放开
   sec = 0;
   min = 0;
   hour = 0;
     }
   P2IFG&=~BIT3;
  }
}
void main ()
{
    WDTCTL = WDTPW + WDTHOLD;   //关闭看门狗
    P1DIR = 0xff;
    P5DIR = 0xff;
    P1OUT = 0xff;
    P5OUT =0;
     P2IES = 0x0f;               // P1.0~P1.3选择下降沿中断
   P2IE = 0x0f;                // 打开中断使能            
              


     WDTCTL = WDT_ADLY_1000 ; 
       IE1 |= WDTIE;
     _EINT();
    
  while (1)
    {  
    LED_display( );
    }

广告

文章评论 0条评论)

登录后参与讨论
相关推荐阅读
aas7502987 2012-04-07 11:48
51/STC最小系统板资料(更新中)
图片欣赏    淘宝网址:http://item.taobao.com/auction/item_detail.htm?item_num_id=9073446988  二   程...
aas7502987 2011-10-13 22:59
YL-3 资料
YL-3数码管模块资料:YL-3 串行数码管资料.zip...
aas7502987 2011-09-24 09:10
USB转TTL小板驱动
xp系统驱动:XP系统支持STC下载的PL-2303HX新版驱动.rar WIN7系统驱动:WIN7系统支持STC下载的PL2303HX驱动.rar...
aas7502987 2011-05-24 22:48
STM32F103RBT6最小系统原理图 PCB
STM32F103RBT6最小系统板原理图 PCB 附件:做好的成品板:淘宝链接网址:http://item.taobao.com/item.htm?id=8864376956...
aas7502987 2011-05-08 12:53
YL-16 STM32F103最小系统板资料(更新中)
二 数据手册:  USB协议中文版:attachment download  中文数据手册:attachment downloadSTM32选型手册:attachment downloadSTM32勘...
aas7502987 2011-03-20 13:27
DS18B20温度测量模块
DS18B20 数码管温度显示程序:...
我要评论
0
0
广告
关闭 热点推荐上一条 /1 下一条