#include"STC12C5410AD.h" #define uchar unsigned char unsigned char aa,bb; void delay(uchar dd) { int x,y; for(x=dd;x>0;x--) for(y=100;y>0;y--); } unsigned char Read_ADC(unsigned char adcvcc) { //將P1.0--P1.1設置成適合AD轉換的模式 ADC_CONTR = ADC_CONTR|0x80; //1000,0000打開A/D轉換電源 delay(20); //20ms ADC_CONTR = ADC_CONTR&0xE0; //1110,0000 清ADC_FLAG,ADC_START位和低3位 ADC_CONTR = ADC_CONTR&0xf8|adcvcc; //設置當前通道號 delay(10); //延時使輸入電壓達到穩定 ADC_DATA = 0; //清A/D轉換結果寄存器 ADC_CONTR = ADC_CONTR|0x08; //0000,1000ADCS = 1,啟動轉換 do { ; } while((ADC_CONTR & 0x10)==0); //0001,0000等待A/D轉換結束 ADC_CONTR = ADC_CONTR&0xE7; //1110,0111清ADC_FLAG和ADC_START位,停止A/D轉換 return ADC_DATA; } void main() { //里要加上設置ADC的端口,如)1.0,P1.1設為ADC口的話: P1M0 = 0x03; //0000,0011用于A/D轉換的P1.x口,先設為開漏 P1M1 = 0xC3; //0000,0011P1.0--P1.1先設為開漏。斷開內部上拉電阻 bb=0x01; while(1) { aa=Read_ADC(1); //第一路A/D轉換;如要改別的路,只要把代入通道改一下. P3=aa; //這是讓A/D的數據顯示在P3口的LED上. } }