打印

请问这样写DAC121S101C的代码对吗?

[复制链接]
1696|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sulang|  楼主 | 2012-5-28 14:27 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>
#include <intrins.h>
#define    NOP    _nop_()
#define    uint    unsigned int
#define    uchar    unsigned char

void delay_50us(uint limit)
{
    uint i;
    for( ; limit > 0; limit-- )
        for( i = 0; i < 4; i++)
        ;
}

/* 定义数据,时钟线 */
sbit SYNC = P1^0;
sbit SCL = P1^1;
sbit SDA = P1^2;



void dac_start(void)
{
    /* 保持至少30ns */
    SYNC = 0;
    NOP;NOP;
    SYNC = 1;
}

void dac_stop( void )
{
    NOP;NOP;
    SYNC = 1;
    SDA = 1;
}

void dac_write( unsigned int dat )
{
    uchar    dat_h, dat_l, i;

    dat_h = dat / 256;
    dat_l = dat % 256;

    /*  发送高位数据  */
    for( i = 0; i < 8; i++ ) {
        SCL = 1;
        dat_h =  dat_h << 1;
        SDA = CY;
        NOP;NOP;
        SCL = 0;  //下降沿
        NOP;NOP;
    }

    /*  发送低位数据  */
    for( i = 0; i < 8; i++ ) {
        SCL = 1;
        dat_l =  dat_l << 1;
        SDA = CY;
        NOP;NOP;
        SCL = 0;  //下降沿
        NOP;NOP;
    }   
}
我是根据下面的时序图写的,可是怎么测试都不行,输出电压都木有反应

这是芯片的手册
DAC121S101CIMK.pdf (474.96 KB)

相关帖子

沙发
sulang|  楼主 | 2012-5-28 14:29 | 只看该作者
我纠结了好些天了。。。。郁闷啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

8

帖子

1

粉丝