di2730.txt ;*************************************************************************************************** ; LISTING 1 - FIVE-PRIORITY-LEVEL INTERRUPT SYSTEM FOR 8051P ; ; "Software makes full use of 8051's interrupt system," EDN, Dec 6, 2001, pg 111. ; ;*************************************************************************************************** ORG 0000H LJMP START ORG 0003H LJMP INT0 ORG 000BH LJMP IT0 ORG 0013H LJMP INT1 ORG 001BH LJMP IT1 ORG 0023H LJMP INTP START: MOV SP, #60H MOV IF, #9FH MOV IP, #03H SJMP $ INT0: . ;INT0 interrupt service program . . RETI IT0: PUSH DPL ; IT0 interrupt service program PUSH DPH MOV DPTR, #True_IT0 PUSH DPL PUSH DPH ANL IP, #100000011B RETI ;pseudo-RETI True_IT0: . . . POP DPH POP DPL ORL IP, #00011100B RETI INT1: . ; INT1 interrupt service program . . RETI IT1: PUSH DPL ;IT1 interrupt service program PUSH DPH MOV DPTR, #True_IT1 PUSH DPL PUSH DPH CLR PS ;”pseudo-RETI” RETI True_IT1: . . . POP DPH POP DPL SETB PS RETI INTP: PUSH DPL ;Serial port interrupt service program PUSH DPH MOV DPTR, #SPINT PUSH DPL PUSH DPH RETI SPINT: . . . POP DPH POP DSL RETI