📄 3-2.asm
字号:
;Mcs-51 中断服务程序的应用
ORG 00H
LJMP MainIni ;程序复位后,跳转到主程序处
ORG 03H ;安装外中断0的中断服务程序
LJMP EX0_Handler
ORG 0BH ;安装定时器0的中断服务程序
LJMP T0_Handler
ORG 13H ;安装外中断1的中断服务程序
LJMP EX1_Handler
ORG 23H ;安装串行中断服务程序
LJMP UART_Handler
ORG 40H ;中断服务程序从40H开始
EX0_Hander: ;外中断0中断服务程序
…… ;保护现场
…… ;中断处理
…… ;恢复现场
RETI ;退出中断程序,返回现场
EX1_Handler: ;外中断1中断服务程序
…… ;保护现场
…… ;中断处理
…… ;恢复现场
RETI ;退出中断程序,返回现场
T0_Handler: ;定时器0中断服务程序
…… ;保护现场
…… ;中断处理
…… ;恢复现场
RETI ;退出中断程序,返回现场
UART_Handler: ;串口通讯中断服务程序
…… ;保护现场
…… ;中断处理
…… ;恢复现场
RETI ;退出中断程序,返回现场
;开始主程序
MainIni: ;主程序初始化中断部分
…… ;初始化程序变量
;初始化外中断
SETB IT0 ;INT0为负边沿触发
SETB IT1 ;INT1为负边沿触发
;初始化定时器
;定时器0为工作方式1(16位定时器),定时器1为工作方式2(波特率发生器)
MOV TMOD,21H
MOV TH0,D8H ;设置定时器0为10ms定时器
MOV TL0,F0H
SETB PT0 ;设置定时器0为最高优先级中断
SETB TR0 ;启动定时器0
;初始化串口
MOV SCON,40H ;10位异步收发方式,单机对单机通讯
CLR SMOD ;波特率没有加倍
MOV TH1,FDH ;初始化波特率为9600bps
MOV TL1,FDH
SETB TR1 ;启动波特率发生器T1
;中断使能
SETB EX0 ;允许外中断0
SETB EX1 ;允许外中断1
SETB ET0 ;允许定时器0溢出中断
SETB ES ;允许串行口中断
SETB EA ;开总中断控制位
…… ;其它的初始化操作
Main: ;开始主程序(循环)
……
SJMP $ ;等待中断
END ;结束程序
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -