找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4445|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

IIC總線24C02.H文件下載

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:70976 發(fā)表于 2014-12-25 20:37 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
本帖最后由 daniu 于 2014-12-25 20:51 編輯

24C02.H文件是iic總線存儲器的驅(qū)動 大家可以另存為到硬盤下載到電腦


  1. #ifndef __24C02_H__
  2. #define __24C02_H__

  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. sbit at24c04_scl=P3^2;//時(shí)鐘端口
  6. sbit at24c04_sda=P3^3;//數(shù)據(jù)端口

  7. unsigned char temp_1;//定義全局變量存放暫時(shí)值
  8. unsigned char biao;

  9. void delayic(uchar t)
  10. {
  11. uchar i,j;
  12. for(i=0;i<t;i++)
  13. {
  14.   for(j=0;j<255;j++);
  15. }
  16. }
  17. void delayic_m(uchar t)
  18. {
  19. uchar i;
  20. for(i=0;i<t;i++);
  21. }

  22. void sta(void)//啟動模塊
  23. {
  24. at24c04_sda=1;
  25. at24c04_scl=1;
  26. delayic_m(1);
  27. at24c04_sda=0;
  28. delayic_m(1);
  29. at24c04_scl=0;
  30. }
  31. void stop(void)//停止模塊
  32. {
  33. at24c04_sda=0;
  34. at24c04_scl=1;
  35. delayic_m(1);
  36. at24c04_sda=1;
  37. delayic_m(1);
  38. at24c04_scl=0;
  39. }
  40. uchar cack(void)//應(yīng)答檢測模塊,有應(yīng)答返回值是0
  41. {
  42. uchar i;
  43. i=0;
  44. at24c04_sda=1;
  45. at24c04_scl=1;
  46. if(at24c04_sda==1)i=1;
  47. at24c04_scl=0;
  48. return i;
  49. }
  50. void mnack(void)//發(fā)非應(yīng)答模塊
  51. {
  52. at24c04_sda=1;
  53. at24c04_scl=1;
  54. delayic_m(1);
  55. at24c04_scl=0;
  56. at24c04_sda=0;
  57. }
  58. void wrbyt(uchar date_w24)//寫入一個(gè)字節(jié)
  59. {
  60. uchar i,j;
  61. j=0x80;
  62. for(i=0;i<8;i++)
  63. {
  64.   if((date_w24&j)==0)
  65.   {
  66.    at24c04_sda=0;
  67.    at24c04_scl=1;
  68.    delayic_m(1);
  69.    at24c04_scl=0;
  70.   }
  71.   else
  72.   {
  73.    at24c04_sda=1;
  74.    at24c04_scl=1;
  75.    delayic_m(1);
  76.    at24c04_scl=0;
  77.    at24c04_sda=0;
  78.   }
  79.   j=j>>1;
  80. }
  81. }
  82. uchar rdbyt(void)//讀出一個(gè)字節(jié)
  83. {
  84. uchar i,j;
  85. j=0x00;
  86. for(i=0;i<8;i++)
  87. {
  88.   at24c04_sda=1;
  89.   at24c04_scl=1;
  90.   if(at24c04_sda==0)
  91.   {
  92.    j=j&0xfe;
  93.   }
  94.   else
  95.   {
  96.    j=j|0x01;
  97.   }
  98.   if(i!=7)j=j<<1;
  99.   at24c04_scl=0;
  100. }
  101. return j;
  102. }
  103. void WRITE_IIC(uchar addr_ic,uchar data_ic)//寫入數(shù)據(jù)操作
  104. {
  105. for(biao=0;biao<1;biao++)
  106. {
  107.   sta();//啟動
  108.   wrbyt(0xa0);//寫入,寫指令
  109.   if(cack()!=0)
  110.   break;
  111.   wrbyt(addr_ic);//寫入要寫地址
  112.   if(cack()!=0)
  113.   break;
  114.   wrbyt(data_ic);//寫設(shè)定的值
  115.   if(cack()!=0)
  116.   break;
  117.   stop();
  118.   delayic(20);
  119.   delayic(20);//間隔
  120. }
  121. }
  122. uchar READ_IIC(uchar addr_ic)//讀取數(shù)據(jù)操作
  123. {
  124. uchar mid_ic;//中間變量
  125. for(biao=0;biao<1;biao++)
  126. {
  127.   sta();//啟動
  128.   wrbyt(0xa0);//寫入,寫指令,寫指令是0xa0(片選地址線全部接地)
  129.   if(cack()!=0)//檢測應(yīng)答,正常情況下返回值都是0,忙時(shí)除外
  130.   break;
  131.   wrbyt(addr_ic);//寫入要讀地址
  132.   if(cack()!=0)//檢測應(yīng)答
  133.   break;
  134.   sta();//單字節(jié)讀取需要重新啟動
  135.   wrbyt(0xa1);//寫入,讀命令,讀指令是0xa1(片選地址線全部接地)
  136.   if(cack()!=0)//檢測應(yīng)答
  137.   break;
  138.   mid_ic=rdbyt();//將讀出的數(shù)據(jù)存放在中間變量中
  139.   mnack();//發(fā)非應(yīng)答信號
  140.   stop();//停止IC讀寫
  141.   delayic(20);
  142.   delayic(20);//IC的重新啟動讀寫要間隔較長的時(shí)間
  143. }
  144. return mid_ic;
  145. }

  146. #endif
復(fù)制代碼



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

使用道具 舉報(bào)

沙發(fā)
ID:102826 發(fā)表于 2016-1-17 05:36 | 只看該作者
感覺不錯
回復(fù)

使用道具 舉報(bào)

板凳
ID:97249 發(fā)表于 2016-1-18 15:37 | 只看該作者
本帖最后由 紅塵有你 于 2016-1-18 15:40 編輯

for(biao=0;biao<1;biao++)求這個(gè)biao的含義
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表