為什么P1的第一個燈不亮,哪兒錯了。
#include<reg52.h> #define uchar unsigned char sbit sda=P2^0; sbit scl=P2^1; uchar a; void delay1(uchar x) { uchar a,b; for(a=x;a>0;a--) for(b=1000;b>0;b--); } void delay() { ; ;} void start() { sda=1; delay(); scl=1; delay(); sda=0; delay(); } void stop() { sda=0; delay(); scl=1; delay(); sda=1; delay(); } void init() { sda=1; delay(); scl=1; delay(); } void respons() { uchar i; scl=1; delay(); while((sda==1)&&(i<250))i++; scl=0; delay(); } void write_byte(uchar date)
{ uchar i,temp; temp=date; for(i=0;i<8;i++) { temp=temp<<1; scl=0; delay(); sda=CY; delay(); scl=1; delay(); } sda=1; delay(); }
uchar read_byte() { uchar i,n,j; scl=0; delay(); sda=1; delay(); for(i=0;i<8;i++) { scl=1; delay(); j=sda; n=(n<<1)|j; scl=0; delay(); } return n; sda=1; delay(); } void main() { init(); start(); write_byte(0xa0); respons(); write_byte(3); respons(); write_byte(0xfe); respons(); stop();
delay1(100);
start(); write_byte(0xa0); respons(); write_byte(3); respons(); start(); write_byte(0xa1); respons(); a=read_byte(); stop(); P1=a; while(1); }
哪兒錯了啊,sda,scl地址沒錯 |