?? 中斷int0.asm
字號:
;********************************************************************************
;* 標題:北京啟東微芯LJD-SY-5100S單片機實驗系統演示程序 *
;* 文件:中斷INT0.ASM *
;* 日期: 2005-7-5 *
;* 版本: 1.0 *
;* 作者:啟東微芯 *
;* 網站: http://www.LJD-2008.COM *
;********************************************************************************
;* 描述: *
;* 沒有中斷時,4個燈以閃爍為主,響應中斷后則以廣告燈的形式顯示 *
;* 由于采用下降沿觸發,所以對于中斷有一次記憶功能 *
;* *
;* *
;********************************************************************************
;* 【版權】 Copyright(C)微芯科技 http://www.ljd-2008.com All Rights Reserved *
;* 【聲明】 此程序僅用于學習與參考,引用請注明版權和作者信息! *
;*******************************************************************************/
TIMER0 EQU 30H
TIMER1 EQU 31H
;;====================================================================
ORG 0000H
JMP START
ORG 0003H
JMP INTERRUPT_0
START : MOV SP,#60H ;設定堆棧區
MOV IE,#10000001B ;中斷致能,EA=EX0=1
MOV TCON,#00000001B ;設定外部中斷0 為負緣觸發
LOOP: MOV A,#11110000B
MOV P0,A ;從 P1 輸出到LED
CALL DELAY500 ;延遲約 0.5 秒
MOV A,#00001111B
MOV P0,A ;從 P1 輸出
CALL DELAY500 ;延遲約 0.5 秒
JMP LOOP
;====================================================================
INTERRUPT_0:
PUSH ACC
PUSH B
MOV B,#8 ;移動 8 次
MOV A,#11111110B ;單一燈向右移
LOOP1: MOV P0,A ;從 P1 輸出到 LED
CALL DELAY500 ;延遲約 0.5 秒
RR A ;右旋一次
DJNZ B,LOOP1 ;移動 8 次了嗎?
POP B
POP ACC
RETI
;--------------------------------------------------------------------
;延時子程序
DELAY: PUSH TIMER1; 延時TIMER1*1 ms for 12MHz
PUSH TIMER0
DELAY1: MOV TIMER0,#250 ;循環一次需要4個機器周期,時間為4*1μS
DELAY2: NOP ; 1個周期
NOP ; 1個周期
DJNZ TIMER0,DELAY2 ;2個周期
DJNZ TIMER1,DELAY1
POP TIMER0
POP TIMER1
RET
NOP;--------------------
DELAY01: NOP; 延時 1 ms
PUSH TIMER1
MOV TIMER1,#01H
LCALL DELAY
POP TIMER1
RET
NOP;--------------------
DELAY10: NOP; 延時 10 ms
PUSH TIMER1
MOV TIMER1,#10
LCALL DELAY
POP TIMER1
RET
NOP;---------------------
DELAY100: NOP; 延時100 ms
PUSH TIMER1
MOV TIMER1,#100
LCALL DELAY
POP TIMER1
RET
NOP;---------------------
DELAY250: NOP; 延時 250 ms
PUSH TIMER1
MOV TIMER1,#250
LCALL DELAY
POP TIMER1
RET
NOP;---------------------
DELAY500: NOP; 延時 500 ms
PUSH TIMER1
MOV TIMER1,#250
LCALL DELAY
LCALL DELAY
POP TIMER1
RET
NOP;---------------------
DELAY1S: NOP; 延時 1 sec
PUSH TIMER1
MOV TIMER1,#250
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
POP TIMER1
RET
NOP;---------------------
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -