导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→帮忙简单看看![snow]

 *第13857篇: 帮忙简单看看!

  
楼 主:snow 2003年6月26日10:51
 帮忙简单看看!
下面这段代码能实现中断嵌套吗?
我想在执行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

  
2楼:tm1300 2003年6月26日12:28
 不看你的程序了,一般只要定义中断优先级就可以
在低优先级中断过程中可以优先响应高优先级的中断。将你的串口中断
定义为高优先级的中断
  
3楼:hanchi 2003年6月26日12:44
 將串口中斷優先級設置成高于外部中斷1
將串口中斷優先級設置成高于外部中斷1
  
4楼:guest 2003年6月26日13:54
 热:
朋友:别瞎忙活了;听过中断里面套中断吗!??合理吗!单片几不是语言编译器。不是符合逻辑的都行!!!
  
5楼:alvinyang 2003年6月27日16:13
 说什么呢哥们
当然可以嵌套了
我都套过n次了
  
6楼:hanchi 2003年6月26日19:54
 51里面允許兩級中斷,
你用51?

51里面允許兩級中斷,
你用51?
  
7楼:snow 2003年6月27日14:18
 问题已经解决了,谢谢各位的建议!
我也不知道问题产生的原因.但是已经解决了,谢谢各位!

>>>>>>对该主题发表你的看法

本主题贴数7,分页: [第1页]


[上一篇主题]:声码器DSP汇编算法外卖!

[下一篇主题]:w78e516多少钱能买到?