#include <reg51.h> #include <stdio.h> #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(); } } }
时间: 2024-11-08 07:56:13