用51单片机写一个代码,要求P3_1按键按下时,led灯亮,03_2按键按下期间,无论P3_1按键按不按下led灯都不亮,用定时器的中断优先级写
时间: 2024-05-14 11:14:18 浏览: 67
如何使用51单片机点亮LED灯
这里是一份使用定时器中断优先级的代码:
```c
#include <reg51.h>
sbit LED = P1^0;
sbit KEY1 = P3^1;
sbit KEY2 = P3^2;
unsigned int count = 0;
void Timer0_ISR() interrupt 1 {
TH0 = 0xFC;
TL0 = 0x66;
count++;
}
void main() {
TMOD = 0x01; // 16位定时器
TH0 = 0xFC;
TL0 = 0x66;
IE = 0x82; // 开启定时器中断和总中断
TR0 = 1; // 开启定时器
while(1) {
if(KEY1 == 0 && KEY2 == 1) { // P3_1按下,P3_2未按下
LED = 1;
} else {
LED = 0;
}
}
}
```
这里使用了16位定时器,每次中断时计数器count加1。在主循环中,通过检查P3_1和P3_2的状态来控制LED灯的亮灭。当P3_1按下时,LED灯亮;否则,LED灯不亮。由于定时器中断的优先级高于外部中断,因此即使在P3_1被按下的时候,由于定时器中断的影响,LED灯也不会亮。
阅读全文