背景图片
合泰单片机24C02驱动程序 - 啊和的博客

合泰单片机24C02驱动程序 - 啊和的博客 合泰单片机24C02驱动程序 - 啊和的博客

合泰单片机24C02驱动程序

项目中用到的,实测OK

C文件

  1. #include "eeprom.h"
  2. // 豪秒延时标准程序
  3.  
  4.  
  5. static void Delay(unsigned char time)
  6. {
  7. volatile unsigned char a, b;
  8. for (b = time; b>0; b--) {
  9. for (a = 15; a>0; a--)
  10. {
  11. GCC_CLRWDT();
  12. }
  13. }
  14. }
  15.  
  16.  
  17.  
  18. void IIC_Init()
  19. {
  20. OUT_SDA();
  21. OUT_SCL();
  22. SET_SDA();
  23. SET_SCL();
  24. SDA_PUL();
  25. SCL_PUL();
  26. }
  27. static void Start()
  28. {
  29. SET_SDA();
  30. OUT_SDA();
  31. SET_SCL();
  32. Delay(1);
  33. CLR_SDA();
  34. Delay(1);
  35. CLR_SCL();
  36. Delay(1);
  37. }
  38.  
  39.  
  40. static void Stop()//
  41. {
  42. CLR_SCL();
  43. OUT_SDA();
  44. CLR_SDA();
  45. Delay(1);
  46. SET_SCL();
  47. Delay(1);
  48. SET_SDA();
  49. }
  50.  
  51.  
  52. static unsigned char ReceiveByte()//
  53. {
  54. unsigned char i;
  55. unsigned char buffer;
  56. buffer = 0;
  57. IN_SDA();
  58.  
  59. for (i = 0; i < 8; i++) {
  60. CLR_SCL();
  61. Delay(2);
  62. SET_SCL();
  63. Delay(2);
  64. if (SDA()) {
  65. buffer |= 0x01;
  66. }
  67. if (i < 7) {
  68. buffer <<= 1;
  69. }
  70. }
  71.  
  72. CLR_SCL();
  73. OUT_SDA();
  74. CLR_SDA();
  75.  
  76. return (buffer);
  77. }
  78.  
  79.  
  80. static unsigned char SendByteAndGetNACK(unsigned char dataToSend) //发送数据 没有ACK
  81. {
  82. unsigned char i;
  83. unsigned char ack;
  84.  
  85. for (i = 0; i < 8; i++) {
  86. CLR_SCL();
  87. Delay(1);
  88. if (dataToSend & 0x80) {
  89. SET_SDA();
  90. }
  91. else {
  92. CLR_SDA();
  93. }
  94. Delay(1);
  95. SET_SCL();
  96. Delay(1);
  97.  
  98. dataToSend <<= 1;
  99. }
  100.  
  101. CLR_SCL();
  102. Delay(1);
  103.  
  104. IN_SDA();
  105. Delay(1);
  106. SET_SCL();
  107. Delay(2);
  108.  
  109. ack = SDA();
  110.  
  111. CLR_SCL();
  112. Delay(1);
  113. OUT_SDA();
  114. CLR_SDA();
  115. Delay(1);
  116.  
  117.  
  118. return (ack);
  119. }
  120.  
  121.  
  122. void Respond(unsigned char ACKSignal) //
  123. {
  124. OUT_SDA();
  125. CLR_SDA();
  126. CLR_SCL();
  127. if (ACKSignal) {
  128. SET_SDA();
  129. }
  130. else {
  131. CLR_SDA();
  132. }
  133. Delay(1);
  134. SET_SCL();
  135. Delay(1);
  136. CLR_SCL();
  137. }
  138. /**********************************************************************************
  139. EEPROM写
  140. ***********************************************************************************/
  141. void Eeprom_Write(unsigned char Addr,unsigned char dat)
  142. {
  143.  
  144. Start();
  145. SendByteAndGetNACK(0xA0); //写地址
  146. SendByteAndGetNACK(Addr);
  147. SendByteAndGetNACK(dat);
  148. Stop();
  149. Delay(250);
  150.  
  151.  
  152. }
  153.  
  154. /**********************************************************************************
  155. EEPROM读
  156. ***********************************************************************************/
  157.  
  158. unsigned char Eeprom_Read(unsigned char Addr)
  159. {
  160.  
  161. unsigned char dat;
  162. Start();
  163.  
  164. SendByteAndGetNACK(0xA0); //发送设备地址
  165. SendByteAndGetNACK(Addr);
  166. Start(); //再发送一次开始信号
  167.  
  168. SendByteAndGetNACK(0xA1);//发送读设备地址
  169. dat= ReceiveByte();//读取数据
  170.  
  171.  
  172.  
  173. Respond(NACK);
  174. Stop();
  175.  
  176. return dat;
  177.  
  178. }


H文件

  1. #define NACK 1
  2. #define ACK 0
  3.  
  4. #define SET_SDA() _pa1=1
  5. #define CLR_SDA() _pa1=0
  6. #define OUT_SDA() _pac1=0
  7. #define IN_SDA() _pac1=1
  8. #define SDA() _pa1
  9. #define SDA_PUL() _papu1=1
  10.  
  11. #define SET_SCL() _pa3=1
  12. #define CLR_SCL() _pa3=0
  13. #define OUT_SCL() _pac3=0
  14. #define IN_SCL() _pac3=1
  15. #define SCL_PUL() _papu3=1
  16.  
  17. extern void Eeprom_Write(unsigned char Addr,unsigned char dat);
  18. extern unsigned char Eeprom_Read(unsigned char Addr);


评论 1

挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论
啊和
啊和 2019-08-16 16:19 回复
123
 手机发表此评论