?? 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 + -