⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 数码管 数码时钟.txt

📁 在MSP430F2274单片机 编写的数码时钟程序
💻 TXT
字号:
#include "msp430x22x4.h"
  int s,d, res;                                 
  int TAB[]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xBF};
  int  *p00=TAB,*p1=TAB,*p2=TAB,*p3=TAB,*p4=TAB,*p5=TAB,*p6=TAB ,*p7=(TAB+10),*p8=(TAB+10);
  int  *p01=(TAB+7),*p02=(TAB+1),*p03=TAB,*p04=(TAB+8),*p05=TAB,*p06=(TAB+2),*p07=(TAB+6),*p08=TAB;
  void keyprocess( void );              
  void init_port( void );
  void Delay(void);
                           
  void main(void)
  {                                    
  
   init_port(); 
   
     while(1) 
     
    {
    
if (p00==(TAB+5))                                //显示日期
   { 
     for(s=0;s<=200;s++)   
  {
   // if( res==6) s=0,p00=TAB;
     P4OUT= 0X01;
     P3OUT = *p01;
  Delay(); 
  
    P4OUT=0X02;
     P3OUT = *p02;
   Delay();
   
    P4OUT=0X04;
    
    P3OUT = *p07;                  //if(d==0) s=0;           
  Delay(); 
   
    P4OUT=0X08;
    P3OUT = *p03;
  Delay(); 
   
      P4OUT=0X10;
      P3OUT = *p04;
   Delay();    
   
    P4OUT=0X20;
   
    P3OUT =*p08;                             
  Delay();
   
    P4OUT=0X40;
    P3OUT = *p05;
  Delay();
  
    P4OUT=0X80;
    P3OUT=*p06;
    Delay();   
    }
  if(res==5) p00=TAB;
   }
  else                               //ooooooooooooooooooo
   {                                //显示时间  
      P4OUT=0X01;
      P3OUT = *p1;
  Delay(); 
  
    P4OUT=0X02;
     P3OUT = *p2;
   Delay();
   
    P4OUT=0X04;
    P3OUT =0xBF;                         //两点
  Delay(); 
  
    P4OUT=0X08;
    P3OUT = *p3;
  Delay(); 
   
      P4OUT=0X10;
      P3OUT = *p4;
   Delay(); 
   
    P4OUT=0X20;
    P3OUT =0xBF;                        //两点 
   Delay();
   
    P4OUT=0X40;
    P3OUT=*p5;
   Delay();
  
     P4OUT=0X80;
    P3OUT=*p6;
  Delay();       
   }
  }
 }
#pragma vector = PORT1_VECTOR 
__interrupt void PORT1_VECTOR1(void) 
{  _NOP(); 
   Delay();
   keyprocess();                                      //BIC_SR_IRQ(LPM3_tits+GIE); 
   P1OUT=0x00;
   P1IFG=0X0;     
}
void Delay(void)                                     //延时子程序
  { int i;
   for(i=200;i>0;i--); 
  }

