I2C的问题,新手,帮帮忙!
时间:10-02
整理:3721RD
点击:
下面是本人的完整代码,新手测试IIC通讯。正常 工作应该是 第一个LED点亮,,求大神解答
- #include<reg52.h>
- #define uchar unsigned char
- sbit sda=P2^0;
- sbit scl=P2^1;
- void init();
- void res();
- void delay();
- void write(uchar date);//问题1:这里的date改成data就编译不了了,为什么?
- uchar rd();
- void start();
- void delay1(uchar x);
- void stop();
- void x(uchar m);
- void main()
- {
- while(1) //问题2:不套while(1)循环 蜂鸣器会响 为什么
- x(0xfe);
-
-
- }
- void x(uchar m)
- {
- init();
- start();
- write(0xa0);
- res();
- write(1);
- res();
- write(m);
- res();
- stop();
- delay1(100); //问题3:这延时100毫秒有什么用啊,去掉后不能正常工作。
- start();
- write(0xa0);
- res();
- write(1);
- res();
- start();
- write(0xa1);
- res();
- P1=rd();
- stop();
- }
- void delay1(uchar x)
- {
- uchar a,b;
- for(a=x;a>0;a--)
- for(b=100;b>0;b--);
- }
- void init()
- {
- scl=1;
- sda=1;
- delay();
- }
- void res()
- {
- uchar i=0;
- scl=1;
- delay();
- while((sda==1)&&(i<250))i++;
- scl=0;
- }
- void delay()
- {;;}
- void write(uchar date)
- {
- uchar i,temp;
- temp=date;
- for(i=0;i<8;i++)
- {
- scl=0;
- delay();
- temp=temp<<1;
- sda=CY;
- delay();
- scl=1;
- delay();
- scl=0;
- }
- }
- uchar rd()
- {
- uchar i,k=0x00;
- scl=0;
- for(i=0;i<8;i++)
- {
- scl=1;
- delay();
- k=((k<<1)|sda);
- scl=0;
- delay();
- }
- return k;
-
- }
- void start()
- {
- sda=1;
- scl=1;
- delay();
- sda=0;
- delay();
-
- }
- void stop()
- {
- sda=0;
- scl=1;
- delay();
- sda=1;
- delay();
-
- }
找到问题所在了
