1.给定计数值一个初始值,如何利用外部中断实现减计数,即每按一次按键计数值减1,直到为0,然后重新计数。 2.将外部中断1改为外部中断0,对应的硬件连接图和程序应如何修改?
时间: 2024-05-10 16:16:37 浏览: 57
1. 实现减计数的程序如下:
```C
#include <reg51.h>
// 定义计数初始值
#define COUNT_INIT 10
// 定义计数变量
volatile unsigned char count = 0;
// 定义外部中断1的中断服务函数
void ext1_isr() interrupt 2
{
// 每按一次按键计数值减1
count--;
if (count == 0) {
// 计数值为0时重新计数
count = COUNT_INIT;
}
}
void main()
{
// 初始化计数值
count = COUNT_INIT;
// 初始化外部中断1
IT1 = 1; // 设置外部中断1为下降沿触发
EX1 = 1; // 使能外部中断1
// 进入主循环
while (1);
}
```
2. 将外部中断1改为外部中断0的程序如下:
```C
#include <reg51.h>
// 定义计数初始值
#define COUNT_INIT 10
// 定义计数变量
volatile unsigned char count = 0;
// 定义外部中断0的中断服务函数
void ext0_isr() interrupt 0
{
// 每按一次按键计数值减1
count--;
if (count == 0) {
// 计数值为0时重新计数
count = COUNT_INIT;
}
}
void main()
{
// 初始化计数值
count = COUNT_INIT;
// 初始化外部中断0
IT0 = 1; // 设置外部中断0为下降沿触发
EX0 = 1; // 使能外部中断0
// 进入主循环
while (1);
}
```
在硬件连接上,需要将外部中断1的引脚(P3.3)改为外部中断0的引脚(P3.2),同时按键也要连接到P3.2引脚。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)