?? 1.c
字號:
//=====================================================================
//TLV5618驅動及簡單測試例子(三角波產(chǎn)生程序,波形頂部不大好)
//IOB15-->DIN
//IOB14-->SCLK
//IOB13-->CS
//DATA15--DATA12分別為:R1.SPD.PWR.R0
//R1R0:00 Write data to DAC B and BUFFER
// 01 Write data to BUFFER
// 10 Write data to DAC A and update DAC B with BUFFER content
// 11 Reserved
//SPD: Speed control bit 1 fast mode 0 slow mode
//PWR: Power control bit 1 power down 0 normal operation
//On power up, SPD and PWD are reset to 0 (slow mode and normal operation)
//參考電壓應小于VDD-3.3伏
//輸出模擬電壓為:V=2*Vref*(dignum/0x1000) 注:dignum后四位為:0x0000~~0x0fff
//
//注:所需輸入的數(shù)字信號值為16位數(shù),其中D15~~D12為特殊位設置,如上面說明
// D11~~D0為數(shù)據(jù)位000~~fff
//
//***********done by:murufy 2007.8.8于EDA實驗室***********************
//=====================================================================
#define P_Watchdog_Clear (volatile unsigned int *)0x7012
#define P_IOA_Data (volatile unsigned int *)0x7000
#define P_IOA_Buffer (volatile unsigned int *)0x7001
#define P_IOA_Dir (volatile unsigned int *)0x7002
#define P_IOA_Attrib (volatile unsigned int *)0x7003
#define P_IOA_Latch (volatile unsigned int *)0x7004
#define P_IOB_Data (volatile unsigned int *)0x7005
#define P_IOB_Buffer (volatile unsigned int *)0x7006
#define P_IOB_Dir (volatile unsigned int *)0x7007
#define P_IOB_Attrib (volatile unsigned int *)0x7008
//若修改端口可更改此處
#define P_IO_Data *P_IOB_Data
#define P_IO_Buffer *P_IOB_Buffer
#define P_IO_Dir *P_IOB_Dir
#define P_IO_Attrib *P_IOB_Attrib
//
#define DIN 0x8000
#define SCLK 0x4000
#define CS 0x2000
//==================================================================
//
//初始化,將三個引腳全設成輸出
//
//==================================================================
void DA_init()
{
P_IO_Dir=DIN+SCLK+CS;
P_IO_Attrib=DIN+SCLK+CS;//同相輸出
}
//===================================================================
//
//DA_conver()
//Dignum:根據(jù)說明設置轉化數(shù)據(jù).頭四位為特殊位用于選擇轉化方式,以及用于
// 通道選擇.請自行設置.
//===================================================================
void DA_conver(unsigned int Dignum)
{
unsigned int i;
unsigned int Dig;
P_IO_Buffer|=SCLK;//sclk=1
P_IO_Buffer&=(~CS);//cs=0;
for(i=0;i<=15;i++)
{
Dig=Dignum&0x8000;
if(Dig==0)P_IO_Buffer&=(~DIN); //DIN=0
else P_IO_Buffer|=DIN; //DIN=1
P_IO_Buffer&=(~SCLK);//sclk=0
P_IO_Buffer|=SCLK; //sclk=1
Dignum=Dignum<<1;
}
P_IO_Buffer|=SCLK;//cs=1,sclk=1
P_IO_Buffer|=CS;//cs=1,sclk=1
}
//=====================================================================
//主函數(shù):void main()
//僅供測試用,無實際意義
//通過改變DA_conver(dignum)的參數(shù)來觀察輸出,此程序A通道輸出約3.3伏
//=====================================================================
int main()
{
unsigned int mm=0x8000;
DA_init();
while(1)
{
while(mm!=0x8000)
{
DA_conver(mm);
mm=mm-0x0009;//幅度減小一個臺階
*P_Watchdog_Clear=0x0001;
while(mm!=0x8fff)
{
DA_conver(mm);
mm=mm+0x0009; //幅度提高一個臺階
*P_Watchdog_Clear=0x0001;
}
*P_Watchdog_Clear=0x01;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -