大家帮我看看这个24c08程序哪里不对

2020-01-24 12:00发布

5v供电,我把所有地址管脚都拉低了,怎么在串口收到的是0x01?
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #include<USART.h>
  4. #define uchar unsigned char
  5. #define uint unsigned int

  6. sbit SCL=P2^1;
  7. sbit SDA=P2^0;
  8. uchar code displaycode[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
  9. uchar code displaybit[]={0xfe,0xfd,0xfb,0xf7};
  10. uchar displaybuf[3];

  11. void delayX2us(uchar x)           //????
  12. {
  13. while(--x);
  14. }

  15. void delayXms(uchar x)         //????
  16. {
  17. uchar i;
  18. while(x--)
  19. {
  20. for(i=250;i>0;i--)
  21. {
  22.    _nop_();
  23.    _nop_();
  24.    _nop_();
  25.    _nop_();
  26. }
  27. }
  28. }

  29. void start ()
  30. {
  31. SDA=1;
  32. delayX2us(2);
  33. SCL=1;
  34. delayX2us(2);
  35. SDA=0;
  36. delayX2us(2);
  37. }

  38. void stop ()
  39. {
  40. SDA=0;
  41. delayX2us(2);
  42. SCL=1;
  43. delayX2us(2);
  44. SDA=1;
  45. delayX2us(2);
  46. }


  47. void init()
  48. {
  49. SCL=1;
  50. delayX2us(2);
  51. SDA=1;
  52. delayX2us(2);
  53. }

  54. void responds()
  55. {
  56. uchar i;
  57. i=0;
  58. SCL=1;
  59. delayX2us(2);
  60. while(SDA==1&&i<200)
  61. i++;
  62. SCL=0;
  63. delayX2us(2);
  64. }

  65. void write_dat (uchar dat)   //?????
  66. {
  67. uchar i;

  68. for(i=0;i<8;i++)
  69. {
  70. SCL=0;
  71. delayX2us(2);
  72. SDA=(bit)(dat&0x80);
  73. delayX2us(2);
  74. SCL=1;
  75. delayX2us(2);
  76. SCL=0;
  77. delayX2us(2);
  78. dat<<=1;
  79. }

  80. SDA=1;
  81. delayX2us(2);

  82. }

  83. void write(uchar dat,uchar add)   // ?????dat???add
  84. {
  85. start();
  86. write_dat(0xa0);
  87. responds();
  88. write_dat(add);
  89. responds();
  90. write_dat(dat);
  91. responds();
  92. stop();
  93. }

  94. uchar read_dat ()    //?????
  95. {
  96. uchar i;
  97. uchar dat;
  98. bit j;
  99. for (i=0;i<8;i++)
  100. {
  101. dat<<=1;
  102. SCL=0;
  103. j=SDA;
  104. delayX2us(2);
  105. SCL=1;
  106. if(j==1)
  107. {
  108.    dat|=0x01;
  109. }
  110. SCL=0;
  111. }
  112. return dat;
  113. }

  114. uchar read (uchar add)   //???add???????
  115. {
  116. uchar dat;

  117. start();
  118. write_dat(0xa0);
  119. responds();
  120. write_dat(add);
  121. responds();
  122. start();
  123. write_dat(0xa1);
  124. responds();
  125. dat=read_dat();
  126. delayX2us(2);
  127. stop();
  128. return dat;
  129. }

  130. void display(uchar dat) //????
  131. {
  132. uchar bai,shi,ge,i;
  133. bai=dat/100;
  134. shi=dat%100/10;
  135. ge=dat%10;
  136. displaybuf[0]=bai;
  137. displaybuf[1]=shi;
  138. displaybuf[2]=ge;

  139. for(i=0;i<3;i++)
  140. {
  141. P0=displaycode[displaybuf[i]];
  142. P1=displaybit[i];
  143. delayX2us(5);
  144. P1=0xff;
  145. }
  146. }


  147. void main ()
  148. {int i=0;
  149. uchar dat,add,k;
  150. dat=212;
  151. add=2;
  152.         USART_Init();
  153. init();
  154. start();
  155. write_dat(0xa0);
  156. delayX2us(2);
  157.         SCL=1;
  158. while(SDA==1&&i<200)
  159. i++;
  160.         SBUF=SDA;
  161.         while(1);
  162. }
复制代码
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
gongxd
1楼-- · 2020-01-24 12:20
看文档吧 通用器件
勤劳的小码农
2楼-- · 2020-01-24 17:50
gongxd 发表于 2014-4-1 09:26
看文档吧 通用器件

没看到哪里不对啊
勤劳的小码农
3楼-- · 2020-01-24 20:53
 精彩回答 2  元偷偷看……

一周热门 更多>