返回列表 发帖

C语言编写的 24C02程序

  1. #define uchar unsigned char
  2. #define uint unsigned int
  3. #include <reg52.h>
  4. #include <stdio.h>
  5. #include <absacc.h>
  6. sbit scl=P3^5; //24c02 SCL
  7. sbit sda=P3^4; //24c02 SDA
  8. sbit DOG=P1^7; //看门狗
  9. uchar x24c02_read(uchar address); //从24c02的地址address中读取一个字节数据
  10. void x24c02_write(uchar address,uchar info); //向24c02的address地址中写入一字节数据info
  11. void x24c02_init(); //24c02初始化子程序
  12. void delay1(uchar x);
  13. void flash();
  14. void x24c01_init();
  15. void start();
  16. void stop();
  17. void writex(uchar j);
  18. uchar readx();
  19. void clock();
  20. void delay1(uchar x)
  21. {
  22. uint i;
  23. for(i=0;i<x;i++);
  24. DOG=~DOG;
  25. }
  26. void flash()
  27. {
  28. uchar u;
  29. DOG=~DOG;
  30. }
  31. void x24c02_init()
  32. {
  33. scl=1; flash(); sda=1; flash();
  34. }
  35. void start()
  36. {
  37. sda=1; flash(); scl=1; flash(); sda=0; flash(); scl=0; flash();
  38. }
  39. void stop()
  40. {
  41. sda=0; flash(); scl=1; flash(); sda=1; flash();
  42. }
  43. void writex(uchar j)
  44. {
  45. uchar i,temp;
  46. temp=j;
  47. for (i=0;i<8;i++){
  48. temp=temp<<1; scl=0; flash(); sda=CY; flash(); scl=1; flash();
  49. }
  50. scl=0; flash(); sda=1; flash();
  51. }
  52. uchar readx()
  53. {
  54. uchar i,j,k=0;
  55. scl=0; flash(); sda=1;
  56. for (i=0;i<8;i++){
  57. flash(); scl=1; flash();
  58. if (sda==1) j=1;
  59. else j=0;
  60. k=(k<<1)|j; scl=0;
  61. }
  62. flash(); return(k);
  63. }
  64. void clock()
  65. {
  66. uchar i=0;
  67. scl=1; flash();
  68. while ((sda==1)&&(i<255))i++;
  69. scl=0; flash();
  70. }
  71. uchar x24c02_read(uchar address)
  72. {
  73. uchar i;
  74. start(); writex(0xa0);
  75. clock(); writex(address);
  76. clock(); start();
  77. writex(0xa1); clock();
  78. i=readx(); stop();
  79. delay1(10);
  80. return(i);
  81. }
  82. void x24c02_write(uchar address,uchar info)
  83. {
  84. EA=0;
  85. start(); writex(0xa0);
  86. clock(); writex(address);
  87. clock(); writex(info);
  88. clock(); stop();
  89. EA=1;
  90. delay1(50);
  91. }
复制代码
一心一意做事,一心一意做人,做站如做人。关于网站上的事务你可以直接联系我:13320088060。

返回列表

最新关注 关闭


关于论坛注册,最新修改,请网友们注意

由于最近大量垃圾信息出现在我们的论坛,为了营造一个良好的氛围,目前论坛只开发邀请注册,你可以点击以下链接自动邀请注册(如果有人使用了点击下一个试一试) ...


查看
珩源工控论坛热诚欢迎您联系我们进行合作!

Powered by Discuz! 7.2© 2001-2009 Comsenz Inc.

珩源工控论坛 ( 桂ICP备19004328号) |论坛统计|WAP| 客服中心-www.hymcu.com
  

GMT+8, 2024-11-1 12:25, Processed in 1.025411 second(s), 7 queries, Gzip enabled.