定时器中断实现秒闪

0
回复
111
查看
[ 复制链接 ]

45

主题

7

回帖

185

积分

注册会员

积分
185
2025-6-24 15:29:13 显示全部楼层 阅读模式
《定时器中断实现秒闪》
🕰️ 定时器初始化
[backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]c
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]

复制

[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]

下载





TMOD = 0x01;  // 定时器0模式1TH0 = 0x3C;   // 50ms初值(12MHz晶振)TL0 = 0xB0;    ET0 = 1;      // 允许定时器0中断EA = 1;       // 总中断允许TR0 = 1;      // 启动定时器
🔢 中断服务程序
[backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]c
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]

复制

[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]

下载





void timer0() interrupt 1 {    static unsigned char count = 0;    TH0 = 0x3C;  // 重装初值    TL0 = 0xB0;    if(++count >= 20) { // 20*50ms=1s        count = 0;        LED = !LED;     // 每秒翻转    }}
⚠️ 避坑提醒
  • 必须手动重装初值(模式1不会自动重载)
  • 中断号不能写错(定时器0对应interrupt 1)


收藏
送赞
分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则