搜索
bottom↓
回复: 3

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

[复制链接]

出0入0汤圆

发表于 2014-3-31 23:11:26 | 显示全部楼层 |阅读模式
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. }
复制代码

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

发表于 2014-4-1 09:26:56 来自手机 | 显示全部楼层
看文档吧 通用器件

出0入0汤圆

 楼主| 发表于 2014-4-1 12:38:11 | 显示全部楼层
gongxd 发表于 2014-4-1 09:26
看文档吧 通用器件

没看到哪里不对啊

出0入0汤圆

 楼主| 发表于 2014-4-1 22:33:03 | 显示全部楼层
没人回答,再顶一个
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-3 04:28

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表