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

標題: 自己用的1T單片機AT24C02庫 支持STC12C5A60S2等芯片 [打印本頁]

作者: sxhwdz    時間: 2018-10-2 20:48
標題: 自己用的1T單片機AT24C02庫 支持STC12C5A60S2等芯片
自己一直使用的I2C庫,可供參考。

單片機源程序如下:
  1. #include <INTRINS.H>

  2. typedef        unsigned char BYTE;
  3. typedef        unsigned int  WORD;


  4. #define slaw    0xa0
  5. #define slar    0xa1

  6. sbit    sclb =  P3^0;
  7. sbit    sdab =  P3^1;
  8. /**************************************
  9. 延時5微秒(STC12C5A60S2@12M)
  10. 不同的工作環境,需要調整此函數
  11. 此延時函數是使用1T的指令周期進行計算,與傳統的12T的MCU不同
  12. **************************************/
  13. void Delay5us()
  14. {
  15.     BYTE n = 4;

  16.     while (n--)
  17.     {
  18.         _nop_();
  19.         _nop_();
  20.     }
  21. }
  22. //-----------------------
  23. // 發出 START 1->0
  24. void IICstart(void)
  25. {
  26.     sdab=1;
  27.     sclb=1; Delay5us();
  28.     sdab=0; Delay5us();
  29.     sclb=0;
  30.     Delay5us();             //延時
  31. }
  32. //-----------------------
  33. // 發出 STOP 0->1
  34. void IICstop(void)
  35. {
  36.     sdab=0;
  37.     sclb=1; Delay5us();
  38.     sdab=1; Delay5us();
  39.     sclb=0;
  40.     Delay5us();             //延時
  41. }
  42. //-----------------------
  43. // 發出 應答位 0
  44. void mack(void)
  45. {
  46.     sdab=0;
  47.     sclb=1; Delay5us();  sclb=0;
  48.     sdab=1;
  49.     Delay5us();             //延時
  50. }
  51. //-----------------------
  52. // 發出 非應答位 1
  53. void mnack(void)
  54. {
  55.     sdab=1;
  56.     sclb=1; Delay5us();  sclb=0;
  57.     sdab=0;
  58.     Delay5us();             //延時
  59. }
  60. //-----------------------
  61. //  向 SDA 寫一個字節
  62. bit wrbyt(BYTE out_b)
  63. {
  64.     BYTE data i;
  65.     bit bdata sack;
  66.    
  67.     ACC=out_b;
  68.     for(i=8;i>0;i--)
  69.     {
  70.         ACC = ACC<<1; sdab=CY;
  71.         sclb=1; Delay5us();  sclb=0;
  72.         Delay5us();         //延時
  73.     }
  74.    
  75.     sdab=1;
  76.     sclb=1;
  77.                 Delay5us();             //延時
  78.     sack=sdab;                                                        //收應答
  79.     sclb=0;
  80.     Delay5us();             //延時
  81.     return sack;                                                //返回應答
  82. }
  83. //-----------------------
  84. // 從 SDA 讀取一個字節
  85. sbit ACC_bit0= ACC^0;
  86. BYTE rdbyt(void)
  87. {
  88.     BYTE data i;
  89.     sdab=1;
  90.     ACC=0;
  91.     for(i=8;i>0;i--)
  92.     {
  93.         ACC=ACC<<1;
  94.         sclb=1; Delay5us();
  95.         ACC_bit0=sdab;
  96.         sclb=0;
  97.         Delay5us();             //延時
  98.     }
  99.     return ACC;
  100. }
  101. //-----------------------
  102. //  發送 numbyt 字節
  103. void wrnbyt(BYTE iic_add, BYTE numbyt, BYTE xdata *data_add)  reentrant
  104. {
  105.     BYTE i;
  106.     for(i=100;i>0;i--)
  107.     {
  108.         IICstart();
  109.         if(!wrbyt(slaw))        // 發送 SLAW 字節
  110.             break;
  111.     }                           // return 0;
  112.     wrbyt(iic_add);             // 發送 地址

  113.     for(  ; numbyt>0; numbyt--)
  114.     {
  115.         wrbyt(*data_add++);     // 發送
  116.     }
  117.     IICstop();
  118. }
  119. //-----------------------
  120. //  讀取 numbyt 字節
  121. void rdnbyt(BYTE iic_add, BYTE numbyt, BYTE idata *data_add)  reentrant
  122. {
  123.     BYTE i;
  124.     for(i=100;i>0;i--)
  125.     {
  126.         IICstart();
  127.         if(!wrbyt(slaw))        // 發送 SLAW 字節
  128.             break;
  129.     }                           // return 0;
  130.     wrbyt(iic_add);             // 發送 地址

  131.     IICstart();
  132.     wrbyt(slar);                // 發送 SLAr 字節
  133.    
  134.     for(; numbyt>0; numbyt--)
  135.     {
  136.         *data_add++=rdbyt();
  137.         if(numbyt>0)
  138.             mack();
  139.     }
  140.     mnack();
  141.     IICstop();
  142. }
復制代碼

所有資料51hei提供下載:
AT24C02.rar (972 Bytes, 下載次數: 37)



作者: 路LGY    時間: 2020-5-17 11:17
想問一下最后兩個函數的參數該怎么寫呢




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 精精国产xxxx视频在线播放 | 成人亚洲 | 亚洲 中文 欧美 日韩 在线观看 | 成人国产在线观看 | 久久久久久国产精品免费免费狐狸 | 亚洲国产伊人 | 日韩免费一区 | 综合伊人 | 亚洲精品一区在线观看 | 性高湖久久久久久久久3小时 | 高清av在线 | 免费看大片bbbb欧美 | 日日淫 | 中文字幕国产视频 | 成人精品鲁一区一区二区 | 国产最新精品视频 | 国产乱码精品一区二区三区av | 亚洲视频在线观看 | 岛国av一区二区三区 | 国产婷婷在线视频 | 久在线| 99精品一区二区 | 国产精品日韩 | 日本免费黄色 | 亚洲日本国产 | 91黄在线观看 | 男人的天堂avav | 亚洲国产精品99久久久久久久久 | 国产精品久久久久久一区二区三区 | 岛国毛片| h在线看| 久久国产精品免费一区二区三区 | 伊人一二三 | 国产目拍亚洲精品99久久精品 | 免费一区 | 国产精品久久久久久久久久久久午夜片 | 欧美黄色大片在线观看 | 在线观看视频福利 | 亚洲视频一区在线观看 | 国产一区二区欧美 | 中文在线一区二区 |