?? dac.c
字號:
#include "SPCE061V004.H"
#define Set_IOA_Bit(x) (*P_IOA_Data = *P_IOA_Buffer | x)
#define Clear_IOA_Bit(x) (*P_IOA_Data = *P_IOA_Buffer & ~x)
#define DIN 0x0001 //串行數據輸入 IOA0
#define SCLK 0x0002 //串行時鐘 IOA1
#define CS 0x0004 //使能信號 IOA2
#define OUTB 0x0000 //OUTB and buffer
#define OUTA 0x0001 //OUTA
#define OUTAB 0x8000 //Write A and update OUTB with buffer
#define OUTBUF 0x0100 //BUFFER
extern unsigned int data_val,V_value;
//*************************************************************
//函數名稱:CtrlTLV5618()
//功能:向12位串行DA TLV5618置數
//參數:12位數據
//*************************************************************
void CtrlTLV5618(unsigned int OUTX,unsigned int dat)
{
unsigned int order,value,mask,i;
mask = 0x8000;
order = OUTX; //OUTA,OUTB,SLOW
value = order | dat;
Set_IOA_Bit(CS);
Clear_IOA_Bit(CS);
for(i=0;i<16;i++)
{
*P_Watchdog_Clear= 0x0001;
Set_IOA_Bit(SCLK);
if(mask & value)
Set_IOA_Bit(DIN);
else
Clear_IOA_Bit(DIN);
Clear_IOA_Bit(SCLK);
mask = mask>>1;
}
Set_IOA_Bit(SCLK);
Set_IOA_Bit(CS);
}
//*********************************************************************
//WriteDAC(unsigned int PORT,unsigned int dat)
//*********************************************************************
void WriteDAC(unsigned int PORT,unsigned int dat)
{
if(PORT == OUTB)
CtrlTLV5618(OUTB,dat);
else if(PORT == OUTA)
{
CtrlTLV5618(OUTBUF,data_val);
CtrlTLV5618(OUTAB,dat);
CtrlTLV5618(OUTB,data_val);
}
}
//**********************************************************************************//
//函數名稱:AGC()
//函數功能:對系統進行自動增益控制
//參數:無
//**********************************************************************************//
void AGC()
{
unsigned int sum,j;
*P_Watchdog_Clear=1;
sum = 0;
for(j=0;j<8;j++)
{
GetFudu(); //讀取AD采樣值
sum = sum + V_value;
}
V_value = sum >> 3; //取平均值,相當于軟件濾波
if(V_value<1641) //幅度小于1V ????????????
{
if(data_val<4095)
{
data_val+=1;
WriteDAC(OUTB,data_val);
}
else
{
data_val=4095;
WriteDAC(OUTB,data_val);
}
}
else if(V_value>1645) //幅度大于1V
{
if(data_val>0)
{
data_val-=1;
WriteDAC(OUTB,data_val);
}
else
{
data_val=0;
WriteDAC(OUTB,data_val);
}
}
else
WriteDAC(OUTB,data_val);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -