#include "reg52.H"
#include "string.h"
#include "intrins.h"
#define uint unsigned int
#define uchar unsigned char
//模拟量测量::ADC0809
#define ADC P0
sbit ALE = P2^7;
sbit ENABLE = P2^5;
sbit START = P2^4;
sbit EOC = P3^7;
sbit CLK = P3^4;
uchar ADC0809(void)//模拟量采集
{
uchar adc=0;
ALE=1;_nop_();ALE=0;//地址锁存
START=1;_nop_();START=0;//启动转换
wait:if(EOC==0)goto wait;//等待转换结束
_nop_();ENABLE=1;_nop_();//读数据
adc=ADC;_nop_();ENABLE=0;
return adc;//返回转换值
}
void Time0(void) interrupt 1 using 0//ADC0809时钟信号
{
CLK=~CLK;
}
void Timer0Init(void)//定时器T0初始化
{
TMOD = 0x02;
TH0 = 0xce;
TL0 = 0xce;
ET0 = 1;
TR0 = 1;
}
定时器采用模式2,8位自动重装初值方式。
初值计算方法:
时钟频率设计为500kHz,则定时时间t=1/f=1/500k=50us
采用12M晶振,机器周期为1us
根据公式:定时时间t=(2^8-x)*1us
计算初值x=2^8-50/1=256-50=206=0xce
改程序是已经实现过的,希望可以帮助你。
温馨提示:答案为网友推荐,仅供参考