Dưới đõy là một vớ dụ khỏc của sự thực thi ngắt. Một ngắt ngoài được tạo ra khi một logic khụng (0) là xảy ra trờn chõn P3.2 hoặc chõn P3.3. Tựy thuộc vào đú là đầu vào hoạt động nào, một trong hai cụng việc sẽ được thực thi:
Một logic số mức khụng (0) trờn P3.2 khởi tạo sự thực thi ngắt Isr_Int0, vỡ thế số tăng dần trong R0 được sao chộp ra cổng P0. Logic số mức khụng trờn P3.3 khởi tạo sự thực thi chương trỡnh con ngắt Isr_Int1, số tăng dần trong R1 được sao chộp sang P1.
Trong ngắn hạn, mỗi lần bấm vào cỏc nỳt nhấn INT0 và INT1 sẽ được tớnh và ngay lập tức được hiển thị ở định dạng nhị phõn trờn cổng thớch hợp (LED mà chung dương).
;************************************************************************ ;* PROGRAM NAME : Int.ASM
;* DESCRIPTION : Program counts interrupts INT0 generated by appearance of high-to-low
;* transition signal on pin P3.2 Result appears on port P0. Interrupts INT1 are also
Bộ mụn Kỹ thuật mỏy tớnh – Khoa Điện tử - Trường ĐH Kỹ thuật Cụng nghiệp 153
;* counted up at the same timẹ They are generated byappearing high-to-low transition
;* signal on pin P3. The result appears on port P1.
;************************************************************************ ;BASIC DIRECTIVES $MOD53 $TITLE(INT.ASM) $PAGEWIDTH(132) $DEBUG $OBJECT $NOPAGING ;RESET VECTORS CSEG AT 0
JMP XRESET ; Reset vector
ORG 003H ; Interrupt routine ađress for INT0 JMP Isr_Int0
ORG 013H ; Interrupt routine ađress for INT1 JMP Isr_Int1
ORG 100H XRESET:
MOV TCON,#00000101B ; Interrupt INT0 is generated ;by appearing
; high-to-low transition signal on pin P3.2 ; Interrupt INT0 is generated by appearing ; high-to-low transition signal on pin P3.3 MOV IE,#10000101B ; Interrupt enabled
MOV R0,#00H ; Counter starting value MOV R1,#00H
MOV P0,#00H ; Reset port P0 MOV P1,#00H ; Reset port P1 LOOP: SJMP LOOP ; Remain here Isr_Int0:
INC R0 ; Increment value of interrupt INT0 counter MOV P0,R0
RETI Isr_Int1:
INC R1 ; Increment value of interrupt INT1 counter MOV P1,R1
RETI
END ; End of program