void init_port(void)                               //初始化子程序                  
{
 WDTCTL=WDTPW+WDTHOLD; 
  BCSCTL1 =CALBC1_1MHZ;
  DCOCTL =CALDCO_1MHZ;  
  P1DIR=0;
  P1SEL=0;
  P1DIR=0x0f;
  P1OUT=0x00;
  P1IE =0;
  P1IES =0;
  P1IFG =0;
  P1IE =0xf0;
  P1IES =0xF0;
  P4SEL=0;  
  P3SEL=0;
  P4DIR =0xff;                       
  P3DIR =0XFF;
  TACTL=TASSEL_1+TACLR;                     
  TACCR0 = 32768;                             
  TACTL |=MC0; 
  TACCTL0 |=CCIE; 
   _BIS_SR(GIE);                                
 
}

 void keyprocess(void )                                  //按键判断程序
{  
   
      P1OUT=0x0e;
   if((P1IN&0xf0)==0xe0)res=0;
   else if((P1IN&0xf0)==0xd0)res=1;
   else if((P1IN&0xf0)==0xb0)res=2;
   else if((P1IN&0xf0)==0x70)res=3;
   else 
   {
     P1OUT=0x0d;
      if((P1IN&0xf0)==0xe0)res=4;
  else if((P1IN&0xf0)==0xd0)res=5;
   else if((P1IN&0xf0)==0xb0)res=6;
   else if((P1IN&0xf0)==0x70)res=7;
    
   }

  if(res==6) p00=(TAB+5);
 
  if(res==5||p00==(TAB+5))  
   {
    p00=(TAB+5);                                             //年月日  
      
    if(res==1)
     { 
     p01++;                                                 //修正日
     if(p01==(TAB+10)) p01=TAB,p02++;
     if(p02==(TAB+3)&&p01==(TAB+2) ) p01=TAB,p02=TAB; 
     }
     
       
   else if(res==2) 
      { 
       p07++;                                                //修正月        
      if(p07==(TAB+10))  p07=TAB,p03++;
      if(p03==(TAB+1)&&p07==(TAB+3) ) p03=TAB,p07=TAB; 
      }
   
      
   else if(res==3)
      {
       p04++;                                              //修正年
       if(p04==(TAB+10))  p04=TAB,p08++;
       if(p08==(TAB+10)) 
       { p04=TAB;
         p08=TAB;
         p05++;
         if(p05==(TAB+10))  p05=TAB,p06++;
         if(p06==(TAB+10)&&p05==(TAB+5) ) p5=TAB,p6=TAB;
       }
      }
    }
   else  
  {   
    if (res==0)
    TACCTL0 &=~CCIE;                                             //关定时中断   
    else if(res==1)
     {p1++;                                                        //修正秒
     if(p1==(TAB+10))  p1=TAB,p2++;
     if(p2==(TAB+6)&&p1==(TAB+1) ) p1=TAB,p2=TAB; 
     }
  
   else if(res==2) 
      {p3++;                                                      //修正分        
      if(p3==(TAB+10))  p3=TAB,p4++;
      if(p4==(TAB+6)&&p3==(TAB+1) ) p3=TAB,p4=TAB; 
      }
  
   else if(res==3)
      { p5++;                                                    //修正时
      if(p5==(TAB+10))  p5=TAB,p6++;
       
      if(p6==(TAB+2)&&p5==(TAB+5) ) p5=TAB,p6=TAB;
      }
     }
 if(res==4) TACCTL0 |=CCIE;
   
}   
 
#pragma vector = TIMERA0_VECTOR                                   //ccr0中断服务
__interrupt void ta0_isr(void)
{  
  P3OUT^=BIT7;
  p1++;
  if(p1==(TAB+10))
  { p1=TAB;
    p2++;
    if(p2==(TAB+6)) 
   { 
     p2=TAB;                                       
     p3++;
    if(p3==(TAB+10)) 
    { p4++;
      p3=TAB;
      if(p4==(TAB+6))
      {p5++;
       p4=TAB; 
       if(p5==(TAB+10))
        { p6++;
         p5=TAB;
         if(p6==(TAB+2))
           { p01++;
             p6=TAB;
             if(p01==(TAB+10))
           { p02++;
             p01=TAB;
              if(p02==(TAB+3))
              { p07++;
               p02=TAB;
               if(p07==(TAB+1))
               { p03++;
                  p07=TAB;
                if(p03==(TAB+2))
                { p04++;
                  p03=TAB;
                 if(p04==(TAB+10))
                  { p08++;
                   p04=TAB;
                   if(p08==(TAB+10))
                  { p05++;
                   p08=TAB;
                    if(p05==(TAB+10))
                    { p06++;
                    p05=TAB;
 if(p06==(TAB+10)&&p05==(TAB+10)) p1=TAB,p2=TAB,p3=TAB,p4=TAB,p5=TAB,p6=TAB;
                    }
                   }
                  }
                 }
                }
              }
             }
            }
           }
          }
         }
       }
     }  
 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -