51单片机代码实现加法计数(计数初值为0,按键K4每按下并弹起1次,计数结果加1,计数结果为OxFF时再“加1”则让计数结果回到0),并将计数结果送D9~D16 显示(D9用作计数结果最高位,D16用作计数结果最低位),要求用到延时的地方都用定时器中断实现。
时间: 2024-02-11 11:04:54 浏览: 58
好的,这里给你一个简单的51单片机程序实现加法计数器。
注意:以下代码中的定时器是定时器0,计数值为1ms,需要连接一个按键K4到P3.2口。
```c
#include <reg52.h>
// 定义计数器初值
#define COUNT_INIT 0
// 定义计数器最大值
#define COUNT_MAX 0xFF
// 定义计数器变量
unsigned char count = COUNT_INIT;
// 定义延时计数变量
unsigned int delay_count = 0;
// 定义定时器中断服务函数
void timer_isr() interrupt 1 {
// 定时器0每1ms触发一次中断
// 在这里检测按键状态,并进行加法计数操作
if (P3 & 0x04) { // 检测P3.2口输入状态
delay_count = 10; // 设置10ms延时
}
if (delay_count > 0) {
delay_count--;
if (delay_count == 0) { // 延时结束
count++; // 进行加法计数操作
if (count == COUNT_MAX) { // 计数器达到最大值
count = COUNT_INIT; // 将计数器清零
}
// 将计数结果送到D9~D16进行显示
P0 = count; // 将计数结果送到P0口
}
}
}
// 主函数
void main() {
// 初始化定时器0,计数频率为1ms
TMOD |= 0x01; // 定时器0工作在模式1
TH0 = 0xFC; // 定时器0计数初值,1ms
TL0 = 0x66;
ET0 = 1; // 开启定时器0中断
// 初始化IO口
P0 = COUNT_INIT; // 将计数器初值送到P0口
P3 |= 0x04; // 将P3.2口设置为输入状态
// 开启总中断
EA = 1;
// 启动主循环
while (1) {
// 主循环中可以增加一些其他的操作
}
}
```
以上代码中,我们使用定时器0来触发中断服务函数,定时器0工作在模式1,计数频率为1ms。在定时器中断服务函数中,我们检测P3.2口输入状态,并将计数结果送到P0口进行显示。为了防止按键抖动,我们增加了一个10ms的延时。当延时结束时,进行加法计数操作,如果计数器达到最大值,则将计数器清零。
希望这个程序能够对你有所帮助。如果有任何疑问,欢迎随时提出。
阅读全文
相关推荐















