SOGO論壇
標題:
8051計時中斷(組語)
[列印本頁]
作者:
奇幻人
時間:
2011-5-22 22:06:47
標題:
8051計時中斷(組語)
請問為甚麼要設兩次的計數值和計時啟動,還有RETI是返回主程式的哪一行,可以順便幫我解釋計時中斷整的的動作流程嗎 ,謝謝
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP TIMER0
MAIN: MOV TMOD,#00000001B
MOV TH0,#01100011B
MOV TL0,#11000000B
MOV IE,#10000010B
MOV A,#0
MOV P2,#11111111B
MOV R0,#25
SETB TCON.4
LOOP: AJMP LOOP
TIMER0: MOV TH0,#01100011B
MOV TL0,#11000000B
SETB TCON.4
DJNZ R0,CONT
INC A
CPL A
MOV P2,A
CPL A
MOV R0,#25
CONT: RETI
作者:
begti20
時間:
2011-5-28 04:46:13
51啟動時直接跳到main
main:做timer0計時中斷的設定
mov tmod,#00000001b;set timer0 mode1
; timer0 gate=0
; C/T=0 : is timer
; m1,m0=01 : mode 1
mov ie,#10000010b ;set interrupt enable
setb tr0 ;set timer0 enable
mov tl0,#01100011B ;設定timer0在40000us後產生中斷
mov th0,#11000000B
啟動timer0於40ms後會跳到timer0中斷程式執行
之後就進入LOOP: AJMP LOOP的無窮迴路.
當timer0中斷產生時,會到timer0執行,遇到reti再回到這LOOP: AJMP LOOP
timer0:中斷副程式
重設timer0在40000us後產生中斷
TIMER0: MOV TH0,#01100011B
MOV TL0,#11000000B
SETB TCON.4
DJNZ R0,CONT,r0計數25次(25*40ms)後執行
INC A
CPL A
MOV P2,A
CPL A
MOV R0,#25
CONT: RETI 中斷副程式返回
整個程式的動作是每隔1Sec(25*40ms),p2的輸出值加一(低態動作)
《 本帖最後由
begti20
於 2011-5-28 04:56 編輯 》
歡迎光臨 SOGO論壇 (https://oursogo.com/)
Powered by OURSOGO.COM