#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
改程序是已經實現過的,希望可以幫助妳。