初始化程序:
对TMOD赋值,以确定T0和T1的工作方式。
计算初值,并将其写入TH0、TL0或TH1、TL1。
中断方式时,则对EA赋值,开放定时器中断。
使TR0或TR1置位,启动定时/计数器定时或计数。
//实现功能:数码管一秒加一;
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char code smg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
void main()
{
TMOD=0x01;//设置定时器0为工作方式1
TH0=(65536-50000)/256; //设置初值 一次50ms
TL0=(65536-50000)%256;
EA=1; //打开总中断开关
ET0=1; //打开定时器中断
TR0=1; //启动定时器
while(1)
{
if(kk==20)//20次就是1秒
{
k=0;
P1=smg_du[num];
num++;
if(num==10)//防止数组溢出
num=0;
}
}
}
void timer0 () interrupt 1
{
TH0=(65536-50000)/256; //设置初值
TL0=(65536-50000)%256;
k++;
}