帮忙简单看看!
下面这段代码能实现中断嵌套吗?
我想在执行INT1时可以进串口中断
IP=0F0H
可是两种中断无法共存,这是为什么?ORG 0000H
LJMP INITIAL
ORG 0013H
LJMP INTER1
ORG 0023H
LJMP UARTI
ORG 0030H
TAB1: DB 88H,98H,84H,94H,8CH,9CH,82H,92H, 0B0H,0A8H,0B8H,0A4H,0B4H,0ACH,0BCH,0A2H,0BCH
TAB2: DB 0C8H,0D8H,0C4H,0D4H,0CCH,0DCH,0C2H,0D2H, 0F0H,0E8H,0F8H,0E4H,0F4H,0ECH,0FCH,0E2H,0BDH
;FLAG EQU 00H
INITIAL:
MOV SP,#7FH
MOV PCON,#00H
MOV SCON,#50H
MOV TMOD,#20H
MOV TH1,#0FDH
MOV TL1,#0FDH
MOV IP,#0F0H
SETB TR1
SETB P2.0
;SETB P2.1
; NOP
;CLR P2.0
;MOV P0,#0BFH
;CLR FLAG
CLR P3.5
SETB EA
SETB EX1
SETB ES
MAIN:
CLR P2.0
MOV P0,#0BFH
MAIN1:
MOV R2,#20
DOG:
;JB FLAG,CLRWAR
;CPL P3.5
CPL P3.4
LCALL DELAY
DJNZ R2,DOG
CPL P3.5
LJMP MAIN1
;SJMP DOG
;CLRWAR:
;CLR P2.0
;MOV P0,#0BFH
;CPL P3.4
;CPL P3.5
;CLR FLAG
;SJMP DOG
INTER1:
CLR EA
CLR ES
CLR EX1
PUSH ACC
PUSH PSW
SETB EA
SETB ES
MOV A,#0FFH
MOV SBUF,A
SEND:
CPL P3.4
JBC TI,SEND1
SJMP SEND
SEND1:
CLR P2.0
CLEARWAR:
CPL P3.4
MOV P0,#0FFH
JJJ:
JNB P3.3,CLL
; SETB P2.0
;SETB FLAG
LJMP EXIT1
CLL:
LCALL DELAY
CPL P3.4
LCALL DELAY
CPL P3.4
LCALL DELAY
CPL P3.4
LCALL DELAY
CPL P3.4
LCALL DELAY
CPL P3.4
CPL P3.5
LJMP JJJ
EXIT1:
MOV P0,#0BFH;;;;;;;;;;;;;00000000000;;;;;;;;;;
CLR EA
CLR ES
;CLR EX1
POP PSW
POP ACC
;SETB P2.0
SETB EA
SETB EX1
SETB ES
RETI
UARTI:
CLR EA
CLR EX1
CLR ES
; MOV R6,#0FFH
MOV R7,#10
UART1:
CPL P3.4
JBC RI,RECEIVE
U1:
CPL P3.4
MOV R6,#0FFH
U2:
DJNZ R6,U2
DJNZ R7,U1
LJMP EXITU
RECEIVE:
MOV A,SBUF
CJNE A,#0AAH,RRNEXT
LCALL LOOPHERE
LJMP EXITU
RRNEXT:
CJNE A,#0BBH,EXITU
LCALL LOOPFAR
EXITU:
POP PSW
POP ACC
SETB EA
SETB EX1
SETB ES
RETI
DELAY:
MOV R3,#200
DL1:
MOV R4,#50
DL2:
CPL P3.4
DJNZ R4,DL2
DJNZ R3,DL1
CPL P3.4
;CPL P3.5
RET
LOOPHERE:
CWAIT:
CPL P3.4
JBC RI,CWAITT1
SJMP CWAIT
CWAITT1:
MOV A,SBUF
CJNE A,P1,RETURN1
CWAIT1:
CPL P3.4
JBC RI,CWAITT2
SJMP CWAIT1
CWAITT2:
MOV A,SBUF
MOV R1,A
SUBB A,#11H
JNC LCAST
MOV A,R1
;NOP;;;;;;;;;;;;;
;MOV A,#01H;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV DPTR,#TAB1
MOVC A,@A+DPTR
CLR P2.0
MOV P0,A
; NOP
WLOOPF:
CPL P3.4
JBC RI,WLOOPF1
SJMP WLOOPF
WLOOPF1:
MOV A,SBUF
CJNE A,#0CCH,WLOOPF
MOV P0,#0BFH
CPL P3.4
RET
;SETB P2.0
RETURN1:
MOV A,#0CCH
MOV SBUF,A
RETURN2:
CPL P3.4
JBC TI,RETURN3
SJMP RETURN2
RETURN3:
RET
LCAST:
LCALL CAST
RET
LOOPFAR:
CWAIT2:
CPL P3.4
JBC RI,CWAITT4
SJMP CWAIT2
CWAITT4:
MOV A,SBUF
CJNE A,P1,RETURN4
CWAIT3:
CPL P3.4
JBC RI,CWAIT5
SJMP CWAIT3
CWAIT5:
MOV A,SBUF
MOV R1,A
SUBB A,#11H
JNC LCAST1
MOV A,R1
MOV DPTR,#TAB2
MOVC A,@A+DPTR
CLR P2.0
MOV P0,A
WLOOPF2:
CPL P3.4
JBC RI,WLOOPF3
SJMP WLOOPF2
WLOOPF3:
MOV A,SBUF
CJNE A,#0CCH,WLOOPF2
MOV P0,#0BFH
;SETB P2.0
CPL P3.4
RET
RETURN4:
MOV A,#0CCH
MOV SBUF,A
RETURN5:
CPL P3.4
JBC TI,RETURN6
SJMP RETURN5
RETURN6:
RET
LCAST1:
LCALL CAST
RET
CAST:
CPL P3.4
MOV A,#0EEH
MOV SBUF,A
CAST1:
CPL P3.4
JBC TI,CAST2
SJMP CAST1
CAST2:
RET
END
发表时间:2003年6月26日10:51:36