📄 tlc5618.c
字号:
#include "C:\Cygnal\IDEfiles\C51\Inc\c8051F020.h"
#define NUM 50
sbit CS=P2^1;
void spi0_init(void);
void sysclock_init(void);
void port_init(void);
void delay(unsigned long time);
void write_word(unsigned int word);
main()
{
EA=0;
WDTCN=0x0de;
WDTCN=0x0ad;
EA=1;
port_init();
sysclock_init();
spi0_init();
while(1)
{
write_word(0x1200); //仅写double buffer,存储新的DAC B的数据 0x200;
write_word(0x8100); //写数据到latch A,0x100同时把double buffer的数据写到latch B中
}
}
void write_word(unsigned int word)
{
CS=0;
delay(NUM);
SPI0DAT=word>>8;
while(!SPIF);
SPIF=0;
SPI0DAT=word;
while(!SPIF);
SPIF=0;
CS=1;
delay(NUM);
}
void spi0_init(void)
{
SPI0CFG=0x47; //CKPHA=0,CKPOL=1
SPI0CN =0x03; //3线方式
SPI0CKR=0x92; //50khz
EIE1=0; //不允许SPI0中断
}
void sysclock_init(void)
{
OSCXCN=0x67; //晶体振荡器方式1分频,fsysclock=14.7456mhz;
delay(300); //延时1ms
while(!(OSCXCN&0x80)); //检查XTLVLD=1?
OSCICN=0x08; //切换到外部振荡器
}
void port_init(void)
{
XBR0=0x06; //UATR,SPI0
XBR1=0;
XBR2=0xc0; //弱上拉禁止
P0MDOUT=0x15;
P2MDOUT=0xcf;
}
void delay(unsigned long time)
{
while(time--);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -