?? 552_adc_pol.c
字號:
/**************************************************************************
* 功能描述: 在STADC引腳的上升沿之后掃描所有ADC通道。由定時器T2
* 控制在P4.7引腳上產生重復周期為1.14ms的上升沿信號。
* A/D轉換結果被送往UART。
**************************************************************************/
#include <reg552.h>
#define ADEX 0x20
#define ADCI 0x10
#define ADCS 0x08
void write_UART(unsigned int *, unsigned int);
void main(void) {
unsigned int conversion, result_ADC[8];
unsigned char ADC_Channel;
S0CON=0x40; /* 串行口初始化 */
TH1=TL1=0xfd; /* 19200 Baud @11.0592MHz */
TMOD=0x20;
TR1=1;
TM2CON=0xfd; /* 定時器T2初始化: osc/96 */
RTE=0x80; /* 溢出率= 0.569ms, 在STADC的上升沿
開始A/D轉換,轉換速率=1.14ms */
conversion=0;
while(1) {
for (ADC_Channel=0; ADC_Channel<8; ADC_Channel++) {
ADCON=0; /* 在選通ADC通道之前 */
ADCON=ADC_Channel; /* 保證ADCI 和 ADCS 被清0 */
if (ADC_Channel==0)
ADCON=ADEX; /* ADC0: 外部啟動 */
else
ADCON=ADCON|ADCS; /* ADC1...ADC7: 軟件啟動 */
while((ADCON&ADCI)==0); /* 檢測ADCI狀態并等待A/D轉換結束 */
result_ADC[ADC_Channel]=5*((256*ADCH+(ADCON&0xc0))>>6);
/* 計算相應于5.12V參考電壓的10螤 渙/D轉換結果*/
}
write_UART(&result_ADC, conversion++); /* 結果送往 UART */
if (conversion==10000)
conversion=0;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -