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

📄 main.c

📁 采用430F149设计的电表 对计量芯片发出的脉冲进行计数并通过数码管显示出来
💻 C
字号:

#include  <msp430x14x.h>
#include  "BoardConfig.h"

#define keyin    (P1IN & 0x0f)


uchar dian[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
                      
uchar ge[16] = {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
                      
uchar shi[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
                      
uchar bai[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
                     
uchar qian[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
                     
uchar wan[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
                      
uchar wei[6] = {0x1f,0x2f,0x37,0x3b,0x3d,0x3e};
uchar d = 0;
uchar g = 0;
uchar s = 0;
uchar b = 0;
uchar q = 0;
uchar w = 0;
uchar x = 0;


uchar temp,keyval = 0;

   
/********************主函数********************/
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;    
    BoardConfig(0x88); 
   
   P1DIR |= 0x0c;              //设置相应端口为输出状态
   uchar wbuffer[] = {d,g,s,b,q,w};
    uchar rbuffer[6];
  //  uchar flag = 0;
    delay1();
     
     if(Write_1Byte(0x11,0x00))  
     //   flag = 1;
   
    
     if(Read_NByte_Randomaddress(rbuffer,6,0x08))//从第1页的第0个字节起连续读6个数据
       d=rbuffer[0];
       g=rbuffer[1];
       s=rbuffer[2];
       b=rbuffer[3];
       q=rbuffer[4];
       w=rbuffer[5];
      // flag = 4;
       
    kaishi();  
}
  kaishi()
   { 
     
     
    P1DIR = BIT7;               //设置P1.0~P.3为输入状态,P.7为输出
    P1OUT = 0;
    P3DIR |= BIT4;              //设置P3.4为输出状态
    P3OUT |= BIT4;              //P3.4输出1
    P3DIR |= BIT4;              //设置P3.4为输出状态
    P3OUT |= BIT4; 
    P4DIR = 0xff;               
    P5DIR = 0xff;  
    while(1)
     {
    
        jishu();
        if(keyin != 0x0f)//如果有键被按下
        //delay1();
        if(keyin != 0x0f)//如果有键被按下
        maic() ;  
      }       
       
     
   }               
 maic()
   {
         
        
     while(1)
     {              
         jishu();                 
         if(keyin == 0x0f)  //等待按键被放开                           
         jia();             
      } 
           
    }  

delay2()     //延时
{
    uint tmp;   
    for(tmp = 300;tmp > 0;tmp--);  
}
delay1()   //延时
{
    uint tmp;   
    for(tmp = 800;tmp > 0;tmp--);   
}   
 jishu()
 {             
                   P5OUT = wei[0];
                   P4OUT = dian[d]; 
                   delay2();
                   P5OUT = wei[1];
                   P4OUT = ge[g];  
                   delay2();
                   P5OUT = wei[2];
                   P4OUT = shi[s];  
                   delay2();
                   P5OUT = wei[3];
                   P4OUT = bai[b];  
                   delay2();
                   P5OUT = wei[4];
                   P4OUT = qian[q];  
                   delay2();
                   P5OUT = wei[5];
                   P4OUT = wan[w];  
                   delay2();
                 
 }
jia()
   {
     d++;     
     if(d==10) d=0,g++; 
     if(g==10) g=0,s++;
     if(s==10) s=0,b++;
     if(b==10) b=0,q++;
     if(q==10) q=0,w++;
     P3OUT &= ~BIT4;           //P3.4连接的LED闪烁一下
     delay2();
     P3OUT |= BIT4; 
     P1DIR |= 0x0c;              //设置相应端口为输出状态
     jishu();
    uchar wbuffer[] = {d,g,s,b,q,w};
    uchar rbuffer[6];
    //uchar flag = 0;
    if(Write_1Byte(0x11,0x00))  
       jishu();// flag = 1;
     if(Write_NByte(wbuffer,6,0x08)) //从第1页的第0个字节起连续写6个数据
       jishu();// flag = 3;
     kaishi();                                         
    }

⌨️ 快捷键说明

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