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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2464|回復: 0
打印 上一主題 下一主題
收起左側

i2c加24c02仿真和程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:315589 發表于 2018-6-11 19:56 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
i2c加24c02仿真和程序,具體見附件壓縮包,如有錯誤,請指正。


  1. #include "reg51.h"
  2. #include "intrins.h"  //包含有函數_ nop 0的頭文件
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #define out P0

  6. sbit scl=P1^1;
  7. sbit sda=P1^0;
  8. sbit key1=P3^2;
  9. sbit key2=P3^3;

  10. uchar data mem[4]_at_ 0x55;
  11. uchar mem[4] = {0x41,0x42,0x43,0xaa};
  12. uchar data rec_mem[4]_at_ 0x60;

  13. void start(void);
  14. void stop(void);
  15. void sack(void);
  16. bit rack(void);
  17. void ackn(void);
  18. void send_byte(uchar);
  19. uchar rec_byte(void);
  20. void write(void);
  21. void read(void);
  22. void delay4us(void);


  23. void main(void)
  24. {
  25.     EA=1;
  26.     EX0=1;
  27.     EX1=1;
  28.     while(1);
  29. }

  30. void ext0()interrupt 0
  31. {
  32.     write();
  33. }

  34. void ext1()interrupt 2
  35. {
  36.     read();
  37. }

  38. void read(void)
  39. {
  40.     uchar i;
  41.     bit f;
  42.     start();
  43.     send_byte(0xa0);
  44.     f=rack();
  45.     if(!f)
  46.     {
  47.         start();
  48.         send_byte(0xa0);
  49.         f=rack();
  50.         send_byte(0x00);
  51.         f=rack();
  52.         if(!f)
  53.         {
  54.             start();
  55.             send_byte(0xa1);
  56.             f=rack();
  57.             if(!f)
  58.                 {
  59.                 for(i=0;i<3;i++)
  60.                 {
  61.                 rec_mem[i]=rec_byte();
  62.                 sack();
  63.                 }
  64.                 rec_mem[3]=rec_byte();
  65.                 ackn();
  66.                 }
  67.                 }
  68.                 }
  69.                 stop();out=rec_mem[3];while(!key2);
  70.         }

  71. void write(void)
  72. {
  73.     uchar i;
  74.     bit f;
  75.     start();
  76.     send_byte(0xa0);
  77.     f=rack();
  78.     if(!f){
  79.         send_byte(0x00);
  80.         f=rack();
  81.         if(!f){
  82.             for(i=0;i<4;i++)
  83.             {
  84.                 send_byte(mem[i]);
  85.                 f=rack();
  86.                 if(f)break;
  87.             }
  88.         }
  89.     }
  90.     stop();
  91.     out=0xc3;
  92.     while(!key1);
  93. }

  94. void start(void)
  95. {
  96.     scl=1;
  97.     sda=1;
  98.     delay4us();
  99.     sda=0;
  100.     delay4us();
  101.     scl=0;
  102.     }

  103. void stop(void)
  104. {
  105.     scl=0;
  106.     sda=0;
  107.     delay4us();
  108.     scl=1;   
  109.     delay4us();
  110.     sda=1;
  111.     delay4us();
  112.     sda=0;
  113.   }
  114. bit rack(void)
  115. {  //接收一個應答位
  116.     bit flag;
  117.     scl=1;
  118.     delay4us();
  119.     flag=sda;
  120.     scl=0;
  121.     return(flag);
  122.   }

  123. void sack(void)  
  124. {    sda=0;
  125.     delay4us();
  126.     scl=1;
  127.     delay4us();
  128.     scl=0;
  129.     delay4us();
  130.     sda=1;
  131.     delay4us();
  132.     }
  133. void ackn(void)
  134. {     sda=1;
  135.     delay4us();
  136.     scl=1;
  137.     delay4us();
  138.     scl=0;
  139.     delay4us();
  140.     sda=0;
  141.     }
  142. uchar rec_byte(void)
  143. {     uchar i,temp;
  144.     for(i=0;i<8;i++)
  145.     {
  146.         temp<<=1;
  147.         scl=1;
  148.         delay4us();
  149.         temp|=sda;
  150.         scl=0;
  151.         delay4us();
  152.     }
  153. return(temp);
  154. }

  155. void send_byte(uchar temp)
  156. {   uchar i;
  157.     scl=0;
  158.     for(i=0;i<8;i++)
  159.     {
  160.         sda=(bit)(temp&0x80);
  161.         scl=1;
  162.         delay4us();
  163.         scl=0;
  164.         temp<<=1;
  165.     }
  166.         sda=1;
  167. }

  168. void delay4us(void)
  169. {
  170.     _nop_();_nop_(); _nop_(); _nop_();
  171. }
復制代碼



24c02.rar

64.41 KB, 下載次數: 41, 下載積分: 黑幣 -5

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 性欧美hd | 伊人热久久 | 日日爱视频 | 欧美日韩精品影院 | 欧美一级视频在线观看 | 亚洲精品日韩一区二区电影 | 欧美一级二级视频 | 日韩欧美国产成人一区二区 | 成人免费视频网站在线观看 | 日韩欧美一区二区三区免费观看 | 97超碰成人| 在线免费观看a级片 | 久久久久国产一区二区三区不卡 | 日韩在线一区二区三区 | 国产精品爱久久久久久久 | 国产专区视频 | av不卡一区 | 在线激情视频 | 精品国产不卡一区二区三区 | 日韩av一区二区在线观看 | 国产精品视频区 | 国产精品久久久久久久7电影 | 青青草原综合久久大伊人精品 | 91精品国产高清久久久久久久久 | 久久久久av| 国产精品久久久久一区二区三区 | 亚洲精品国产电影 | 三级视频网站 | 久草成人 | www.788.com色淫免费 | 91精品国产综合久久婷婷香蕉 | 国产电影一区二区 | 伊人二区 | 乱码av午夜噜噜噜噜动漫 | 国产精品欧美一区二区三区不卡 | 久久久久久久久久久久久久国产 | 欧美日韩一区二区三区四区 | 美女午夜影院 | 91天堂网 | 天堂国产 | 黄色毛片在线播放 |