SJ-005 实训项目 · 精品课程

定时器中断应用
12 大经典实训

基于 STC89C52RC 单片机,从基础定时闪烁、PWM 调光,到秒表、计数器、交通灯与数码管动态扫描,培养中断驱动的实时系统设计能力。

12 个递进子项目 汇编语言实战 定时/计数/中断全掌握
首页 实训项目 定时器中断应用
定时与中断 · 核心实训

定时器中断应用 · 12 大经典实训

本项目围绕 8051 单片机 Timer0/Timer1 与外部中断 INT0/INT1 展开,从基础定时闪烁、PWM 调光,到秒表、计数器、交通灯与数码管动态扫描,培养中断驱动的实时系统设计能力。

12 大递进式子项目
汇编语言
约 12 学时
配套评分标准
PROJECT MATRIX

12 大经典玩法一览

由简到难,循序渐进掌握定时器中断 · 点击任意卡片开始学习

基础实训 进阶实训 综合实训
01 基础实训

1只LED航标灯

定时20ms方波 · Timer0

SJ-005-01 开始学习 →
02 基础实训

8路LED定时循环

100ms移位 · Timer0

SJ-005-02 开始学习 →
03 进阶实训

定时器PWM呼吸灯

占空比渐变 · Timer0

SJ-005-03 开始学习 →
04 基础实训

外部INT0控制LED开关

下降沿触发 · 电平翻转

SJ-005-04 开始学习 →
05 进阶实训

INT1触发蜂鸣器报警

中断报警 · 定时停止

SJ-005-05 开始学习 →
06 进阶实训

多中断协同灯光效果

Timer0+INT0+INT1

SJ-005-06 开始学习 →
07 进阶实训

秒表计时数码管显示

00~59秒 · 动态显示

SJ-005-07 开始学习 →
08 基础实训

1秒精确定时

50ms×20 · 系统时钟

SJ-005-08 开始学习 →
09 进阶实训

计数器模式外部脉冲计数

T0脚输入 · 计数显示

SJ-005-09 开始学习 →
10 综合实训

交通灯定时控制系统

状态机 · 红黄绿切换

SJ-005-10 开始学习 →
11 综合实训

定时器驱动数码管扫描

2ms动态扫描 · 显示1-8

SJ-005-11 开始学习 →
12 综合实训

定时触发串口数据发送

Timer1波特率 · Timer0定时

SJ-005-12 开始学习 →

1只LED航标灯

基础实训
实训编号
SJ-005-01
实训类型
定时器中断
实训学时
40分钟
适用年级
高二,高三
指导教师
王老师

1 项目简介

本项目是定时器中断入门的第一个实验。通过配置 STC89C52RC 的 Timer0 工作于 16 位定时器模式,每 10 毫秒产生一次中断,在中断服务程序中翻转 P1.0 连接的 LED,从而得到周期为 20 毫秒的方波信号,模拟航标灯闪烁效果。

掌握本项目后,学生将理解定时器初值计算、中断向量、中断服务程序编写以及主程序低功耗等待等核心概念,为后续复杂定时控制项目打下基础。

2 电路图

电路图

电路说明

  • • LED 阳极通过限流电阻接 VCC,阴极接单片机 P1.0 引脚
  • • 采用低电平点亮方式,P1.0=0 时 LED 亮,P1.0=1 时 LED 灭
  • • Timer0 工作于 16 位定时器模式,每 10ms 中断一次
  • • 限流电阻取 220Ω~1kΩ,保护 LED 不被过流损坏

3 程序内容(汇编语言)

;==================================================
; 项目名称:1只LED航标灯(定时20ms方波)
; 芯片型号:STC89C52RC  时钟频率:12MHz
; LED连接:P1.0(低电平点亮)
; 功能说明:定时器0每10ms中断,翻转P1.0
;==================================================
ORG     0000H          ; 复位向量
LJMP    MAIN           ; 跳转到主程序
ORG     000BH          ; 定时器0中断向量
LJMP    T0_ISR         ; 跳转到中断服务程序

LED     BIT     P1.0   ; LED控制位定义

MAIN:   MOV     TMOD, #01H     ; 定时器0模式1:16位定时器
        MOV     TL0,  #0F0H    ; 定时器低字节初值
        MOV     TH0,  #0D8H    ; 定时器高字节初值
        ; 12MHz晶振,机器周期1μs,10ms = 10000个机器周期
        ; 初值 = 65536 - 10000 = 55536 = 0D8F0H
        SETB    TR0            ; 启动定时器0
        SETB    ET0            ; 允许定时器0中断
        SETB    EA             ; 开放总中断
        SETB    LED            ; LED初始熄灭
        SJMP    $              ; 主循环等待中断

T0_ISR: PUSH    ACC            ; 保护累加器
        PUSH    PSW            ; 保护程序状态字
        MOV     TL0,  #0F0H    ; 重装定时器低字节初值
        MOV     TH0,  #0D8H    ; 重装定时器高字节初值
        CPL     LED            ; 翻转P1.0,产生方波
        POP     PSW            ; 恢复程序状态字
        POP     ACC            ; 恢复累加器
        RETI                   ; 中断返回

END                    ; 程序结束

4 评分标准

评分项目 分值 评分标准
定时器配置 30分 TMOD、TH0、TL0、TR0设置正确
中断配置 20分 ET0、EA开放,中断向量正确
程序编写 30分 初值重装、LED翻转、现场保护正确
功能实现 20分 LED输出20ms方波,频率50Hz

5 注意事项与安全规范

中断初值

进入中断服务程序后必须重新装入 TH0/TL0 初值,否则定时周期会偏离

现场保护

中断中使用的 ACC、PSW 等寄存器必须 PUSH/POP,防止主程序运行异常

中断返回

中断服务程序末尾必须使用 RETI 返回,不能用普通 RET