5615.c

来自「ATMEGA16与串行DA-TLC5615的通讯程序」· C语言 代码 · 共 33 行

C
33
字号
#include <avr/io.h>
#include <stdint.h>

#define da_cs PB1
//5625使能接口定义,只能接到PORTB

void da_write(uint16_t da_val);
void da_init(void);

void da_init()
{
     PORTB|=(1<<da_cs);
}

void da_write(uint16_t da_val)
{
     uint16_t da_tmp;
     uint8_t da_tmp1;
     da_tmp=da_val<<2;
     da_tmp&=0x0fff;                       //TLC5615十六位通讯格式
                                           //为4位0+10位数据+2位0
     da_tmp1=(uint8_t)((da_tmp&0xff00)>>8);//提取前八位
     SPCR|=(1<<SPE);                       //SPI使能
     PORTB&=(~(1<<da_cs));                 //DA使能
     SPDR=da_tmp1;                         //SPI传送第一字节
     da_tmp1=(uint8_t)(da_tmp&0x00ff);     //提取后八位
     while(!(SPSR&(1<<SPIF)));             //等待传送完成
     SPDR=da_tmp1;                         //SPI传送第二字节
     while(!(SPSR&(1<<SPIF)));
     PORTB|=(1<<da_cs);                    //DA关闭
     SPCR&=(~(1<<SPE));                    //SPI关闭
}
     

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?