在主程序中通過(guò)P1口在數(shù)碼管循環(huán)顯示十六進(jìn)制數(shù)0~F(或倒序顯示十進(jìn)制數(shù)9~0);外部中斷通過(guò)INT1和INT0輸入,由按鍵輸入,下降沿有效,INT1為高優(yōu)先級(jí),INT0為普通優(yōu)先級(jí),在INT0中斷服務(wù)程序中在P2口實(shí)現(xiàn)閃爍燈功能,閃爍十遍后結(jié)束,在INT1中斷服務(wù)程序中在P0口顯示自己的學(xué)號(hào)。要求演示高優(yōu)先級(jí)可中斷低優(yōu)先級(jí),而低優(yōu)先級(jí)不能中斷高優(yōu)先級(jí)的效果。 ORG 0000H AJMP MAIN ORG 0003H AJMP IT0P ORG 0013H AJMP IT1P
ORG 0100H MAIN:MOV P0,#0 MOV SP,#5FH SETB EX0 SETB EX1 SETB IT0 SETB IT1 SETB EA CLR PX0 SETB PX1
g1:mov r0,#0 mov r1,#16 g2:mov dptr,#table mov a,r0 movc a,@a+dptr inc r0 mov p1,a mov r7,#5 g3:mov r6,#100 g4:mov r5,#250 g5:nop nop djnz r5,g5 djnz r6,g4 djnz r7,g3 djnz r1,g2 sjmp g1
IT0P: PUSH ACC PUSH PSW PUSH DPL PUSH DPH setb RS0 MOV R1,#5 LOOP:MOV A,#0FFH MOV P2,A MOV R7,#10 DELAY1:MOV R6,#50 DELAY2:MOV R5,#250 DELAY3:NOP NOP DJNZ R5,DELAY3 DJNZ R6,DELAY2 DJNZ R7,DELAY1 MOV A,#0H MOV P2,A MOV R7,#10 DELAY7:MOV R6,#50 DELAY8:MOV R5,#250 DELAY9:NOP NOP DJNZ R5,DELAY9 DJNZ R6,DELAY8 DJNZ R7,DELAY7 DJNZ R1,LOOP POP DPH POP DPL POP PSW POP ACC RETI
IT1P:PUSH ACC PUSH PSW PUSH DPL PUSH DPH setb RS1 L1:mov r0,#0 mov r1,#10 L2:mov dptr,#table1 mov a,r0 movc a,@a+dptr inc r0 mov p0,a mov r7,#5 L3:mov r6,#100 L4:mov r5,#250 L5:nop nop djnzr5,L5 djnzr6,L4 djnzr7,L3 djnzr1,L2 POP DPH POP DPL POP PSW POP ACC MOVP0,#0 RETI
table1: db 5bh,3fh,06h,7dh,5bh, 06h,4fh,07h,4fh,5bh table:db 3fh,06h,5bh,4fh,66h,6dh,7dh, 07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h EN
|