#include
#include
#define uchar unsigned char //宏定义无符号字符型
#define uint unsigned int //宏定义无符号整型
sbit ST=P3^0; //A/D启动转换信号
sbit OE=P3^1; //数据输出允许信号
sbit EOC=P3^2; //A/D转换结束信号
sbit CLK=P3^3; //时钟脉冲
uint i,j,AD0809; //定义数据类型
//延时子函数
void delay()
{
i = 1000;
while(i--);
}
/*************************************************************************
CLK振荡信号
**************************************************************************/
void timer0( ) interrupt 1 //定时器0工作方式1
{
TH0=(65536-2)/256; //重装计数初值
TL0=(65536-2)%256; //重装计数初值
CLK=!CLK; //取反
}
/*************************************************************************
主函数
**************************************************************************/
void main()
{
TMOD=0X01; //定时器中断0
CLK=0; //脉冲信号初始值为0
TH0=(65536-2)/256; //定时时间高八位初值
TL0=(65536-2)%256; //定时时间低八位初值
EA=1; //开CPU中断
ET0=1; //开T/C0中断
TR0=1;
while(1) //无限循环
{
ST=0; //使采集信号为低
ST=1; //开始数据转换
ST=0; //停止数据转换
while(!EOC); //等待数据转换完毕
OE=1; //允许数据输出信号
AD0809=P1; //读取数据
OE=0; //关闭数据输出允许信号
if(AD0809>=251) //电压显示不能超过5V
{
AD0809=250;
P2 = 0xE0;//报警闪烁LED灯
delay();
P2 =~0xE0;
delay();
P0 = ~0x06;//数码管报警显示1
delay();
P0 = ~0x00;
delay();
}
}
}