单片机定时器实验的代码怎么写?求详细注释。

利用定时器 T0 工作在方式 1,即 16 位定时计数方式。定时器 100ms 中断一 次,每中断 10 次(大约 1S),计数一次,计数值按 BCD 码计数,并在仿真机上的数 码管显示器上显示出来。

如果是100ms中断一次,那么晶振需要用6MHz

#include<reg51.h>
#define uchar unsigned char
uchar t1,sec1,dscan=0,dis[3]={0,0,0};
uchar table={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void t0isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t1++;
if(t1>=20)
{
t1=0;
sec1++;
dis[0]=sec1%10;
dis[1]=sec1%100/10;
dis[2]=sec1/100;
}
}
void t1isr() interrupt 3
{
TH1=(65536-5000)/256;
TL1=(65536-5000)%256;
P2=1<<dscan;
P0=table[dis[dscan]];
}
main()
{
TMOD=0x11;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65536-5000)/256;
TL1=(65536-5000)%256;
TR0=1;
ET0=1;
TR1=1;
ET1=1;
EA=1;
t1=0;
sec1=0;
while(1);
}
温馨提示:答案为网友推荐,仅供参考