#include <reg51.h>
#include <intrins.h>
sfr ADC_CONTR = 0xbc;
sfr ADC_RES = 0xbd;
sfr ADC_RESL = 0xbe;
sfr ADCCFG = 0xde;
sfr P5 = 0xc8;
sfr P3M1 = 0xb1;
sfr P3M0 = 0xb2;
sfr P5M1=0xc9;
sfr P5M0=0xca;
int X;
sbit beep=P5^4;
sbit led = P5^5;
typedef unsigned int u16;
void delay(u16 i)
{
while(i--);
}
void main()
{
P5M1 = 0x00;
P5M0 = 0x00;
P3M0 = 0x00; // 設置 P3.0 為 ADC
P3M1 = 0x04;// 設置 P3.0 為 ADC
ADCCFG = 0x2F; // 設置 ADC 時鐘為系統時鐘 /2/16 ,結果左對齊 0f= 00001111
ADC_CONTR = 0x82; // 使能 ADC 模塊 88= 10001000 80=10000000
while (1)
{
ADC_CONTR = 0xC2; // 啟動 AD 轉換c8=11001000 c0=11000000
_nop_();
_nop_();
while (!(ADC_CONTR & 0x20)); // 查詢 ADC 完成標志
ADC_CONTR &= ~0x20; // 清完成標志
X=(ADC_RES*256)+ADC_RESL;// 讀取 ADC 結果
if(X>345) PCON = 0x02; //MCU進入掉電模式
else led=0; //ON 0 OFF 1 1.7V
}
}
|