51单片机+pcf8591模块 简单的数模转换,硬件没问题,程序没报错,可就是模块上aout处的灯一直不亮是为什么?
2019-07-15 08:08发布
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
51单片机+pcf8591模块 简单的数模转换,硬件没问题,程序没报错,可就是模块上aout处的灯一直不亮,谁来指导一下吗?真心求教
以下为代码:
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define delay_5t {_nop_();_nop_();_nop_();_nop_();_nop_();}
sbit SCL = P2^0 ;
sbit SDA = P2^1 ;
void IIC_start(void);
void IIC_stop(void);
bit ask_check(void);
bit sent_byte(uchar DAT);
void DAC_out(uchar DAT);
void IIC_start()
{
SDA=1;
SCL=1;
delay_5t;
SDA=0;
delay_5t;
}
void IIC_stop()
{
SDA=0;
SCL=1;
delay_5t;
SDA=1;
delay_5t;
}
bit sent_byte(uchar DAT)
{
uchar i;
uchar temp;
bit ask;
temp = DAT ;
for(i=0;i<8;i++)
{
SCL=0;
if(temp&0x80==0x80)
SDA=1;
else
SDA=0;
delay_5t;
SCL=1;
temp = temp << 1;
delay_5t;
}
SCL=0;
ask = ask_check();
return ask;
}
bit ask_check()
{
bit ask_bit;
SDA=1;
delay_5t;
SCL=1;
ask_bit = SDA;
SCL=0;
return ask_bit;
}
void DAC_out(uchar DAT)
{
IIC_start();
if(sent_byte(0x90) == 1)
{
IIC_stop();
return;
}
sent_byte(0x40);
sent_byte(DAT);
IIC_stop();
}
void main()
{
DAC_out(0xff);
while(1);
}
一周热门 更多>