C语言写一段stc89c52按键控制小灯的程序
时间: 2024-11-05 17:24:09 浏览: 8
在C语言中,我们通常使用汇编指令配合定时器和中断来控制STC89C52单片机的按键输入,并通过它来开关LED灯。这里是一个基本的示例程序:
```c
#include <reg52.h> // 包含STC89C52的头文件
// 定义按键和LED的端口地址
sbit KEY = P0^0; // 按键连接到P0.0
sbit LED = P1^0; // LED连接到P1.0
void main(void) {
TMOD = 0x01; // 设置TMOD为模式1,定时器T1工作于模式1
TH1 = 0xFD; // 设置定时器T1的高8位计数值
TL1 = 0x0D; // 设置定时器T1的低8位计数值
EA = 1; // 开启全局中断
ET1 = 1; // 启动外部中断1
while (1) { // 无限循环
if (KEY == 0) { // 如果按下按键
TR1 = 1; // 启动定时器T1
LED = 1; // 开启LED
} else { // 如果松开按键
TR1 = 0; // 关闭定时器T1
LED = 0; // 关闭LED
}
while (!TF1); // 等待定时器中断
TF1 = 0; // 清除中断标志
}
}
interrupt 1 // 外部中断服务函数
void timer1_isr(void) interrupt 1 {
if (IE == 0x02) { // 判断是否只有定时器T1中断
IE &= ~0x02; // 清除中断标志
}
}
阅读全文