?? 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 + -