DAC7611驅(qū)動程序
#include
#include
#define uint unsigned int
sbit CS =P4^3; //輸出片選信號
sbit CLK=P1^6; //輸出時鐘
sbit SDI=P1^7; //輸出數(shù)據(jù)
sbit LD=P1^5; //輸出數(shù)/模轉(zhuǎn)換過程啟動信號
/******初始化DAC7611******************/
void init_da(void)
{
LD=0; // 裝載引腳置低
CS=1; //片選置高
CLK=1; //時鐘置高
SDI=0;
}
/*****時鐘脈沖子函數(shù)***********/
void clock(void)
{
CLK=0;
_nop_();
CLK=1; //產(chǎn)生一個時鐘脈沖
_nop_();
}
/******DAC7611轉(zhuǎn)換***************/
void DAC_7611(uint vol)
{
uint i,j;
vol<<=4;
LD=1; //裝載引腳置高
_nop_();
CS=0; //片選拉低,準(zhǔn)備轉(zhuǎn)換
for(i=0;i<12;i++)
{
j=vol;
SDI=j&0x8000;
clock();
vol<<=1;
}
CLK=1; // 輸出時鐘置高
_nop_();
CS=1; //DAC7611片選引腳CS置高
_nop_();
LD=0; //裝載引腳LD置低以啟動數(shù)模轉(zhuǎn)換
_nop_();
_nop_();
_nop_();
_nop_();
LD=1; //LD置高
}
/**********主程序*****************/
void main()
{
init_da();
DAC_7611(1111);
}
評論