<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        STC12C5A60S2 EEPROM 應用實例及數碼管顯示

        作者:佚名   來源:會員整理上傳   點擊數:  更新時間:2014年05月22日   【字體:

         #include"stc12c5a60s2.h"

        #include"intrins.h"
         
         #define uchar unsigned char
         #define uint unsigned int
         #define ADC_POWER  0x80
         #define ADC_FLAG   0x10
         #define ADC_START  0x08
         #define CMD_IDLE 0     //IAP等待
         #define CMD_READ 1     //讀flash
         #define CMD_PROGRAM  2    //寫入
         #define CMD_ERASE 3    //擦除
         #define IAP_EN 0x83
         #define iap_ADDRESS 0x0000
          void key();
        void SEG();
         
        char code TAB[16]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,
             0x82,0xf8,0x80,0x98,0xa0,
             0x83,0xc6,0xa1,0x86,0x8e};
        #define disp P0   //smg的段控制口
         
         
        sbit WE1=P2^0; //數碼管的位控制口
        sbit WE2=P2^1;
        sbit WE3=P2^2;
        sbit WE4=P2^3;
        sbit s1=P2^4;
        sbit s2=P2^5;
        sbit s3=P2^6;
        sbit s4=P2^7;
        bit bz=0;
         
         
        bit s11=0;
        char temp=5;
         char  td[10]={0,1,2,3,4,5,6,7,8,9};//AD 8通道
         uchar ch=0;
         
        led3=2,led2=0,led1=4,led0=5; //數碼管將要顯示的數字
        void delay(int k)
        {
         int i,j;
         for(i=0;i<184;i++)
         for(j=0;j
         
        }
         
         
        void SEG()
        {  WE1=WE2=WE3=WE4=1;
         disp=TAB[led3]; WE1=0;delay(1); WE1=1;
         disp=TAB[led2]; WE2=0;delay(1); WE2=1;
         disp=TAB[led1]; WE3=0;delay(1); WE3=1;
         disp=TAB[led0]; WE4=0;delay(1); WE4=1; 
        }
         
         void iap_IDLE()
         {
           IAP_CONTR=0;  //禁止IAP讀寫擦除
           IAP_CMD=0;  //等待
           IAP_TRIG=0;  //命令未觸發
           IAP_ADDRH=0x80;  //高位數據地址
           IAP_ADDRL=0;     //低位
         }
         
         uchar iap_READ(uint addr)
         { uchar datas;
         IAP_CONTR=IAP_EN; //控制允許位
         IAP_CMD=CMD_READ;   //寫入讀命令
         IAP_ADDRL=addr;  //自定義地址
         IAP_ADDRH=addr>>8;
         IAP_TRIG=0x5a;  //命令有效
         IAP_TRIG=0xa5;
         _nop_();
         datas=IAP_DATA;
         iap_IDLE();
         return datas;  //返回讀出的數據
         }
         
         void iap_PROGRAM(uint addr,uchar datas)
         {
          IAP_CONTR=IAP_EN;
         IAP_CMD=CMD_PROGRAM;
         IAP_ADDRL=addr;
         IAP_ADDRH=addr>>8;
         IAP_DATA=datas;
         IAP_TRIG=0x5a;
         IAP_TRIG=0xa5;
         _nop_();
         iap_IDLE();
         }
         
         void iap_ERASE(uint addr)
         {
            IAP_CONTR=IAP_EN;
         IAP_CMD=CMD_ERASE;
         IAP_ADDRL=addr;
         IAP_ADDRH=addr>>8;
         IAP_TRIG=0x5a;
         IAP_TRIG=0xa5;
         _nop_();
         iap_IDLE();
         }
         
         
        main()
        {  
         
         
         while(1)
         {
             led0= temp;
          SEG();
             key();
         }
        }
         void key()
        {
            if(s1==0)
          { delay(1);
           if(s1==0)
           {
             if(bz==0)
             {bz=1;s11=!s11;
              if(s11==1)
              temp= iap_READ(iap_ADDRESS);
               else
               {
               iap_ERASE(iap_ADDRESS);
              iap_PROGRAM(iap_ADDRESS, temp);          
               
              temp= iap_READ(iap_ADDRESS); 
                }
             }
           }
           
          }
          else
           if(s2==0) 
         {
         delay(1);
          if(s2==0)
          { if(bz==0)
          { bz=1;
         
          
          temp++;
          if(temp==10)
          temp=0; 
           
          
          } 
          }
          }
         
          else bz=0;
        }
           
        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