it编程 > 硬件开发 > 单片机

51单片机-60秒计时

84人参与 2024-08-06 单片机

内部定时器0方式1, 定时50ms,循环20次达到1秒寄存器+1

#include"reg51.h"
#define uchar unsigned char
#define uint unsigned int

uchar tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //led0-9

uchar data_l,data_h; //high bite and low bite 
uchar t,a; //count

void delay(uint k) //delay about 0.1ms 
{
	uint m,n;
	for(m=0;m<k;m++)
	{
		for(n=0;n<120;n++);
	}
}

void display (void) //display program
{
	p2=0x01;
	p0=tab[data_h];
	delay(1);
	p2=0x02;
	p0=tab[data_l];
	delay(1);
}

void timer0() interrupt 1 //50ms timing
{
	t++;
	th0=0x4c; //11.0592mhz initial value at high bits 
	tl0=0x00; //11.0592mhz initial value at low  bits 
}
void data_tim(void) //59s cuont 
{
	if(t==20)
	{
		a++;
		t=0;
		if(a==60)
		{
			a=0;
		}
	}
}

void data_in(void) //cut value 
{
	data_l=a%10;
	data_h=a/10;
}

void t0_init(void) //t0 initialization
{
	tmod=0x01; //t0 count model 1
	th0=0x4c;
	tl0=0x00;
	et0=1; //allow t0 break 
	tr0=1; //state t0
	ea=1; 
}
	
void main(void)
{
	a=0;
	t0_init();
	while(1)
	{
		data_tim();
		data_in();
		display();
	}
}
(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

单片机之蜂鸣器

08-06

【ESP32最全学习笔记(基础篇)——4.ESP32 引脚介绍】

08-06

MPU6050六轴陀螺仪外围电路分析

08-06

STC8增强型单片机进阶开发--LED呼吸灯(PWM)

08-06

(一)、为什么要学习FreeRTOS和单片机的选型?

08-06

TFT驱动ST7789使用总结

08-02

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论