定时器中断实验 编写程序使定时器0或者定时器1工作在方式2,自动重装载模式,定时500ms使两位数码管从00、01、02……98、99每间隔500ms加1显示。

该程序使用51单片机的定时器0工作在方式2,设置为500ms定时器,实现两位数码管从00到99每隔500ms自动加1并显示。通过中断服务函数int1_timer实现计数,当计数值达到5000时更新数码管显示,并限制数码管数值不超过99。

编写程序使定时器0或者定时器1工作在方式2,自动重装载模式,定时500ms使两位数码管从00、01、02……98、99每间隔500ms加1显示。

程序:
#include <reg51.h>
#define uchar unsigned char
uchar led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar seg[]={0xfe,0xfd};
unsigned int cont=0;
uchar num=0;
uchar gewei,shiwei;
void delay(unsigned int time)
{
while(–time);
}

int main(void)
{
TMOD=0X02;
EA=1;
TH0=256-100;
TL0=256-100;
ET0=1;
TR0=1;
P2=0xff;
while(1)
{
gewei=num%10;
shiwei=num/10;
P2=seg[0];
P0=led[gewei];
delay(100);
P0=0xff;
P2=seg[1];
P0=led[shiwei];
delay(100);
P2=0xff;

}

}

void int1_timer(void) interrupt 1
{
cont++;
if(cont5000)
{
num++;
cont=0;
}
if(num
100)num=0;
}
视频:
https://www.bilibili.com/video/BV1j5411n7ua/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值