找回密码
 注册

微信扫码登录

使用验证码登录

只需一步,快速开始

胜天工科技销售各种数字电视信号调制卡胜天工科技销售各种数字电视信号码流卡

【游客、新手、注册会员的区别】 【积分策略和会员晋级说明】 【发帖和附件上传规则】 【如何下载感兴趣的资料】 【如何获取梦游币】 【侵权资料处理及免责说明】
查看: 2151|回复: 1

IIC总线程序代码

[复制链接]
  • TA的每日心情
    擦汗
    2012-7-22 22:21
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    发表于 2009-9-16 12:35:00 | 显示全部楼层 |阅读模式
    分享到:
    消息来自- 北京
    1. /*往24C02中写一个数据,然后读出来送到P1口上*/
    2. #include<reg52.h>
    3. #include <intrins.h>
    4. #define uchar unsigned char
    5. sbit sda=P0^1;
    6. sbit scl=P0^0;
    7. uchar a;
    8. void delay()
    9. {
    10. uchar a;
    11. for(a=1;a>0;a--);
    12. }
    13. void start() //开始信号
    14. {
    15. sda=1;
    16. delay();
    17. scl=1;
    18. delay();
    19. sda=0;
    20. delay();
    21. }

    22. void stop()&#160;//停止
    23. {
    24. sda=0;
    25. delay();
    26. scl=1;
    27. delay();
    28. sda=1;
    29. delay();
    30. }

    31. void respons() //应答
    32. {
    33. uchar i;
    34. scl=1;
    35. delay();
    36. while((sda==1)&&(i<250))i++;
    37. scl=0;
    38. delay();
    39. }

    40. void init()
    41. {
    42. sda=1;
    43. delay();
    44. scl=1;
    45. delay();
    46. }

    47. void write_byte(uchar date)
    48. {
    49. uchar i,temp;
    50. temp=date;


    51. for(i=0;i<8;i++)
    52. {
    53. temp=temp<<1;
    54. scl=0;
    55. delay();
    56. sda=CY;
    57. delay();
    58. scl=1;
    59. delay();

    60. }
    61. scl=0;
    62. delay();
    63. sda=1;
    64. delay();
    65. }

    66. uchar read_byte()
    67. {
    68. uchar i,k;
    69. scl=0;
    70. delay();
    71. sda=1;
    72. delay();
    73. for(i=0;i<8;i++)
    74. {
    75. scl=1;
    76. delay();
    77. k=(k<<1)|sda;
    78. scl=0;
    79. delay();
    80. }
    81. return k;
    82. }

    83. void delay1(uchar x)
    84. {
    85. uchar a,b;
    86. for(a=x;a>0;a--)
    87. for(b=100;b>0;b--);
    88. }

    89. void write_add(uchar address,uchar date)
    90. {
    91. start();
    92. write_byte(0xa0);
    93. respons();
    94. write_byte(address);
    95. respons();
    96. write_byte(date);
    97. respons();
    98. stop();
    99. }

    100. uchar read_add(uchar address)
    101. {
    102. uchar date;
    103. start();
    104. write_byte(0xa0);
    105. respons();
    106. write_byte(address);
    107. respons();
    108. start();
    109. write_byte(0xa1);
    110. respons();
    111. date=read_byte();
    112. stop();
    113. return date;
    114. }

    115. void main()
    116. {
    117. init();
    118. write_add(23,0x55);
    119. delay1(100);
    120. P1=read_add(23);
    121. while(1);
    122. }
    复制代码
    踩过的脚印

    该用户从未签到

    发表于 2014-2-22 23:41:09 | 显示全部楼层
    消息来自- 北京
    有意思。。。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|数字电视开发网 ( 京ICP备16008897号-5 )

    GMT+8, 2026-6-2 03:02 , Processed in 0.110430 second(s), 24 queries , Gzip On.

    Powered by Discuz! X3.5

    © 2001-2026 Discuz! Team.

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