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);
}
0条回答

一周热门 更多>