求证ATmega16与TLC5618的D/A数模转换哪里不对

2019-03-24 20:13发布

#include <iom16v.h>
#include <macros.h>   
#define uint unsigned int
#define uchar unsigned char
#define   SPIF   7
#define   ss     4    //PB4
#define   mosi   5   //PB5
#define   sck    7   //PB7
void spi_init()  //初始化
{
    DDRB=0xFF;   //端口设置?不懂为啥这样设
    PORTB=0x00;  //这是PB全为高电位输出:即SCK,MOSI为高电位初始化
    SPSR=0x00;  //状态寄存器全0,这是为啥
        SPCR=0x50;   //主机模式 方式1 ocs/16   SPI控制寄存器设置01010101,一般情况需要改动吗?
}
void  DAC_TLV5618(uint temp)
{
        PORTB&=~(1<<ss);
        SPDR=(uchar)( temp&&0xff00)>>8;
        while(!SPSR&(1<<SPIF));
        SPSR=(uchar)( temp&&0x00ff);
        while(!SPSR&(1<<SPIF));
        //PORTB|= (1<<ss);
}
void main()
{
        //delay_ms(500);
        spi_init();
        DAC_TLV5618(0x4800);
        while(1);
}


此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。