Shopee:抓住Z世代,校招破局的三重路径
2026/1/13 23:48:09
硬件原理:
消抖处理:
if (KEY == 0) { // 检测低电平 delay_ms(10); // 延时消抖 if (KEY == 0) { // 执行按键动作 } }中断流程:
$$
\text{中断请求} \rightarrow \text{优先级裁决} \rightarrow \text{保护现场} \rightarrow \text{执行ISR} \rightarrow \text{恢复现场}
$$
寄存器配置示例(外部中断0):
IT0 = 1; // 下降沿触发 EX0 = 1; // 允许外部中断0 EA = 1; // 全局中断使能定时器初值计算:
若需定时$T$(微秒),晶振频率$f=12\text{MHz}$,则:
$$
\text{初值} = 65536 - \frac{T \times f}{12}
$$
定时器0模式配置:
TMOD |= 0x01; // M1=0, M0=1 → 16位定时器 TR0 = 1; // 启动定时器0按键控制蜂鸣器音调:
#include <REG52.H> sbit Buzzer = P1^0; // 蜂鸣器引脚 sbit KEY = P3^2; // 按键(外部中断0) void Timer0_Init() { TMOD = 0x01; // 定时器0,模式1 TH0 = 0xFC; TL0 = 0x18; // 1kHz中断初值 ET0 = 1; EA = 1; TR0 = 1; } void main() { Timer0_Init(); while(1); } void Timer0_ISR() interrupt 1 { TH0 = 0xFC; TL0 = 0x18; // 重载初值 Buzzer = !Buzzer; // 翻转电平 } void Key_ISR() interrupt 0 { if (KEY == 0) { TH0 = 0xF8; TL0 = 0x30; // 切换为500Hz } }