久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 用24C02芯片實現單片機開機次數記憶 源程序 [打印本頁]

作者: 啊菠蘿    時間: 2017-4-17 09:36
標題: 用24C02芯片實現單片機開機次數記憶 源程序
  1. //開機次數記憶
  2. #include<reg52.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. bit  write=0;           //寫24C02的標志;
  6. sbit sda=P2^0;                        
  7. sbit scl=P2^1;
  8. sbit dula=P2^6;
  9. sbit wela=P2^7;
  10. sbit RST=P2^5;   //時鐘
  11. sbit CS_DA =P2^4 ;  //HJ-1G DAC
  12. sbit JD=P0^6;
  13. sbit FM=P2^3;


  14. uchar sec,tcnt;
  15. uchar code table[]={
  16. 0x3f,0x06,0x5b,0x4f,
  17. 0x66,0x6d,0x7d,0x07,
  18. 0x7f,0x6f,0x77,0x7c,
  19. 0x39,0x5e,0x79,0x71};
  20. void ioin()  //IO口繼電器、數碼管鎖存函數
  21.    {         
  22.           wela=1;
  23.      P0 = 1;  
  24.           JD = 0;   
  25.      wela=0;
  26.           dula=1;
  27.           P0=0;
  28.           dula=0;
  29.     }
  30. void delay()
  31. { ;; }
  32. void delay1ms(uint z)
  33. {
  34.         uint x,y;
  35.         for(x=z;x>0;x--)
  36.                 for(y=110;y>0;y--);
  37. }
  38. void start()  //開始信號
  39. {        
  40.         sda=1;
  41.         delay();
  42.         scl=1;
  43.         delay();
  44.         sda=0;
  45.         delay();
  46. }
  47. void stop()   //停止
  48. {
  49.         sda=0;
  50.         delay();
  51.         scl=1;
  52.         delay();
  53.         sda=1;
  54.         delay();
  55. }
  56. void respons()  //應答
  57. {
  58.         uchar i;
  59.         scl=1;
  60.         delay();
  61.         while((sda==1)&&(i<250))i++;
  62.         scl=0;
  63.         delay();
  64. }
  65. void init()
  66. {
  67.    RST=0; //總線時鐘低電評
  68.    CS_DA =0 ;
  69.         sda=1;
  70.         delay();
  71.         scl=1;
  72.         delay();
  73. }
  74. void write_byte(uchar date)
  75. {
  76.         uchar i,temp;
  77.         temp=date;
  78.         for(i=0;i<8;i++)
  79.         {
  80.                 temp=temp<<1;
  81.                 scl=0;
  82.             delay();
  83.                 sda=CY;
  84.                 delay();
  85.                 scl=1;
  86.                 delay();
  87.         }
  88.         scl=0;
  89.         delay();
  90.         sda=1;
  91.         delay();
  92. }
  93. uchar read_byte()
  94. {
  95.         uchar i,k;
  96.         scl=0;
  97.         delay();
  98.         sda=1;
  99.         delay();
  100.         for(i=0;i<8;i++)
  101.         {
  102.                 scl=1;
  103.                 delay();        
  104.                 k=(k<<1)|sda;
  105.                 scl=0;
  106.                 delay();        
  107.         }
  108.         return k;
  109. }
  110. void write_add(uchar address,uchar date)
  111. {
  112.         start();
  113.         write_byte(0xa0);
  114.         respons();
  115.         write_byte(address);
  116.         respons();
  117.         write_byte(date);
  118.         respons();
  119.         stop();
  120. }
  121. uchar read_add(uchar address)
  122. {
  123.         uchar date;
  124.         start();
  125.         write_byte(0xa0);
  126.         respons();
  127.         write_byte(address);
  128.         respons();
  129.         start();
  130.         write_byte(0xa1);
  131.         respons();
  132.         date=read_byte();
  133.         stop();
  134.         return date;
  135. }
  136. void display(uchar bai_c,uchar sh_c)        //顯示程序
  137. {
  138.    dula=0;
  139.    P0=table[bai_c];                //顯示第一位
  140.    dula=1;
  141.    dula=0;
  142.    wela=0;
  143.    P0=0x7e;
  144.    wela=1;
  145.    wela=0;
  146.    delay1ms(5);
  147.    dula=0;
  148.    P0=table[sh_c];                //顯示第二位
  149.    dula=1;
  150.    dula=0;
  151.    wela=0;
  152.    P0=0x7d;
  153.    wela=1;
  154.    wela=0;
  155.    delay1ms(5);
  156. }
  157. void main()
  158. {
  159.    ioin();
  160.         init();
  161.         sec=read_add(2);    //讀出保存的數據賦于sec
  162.         if(sec>100)        //防止首次讀取出錯誤數據
  163.                 sec=0;
  164.         TMOD=0x01;                          //定時器工作在方式1
  165.         ET0=1;
  166.         EA=1;
  167.         TH0=(65536-50000)/256; //對TH0 TL0賦值
  168.         TL0=(65536-50000)%256; //使定時器0.05秒中斷一次
  169.         TR0=1;                 //開始計時
  170.         while(1)
  171.         {
  172.                 display(sec/10,sec%10);
  173.                 if(write==1)                       //判斷計時器是否計時一秒
  174.                 {
  175.                         write=0;              //清零
  176.                         write_add(2,sec);            //在24c02的地址2中寫入數據sec
  177.                 }
  178.         }
  179. }
  180. void t0() interrupt 1 //定時中斷服務函數
  181. {
  182.         TH0=(65536-50000)/256; //對TH0 TL0賦值
  183.         TL0=(65536-50000)%256; //重裝計數初值
  184.         tcnt++;        //每過50ms tcnt加一
  185.         if(tcnt==20)  //計滿20次(1秒)時
  186.         {
  187.             tcnt=0;   //重新再計
  188.             sec++;
  189.             write=1;  //1秒寫一次24C02
  190.             if(sec==100) //定時100秒,再從零開始計時
  191.                     sec=0;
  192.         }
  193. }



復制代碼





歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 久久亚洲天堂 | 噜久寡妇噜噜久久寡妇 | 亚洲精品 在线播放 | 国产成人av在线 | 国产ts一区| 成人亚洲性情网站www在线观看 | 91久久久久 | 中文日本在线 | 午夜伦4480yy私人影院 | 亚洲欧美日韩一区二区 | 人人性人人性碰国产 | 中文字幕日本一区二区 | www国产精| 亚洲成人激情在线观看 | av一级一片| 国产精品视频一二三区 | 一区二区三区av | 殴美成人在线视频 | 久久久精品一区 | 91亚洲国产成人久久精品网站 | 久视频在线观看 | 午夜精品久久久久久久久久久久久 | 久久久999国产精品 中文字幕在线精品 | 亚洲精品中文字幕av | 免费v片在线观看 | 久久亚洲春色中文字幕久久久 | 日韩成人一区 | 成年人黄色一级片 | 国产资源在线观看 | 亚洲高清免费观看 | 久久九九色 | 视频一区二区在线观看 | 成人在线电影网站 | 日韩一区二区av | 午夜久久久久 | 精品亚洲一区二区三区四区五区 | 国产精品久久久久久久久久了 | 日本在线综合 | 日本不卡一区二区三区 | 在线欧美亚洲 | 国产精品99久久久久久www |