下面是我自已写的程序,我想通过PCF8591芯片点亮LED灯(只是点亮,没有明暗变化的),请教一下下面的程序有什么问题吗,一直都调试不到位。- #include<reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit scl=P2^1;
- sbit sda=P2^0;
- void init();
- void star();
- void delay();
- void ack();
- void stop();
- void wr_byte(uchar date);
- void main()
- {
- uchar num;
- init();
- star();
- wr_byte(0x90);
- ack();
- wr_byte(0x40);
- ack();
- wr_byte(0);
- ack();
- stop();
- while(1);
- }
- void star()//起始程序
- {
- scl=1;
- delay();
- sda=1;
- delay();
- sda=0;
- delay();
- }
- void stop()//终止程序
- {
- sda=0;
- delay();
- scl=1;
- delay();
- sda=1;
- delay();
- }
- void delay()//延时程序
- {;;;;;;;;;;}
- void ack()//应答程序
- {
- uchar i;
- sda=1;
- delay();
- scl=1;
- delay();
- while((sda==1)&&(i<200))i++;
- scl=0;
- delay();
- }
-
- void wr_byte(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;
- delay();
- sda=1;//释放总线
- delay();
- }
- void init()
- {
- scl=1;
- sda=1;
- }
|