写出初值的计算过程和整个定时器初始化程序,同时写出在P1.0脚上输出1秒的方波的程序... 写出初值的计算过程和整个定时器初始化程序,同时写出在P1.0脚上输出1秒的方波的程序
单片机晶振12M,一个机器周期是1us,定时500ms需要500000个机器周期,一次中断无法完成定时,需要多次定时才能实现,一次中断Z大定时时间是65.536ms,可以取一个整数,比如50ms,那么定时器的初值为:
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
初始化和方波程序如下:
#include
sbit pl=P1^0;
unsigned char num;
void t0isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num++;
if(num>=10)
{
num=0;
pl=~pl;
}
}
main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
while(1);
}