按键控制中断数字时钟程序
时间: 2023-08-26 07:04:50 浏览: 76
按键中断程序
这是一个基本的按键控制中断数字时钟程序,使用了8051单片机。程序中使用了两个外部中断来处理按键输入。其中,INT0处理“增加”按钮的输入,INT1处理“减少”按钮的输入。每次按下按钮,时钟的小时、分钟或秒钟都会相应地增加或减少。请注意,这只是一个基本的程序框架,您需要根据您的具体需求进行适当的修改和优化。
```
#include <reg51.h>
sbit hour = P2^0; // 时钟小时数码管
sbit minute = P2^1; // 时钟分钟数码管
sbit second = P2^2; // 时钟秒数码管
unsigned char hour_value = 0; // 时钟小时数值
unsigned char minute_value = 0; // 时钟分钟数值
unsigned char second_value = 0; // 时钟秒数值
void delay(unsigned int time) // 延时函数
{
unsigned int i, j;
for(i = 0; i < time; i++)
for(j = 0; j < 125; j++);
}
void display() // 显示函数
{
hour = hour_value / 10; hour = 0; hour = hour_value % 10;
minute = minute_value / 10; minute = 0; minute = minute_value % 10;
second = second_value / 10; second = 0; second = second_value % 10;
}
void INT0_ISR() interrupt 0 // INT0中断服务程序
{
hour_value++;
if(hour_value >= 24)
hour_value = 0;
display();
}
void INT1_ISR() interrupt 2 // INT1中断服务程序
{
minute_value++;
if(minute_value >= 60)
{
minute_value = 0;
hour_value++;
if(hour_value >= 24)
hour_value = 0;
}
display();
}
void main()
{
IE = 0x85; // 启用外部中断
IT0 = 1; // INT0下降沿触发
IT1 = 1; // INT1下降沿触发
while(1)
{
delay(500); // 500毫秒延时
second_value++;
if(second_value >= 60)
{
second_value = 0;
minute_value++;
if(minute_value >= 60)
{
minute_value = 0;
hour_value++;
if(hour_value >= 24)
hour_value = 0;
}
}
display();
}
}
```
阅读全文