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

📄 time_4k_413.c

📁 MSP430开发板413演示程序 MSP430开发板413演示程序
💻 C
字号:
//
//    4 键 时钟程序
//    左边第一键 调整分钟 加一调整
//    左边第二键 调整时钟 加一调整
//    右边第一键 开启蜂鸣器
//    右边第二键 点亮发光二极管
//
//
//
//	www.mcu-china.com
//      www.mcu430.com  
//
#include <msp430x41x.h>
# define  uint unsigned int
# define  uchar unsigned char

    unsigned int tmp;
    unsigned int ff=10;

uchar time_buffer[3]={17,27,0};

uchar disp_buffer[6]={0};



# define  a 0x10
# define  b 0x20
# define  c 0x40
# define  d 0x80
# define  e 0x1
# define  f 0x2
# define  g 0x4
# define  h 0x8

/////////////////////////////////
//  91 lcd
/////////////////////////////////
const char distab[]={
    0xd7,0x06,0xe3,0xa7,
    0x36,0xb5,0xf5,0x07,
    0xf7,0xb7,
        };



void delay(int x)   // 5*x+12  nop
      {             //128- 23    256-49
      while(x--);   
      }             //192- 36    280- 54   448- 87
      


/////////////////////////////////////
//    枪声为点射  带尾巴
/////////////////////////////////////
void gun(void)
{
      for(ff=40;ff<200;ff++)
        {
        P6OUT ^= BIT7;              // 对输出置反
        for(tmp=0;tmp<ff;tmp++);    // 延时
        }
}
/////////////////////////////////////
//    拖尾声音严重
/////////////////////////////////////
void s1(void)
{
      for(ff=30;ff<500;ff++)
        {
        P6OUT ^= BIT7;              // 对输出置反
        for(tmp=0;tmp<ff;tmp++);    // 延时
        }
}


/////////////////////////////////////
//    声音清脆
/////////////////////////////////////
void s2(void)
{
      for(ff=30;ff<80;ff++)
        {
        P6OUT ^= BIT7;              // 对输出置反
        for(tmp=0;tmp<ff;tmp++);    // 延时
        }
}

void sp(void)
    {
      gun();
      gun();
      gun();
      gun();
      s2();
      s2();
      s2();
      s2();
      s2();
      s2();
      s2();
    }
    
void clrlcd(void)
     {
     uchar i=0;
     for(i=0;i<20;i++)
        LCDMEM[i]=0;
     }


void main(void)
{ 
  char i;
  WDTCTL = WDTPW + WDTHOLD;             // Stop WDT
  LCDCTL = 0XFD;
  BTCTL =  BTFRFQ1;                      // STK LCD freq 
  P5SEL =  0xFC;                         // Common and Rxx all selected
  FLL_CTL0 |= XCAP14PF;                 // Configure load caps

  BTCTL = BTFRFQ1+BT_ADLY_1000;  ;           // ACLK/(256*16)
  IE2 |= BTIE;                              // Enable BT interrupt
  for(i=0;i<20;i++)
      LCDMEM[i] = 0 ;
    P2DIR=0xff;
    P2OUT=0X00;
    P3DIR=0xff;
    P3OUT=0X00;
    P4DIR=0xff;
    P4OUT=0X00;
    P5DIR=0xff;
    P5OUT=0X00;
    P6DIR=0xff;
    P6OUT=0X80;

    P1DIR = 0xc3;
    P1OUT=0X0;
    P1IE=0X3c;
    P1IES=0;
    P1IFG=0;
    clrlcd();
    _EINT();
      LCDMEM[11] = 1 ;
  for(;;)                              
  {
    _BIS_SR(LPM3_bits);                    // CPU off
    _NOP();                             // Required only for C-spy
  }
}

// Timer A0 interrupt service routine
//interrupt[TIMERA0_VECTOR] void Timer_A (void)
#pragma vector=BASICTIMER_VECTOR
__interrupt void basic_timer_ISR(void)
{
  {
    uchar i=0;
    P6OUT = 0X80 ;
    time_buffer[2]++;
    if(time_buffer[2]==60)
       {
       time_buffer[2]=0;
       time_buffer[1]++;
       if(time_buffer[1]==60)
            {
            time_buffer[1]=0;
            time_buffer[0]++;
            if(time_buffer[0]==24)
                 time_buffer[0]=0;            
            }       
       }
      disp_buffer[0]=distab[time_buffer[2]%10];
      disp_buffer[1]=distab[time_buffer[2]/10];
      disp_buffer[2]=distab[time_buffer[1]%10];
      disp_buffer[3]=distab[time_buffer[1]/10];
      disp_buffer[4]=distab[time_buffer[0]%10];
      disp_buffer[5]=distab[time_buffer[0]/10];
      
      for(i=0;i<11;i++)
        LCDMEM[i]=0;
      for(i=0;i<6;i++)
        LCDMEM[i+1]=disp_buffer[i];
      LCDMEM[11] = LCDMEM[11] << 1 ;
      if(LCDMEM[11] == 0 )
          LCDMEM[11] =1 ;
      LCDMEM[3] = LCDMEM[3] + 0X08 ;
      LCDMEM[5] = LCDMEM[5] + 0X08 ;
  }
}

#pragma vector=PORT1_VECTOR
__interrupt void key1(void)
    {
        char i ;
        if((P1IFG&BIT2)==BIT2)
            {
                for(i=0;i<10;i++)
                    sp();
                P6OUT &= ~BIT7 ;
            }
        else if((P1IFG&BIT3)==BIT3)
            {
                P6OUT |= 0X7F;
            }
        else if((P1IFG&BIT4)==BIT4)
            {
                time_buffer[0]++;
                if(time_buffer[0] >=24)
                    time_buffer[0] = 0 ;
            }
        else if((P1IFG&BIT5)==BIT5)
            {
                time_buffer[1]++;
                if(time_buffer[1] >=60)
                    time_buffer[1] = 0 ;
            }
      disp_buffer[0]=distab[time_buffer[2]%10];
      disp_buffer[1]=distab[time_buffer[2]/10];
      disp_buffer[2]=distab[time_buffer[1]%10];
      disp_buffer[3]=distab[time_buffer[1]/10];
      disp_buffer[4]=distab[time_buffer[0]%10];
      disp_buffer[5]=distab[time_buffer[0]/10];
      
      for(i=0;i<11;i++)
        LCDMEM[i]=0;
      for(i=0;i<6;i++)
        LCDMEM[i+1]=disp_buffer[i];
      LCDMEM[3] = LCDMEM[3] + 0X08 ;
      LCDMEM[5] = LCDMEM[5] + 0X08 ;
        P1IFG = 0 ;
    }

⌨️ 快捷键说明

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