在主程序中通过P1口在数码管循环显示十六进制数0~F(或倒序显示十进制数9~0);外部中断通过INT1和INT0输入,由按键输入,下降沿有效,INT1为高优先级,INT0为普通优先级,在INT0中断服务程序中在P2口实现闪烁灯功能,闪烁十遍后结束,在INT1中断服务程序中在P0口显示自己的学号。要求演示高优先级可中断低优先级,而低优先级不能中断高优先级的效果。 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
|