?? 10.1.c
字號(hào):
#include<reg51.h>
#include<absacc.h>
#define uint unsigned int
#define uchar unsigned char
#define N 128 /*定采樣長(zhǎng)度,如128點(diǎn)*/
sbit BYTE=P1^0;
sbit RC=P1^1;
sbit BUSY=P1^2; /*定義特殊位*/
int xdata array[128]; /*在外部存儲(chǔ)器內(nèi)定義長(zhǎng)度為N的有符號(hào)整數(shù)數(shù)*/
int ADS7804(void);
int ADS7804(void)
{
uint ul,uh;int u;
RC=0; /* 低電平,進(jìn)入轉(zhuǎn)換模式*/
ul=XBYTE[0xffff]; /*產(chǎn)生讀脈沖,啟動(dòng)A/D轉(zhuǎn)換*/
while(BUSY==0); /*等待轉(zhuǎn)換完成*/
RC=1;BYTE=0; /*進(jìn)入讀模式,選擇低字節(jié)*/
ul=XBYTE[0xffff]; /*讀轉(zhuǎn)換結(jié)果低8位*/
BYTE=1; /*選擇高字節(jié)*/
uh=XBYTE[0xffff]&0x0f; /*讀轉(zhuǎn)換結(jié)果高4位*/
u=uh*256+ul; /*得到12位轉(zhuǎn)換結(jié)果*/
if(u>=0x0800)
u=u|0xf000; /*如果為負(fù)值,則符號(hào)擴(kuò)展*/
return(u); /*返回轉(zhuǎn)換結(jié)果*/
}
void DAQ(uint interval)
{
uchar th,tl;
uint i;
interval=interval-5; /*減去TF0清零和裝載計(jì)數(shù)初值的時(shí)間5μs*/
th=255-(interval/256);
tl=255-(interval%256); /*計(jì)算計(jì)數(shù)初值*/
TMOD=0x01; /*定時(shí)器0,方式1 */
TH0=th; TL0=tl; /*裝載計(jì)數(shù)初值*/
TR0=1; /*啟動(dòng)定時(shí)*/
for(i=0;i<N;i++)
{
do{}while(!TF0); /*查詢等待TF0復(fù)位*/
TF0=0; /*清溢出標(biāo)志*/
TH0=th;TL0=tl; /*裝載計(jì)數(shù)初值*/
array[i]=ADS7804(); /*采樣、存儲(chǔ)*/
}
TR0=0; /*停止定時(shí)*/
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -