《初学者C51自学笔记》之定时器代码(三)

初始化程序: 

 对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++;

}

猜你喜欢

转载自blog.csdn.net/qq_40691438/article/details/81451902