⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 interrupt.lst

📁 本人编写的无线电话程序,给予PIC18C801设计,包括了uCOS的移植以及菜单,自己设计的拼音注入法,完整地一级汉字库,希望对大家有所帮助
💻 LST
📖 第 1 页 / 共 3 页
字号:
MPASM 03.50 Released                            INTERRUPT.ASM   7-16-2003  20:27:48         PAGE  1


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00001 #include p18c801.inc
                      00001         LIST
                      00002 ; P18C801.INC  Standard Header File, Version 0.01   Microchip Technology, Inc.
                      00792         LIST
                      00002 #include app.inc
                      00001 ;Macros
                      00002 ;PUSH & POP process in low level interrupt
                      00003 lpush_all macro 
                      00004         movff   STATUS,PREINC1          ;STATUS
                      00005         movff   BSR,PREINC1                     ;BSR
                      00006         movwf   PREINC1,0                       ;WREG
                      00007         movff   FSR2H,PREINC1           ;FSR2H
                      00008         movff   FSR2L,PREINC1           ;FSR2L
                      00009         movff   FSR0H,PREINC1           ;FSR0H
                      00010         movff   FSR0L,PREINC1           ;FSR0L
                      00011         movff   PRODH,PREINC1           ;PRODH
                      00012         movff   PRODL,PREINC1           ;PRODL
                      00013         movff   TBLPTRU,PREINC1         ;TBLPTRU
                      00014         movff   TBLPTRH,PREINC1         ;TBLPTRH
                      00015         movff   TBLPTRL,PREINC1         ;TBLPTRL
                      00016         movff   TABLAT,PREINC1          ;TABLAT
                      00017         movff   PCLATH,PREINC1          ;PCLATH
                      00018         movff   PCLATU,PREINC1          ;PCLATU
                      00019         movf    POSTINC1,0x01,0         ;FSR1L++
                      00020         ;
                      00021         ;Save 0x2B Registers in BANK-0 from 0x000-0x02A
                      00022         clrf    FSR0H,0
                      00023         clrf    FSR0L,0
                      00024         movlw   SAVE_BANK0_PUSH_NUM
                      00025 IntPushRegsInBank0:
                      00026         movff   POSTINC0,POSTINC1
                      00027         decf    WREG,0
                      00028         bnz             IntPushRegsInBank0
                      00029         endm
                      00030 ;===================================================
                      00031 lpop_all macro
                      00032         movf    POSTDEC1,0x01,0         ;FSR1L--
                      00033         clrf    FSR0H,0
                      00034         movlw   SAVE_BANK0_PUSH_END
                      00035         movwf   FSR0L,0
                      00036         movlw   SAVE_BANK0_PUSH_NUM-1   ;except the last,to avoid under-stack
                      00037 IntPopRegsInBank0:
                      00038         movff   POSTDEC1,POSTDEC0
                      00039         decf    WREG,0
                      00040         bnz             IntPopRegsInBank0
                      00041         movff   POSTDEC1,INDF0
                      00042         ;
                      00043         movff   POSTDEC1,PCLATU         ;PCLATU
                      00044         movff   POSTDEC1,PCLATH         ;PCLATH
                      00045         movff   POSTDEC1,TABLAT
                      00046         movff   POSTDEC1,TBLPTRL
                      00047         movff   POSTDEC1,TBLPTRH
                      00048         movff   POSTDEC1,TBLPTRU
MPASM 03.50 Released                            INTERRUPT.ASM   7-16-2003  20:27:48         PAGE  2


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00049         movff   POSTDEC1,PRODL
                      00050         movff   POSTDEC1,PRODH
                      00051         movff   POSTDEC1,FSR0L
                      00052         movff   POSTDEC1,FSR0H
                      00053         movff   POSTDEC1,FSR2L
                      00054         movff   POSTDEC1,FSR2H
                      00055         movf    POSTDEC1,0x00,0
                      00056         movff   POSTDEC1,BSR
                      00057         movff   POSTDEC1,STATUS
                      00058         endm
                      00059 
                      00060 ;PUSH & POP process in high level interrupt
                      00061 ;Saved reg: WREG, STATUS, BSR, TABLAT, TBLTRX
                      00062 ;Thus, no local variables can be used in the high level INT
                      00063 hpush_all macro 
                      00064         movff   WREG, WREG_SAVE 
                      00065         movff   STATUS, STATUS_SAVE     
                      00066         movff   BSR, BSR_SAVE   
                      00067         movff   TABLAT, TABLAT_SAVE
                      00068         movff   TBLPTRL, TBLPTRL_SAVE
                      00069         movff   TBLPTRH, TBLPTRH_SAVE
                      00070         movff   TBLPTRU, TBLPTRU_SAVE
                      00071         ;movff  PCLATH, PCLATH_SAVE
                      00072         ;movff  PCLATU, PCLATU_SAVE
                      00073         endm
                      00074 
                      00075 hpop_all macro
                      00076         ;movff  PCLATU_SAVE, PCLATU
                      00077         ;movff  PCLATH_SAVE, PCLATH
                      00078         movff   TBLPTRU_SAVE, TBLPTRU
                      00079         movff   TBLPTRH_SAVE, TBLPTRH
                      00080         movff   TBLPTRL_SAVE, TBLPTRL
                      00081         movff   TABLAT_SAVE, TABLAT
                      00082         movff   BSR_SAVE, BSR
                      00083         movff   STATUS_SAVE, STATUS
                      00084         movff   WREG_SAVE, WREG
                      00085         endm
                      00086 
                      00003 #define         SAVE_BANK0_PUSH_END                     0x37;0x2A                                       
                            ;0x000~~0x02A
                      00004 #define         SAVE_BANK0_PUSH_NUM                     SAVE_BANK0_PUSH_END+1
                      00005 
                      00006 ;GLOBAL HighLevelIsr
                      00007 
  0000                00008 EXTERN  OSIntNesting
  0000                00009 EXTERN  LowLevelIntProc
  0000                00010 EXTERN  OSTimeTick
  0000                00011 EXTERN  Func_Receive_ISR
                      00012 ;EXTERN Timer1ISR
  0000                00013 EXTERN  OSIntExit
  0000                00014 EXTERN intvec_h
  0000                00015 EXTERN intvec_l
                      00016 ;Buffer left to save necessary registers 
MPASM 03.50 Released                            INTERRUPT.ASM   7-16-2003  20:27:48         PAGE  3


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00017 ASMDATA UDATA ;0x080
000000                00018         PCLATH_SAVE     RES     1
000001                00019         PCLATU_SAVE     RES     1
000002                00020         TBLPTRU_SAVE    RES     1
000003                00021         TBLPTRH_SAVE    RES     1
000004                00022         TBLPTRL_SAVE    RES     1
000005                00023         TABLAT_SAVE             RES     1
000006                00024         WREG_SAVE               RES 1
000007                00025         BSR_SAVE                RES 1
000008                00026         STATUS_SAVE             RES 1
                      00027 
                      00028 ;The entry to low priority interrupt
                      00029 LowInterruptVector      org             0x18
000018 EF?? F???      00030         goto    LowInterruptHandler
                      00031 
                      00032 ;The entry to high priority interrupt
                      00033 HighInterruptVector     org             0x08
000008 EF?? F???      00034         goto    HighInterruptHandler
                      00035 ;========================================================
                      00036 ASMCODE CODE
                      00037 ;=======================================================
                      00038 ;Code begin here
000000                00039 LowInterruptHandler
                      00040         lpush_all
000000 CFD8 FFE4          M         movff   STATUS,PREINC1          ;STATUS
000004 CFE0 FFE4          M         movff   BSR,PREINC1                     ;BSR
000008 6EE4               M         movwf   PREINC1,0                       ;WREG
00000A CFDA FFE4          M         movff   FSR2H,PREINC1           ;FSR2H
00000E CFD9 FFE4          M         movff   FSR2L,PREINC1           ;FSR2L
000012 CFEA FFE4          M         movff   FSR0H,PREINC1           ;FSR0H
000016 CFE9 FFE4          M         movff   FSR0L,PREINC1           ;FSR0L
00001A CFF4 FFE4          M         movff   PRODH,PREINC1           ;PRODH
00001E CFF3 FFE4          M         movff   PRODL,PREINC1           ;PRODL
000022 CFF8 FFE4          M         movff   TBLPTRU,PREINC1         ;TBLPTRU
000026 CFF7 FFE4          M         movff   TBLPTRH,PREINC1         ;TBLPTRH
00002A CFF6 FFE4          M         movff   TBLPTRL,PREINC1         ;TBLPTRL
00002E CFF5 FFE4          M         movff   TABLAT,PREINC1          ;TABLAT
000032 CFFA FFE4          M         movff   PCLATH,PREINC1          ;PCLATH
000036 CFFB FFE4          M         movff   PCLATU,PREINC1          ;PCLATU
00003A 52E6               M         movf    POSTINC1,0x01,0         ;FSR1L++
                          M         ;
                          M         ;Save 0x2B Registers in BANK-0 from 0x000-0x02A
00003C 6AEA               M         clrf    FSR0H,0
00003E 6AE9               M         clrf    FSR0L,0
000040 0E38               M         movlw   SAVE_BANK0_PUSH_NUM
000042                    M IntPushRegsInBank0:
000042 CFEE FFE6          M         movff   POSTINC0,POSTINC1
000046 04E8               M         decf    WREG,0
000048 E1??               M         bnz             IntPushRegsInBank0
                      00041 
00004A 01??           00042         MOVLB   high OSIntNesting
00004C 2B00           00043         incf    OSIntNesting,0x01,1
                      00044         ;===================================================
MPASM 03.50 Released                            INTERRUPT.ASM   7-16-2003  20:27:48         PAGE  4


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00045         ;Process all the low level interrupt except for TMR1
00004E EC?? F???      00046         call    LowLevelIntProc 
                      00047         ;===================================================
000052                00048 TIMER1_INT:
000052 A09E           00049         BTFSS   PIR1,TMR1IF,0                   ;0:TMR1IF. Skip if "1"
000054 D???           00050         bra             Restore_REGS
000056 909E           00051         bcf             PIR1,0,0                        ;PIR1bits.TMR1IF=0;
                      00052 
000058 CFCE FFF3      00053         movff   TMR1L,PRODL
00005C CFCF FFF4      00054         movff   TMR1H,PRODH
000060 0EA0           00055         movlw   0xA0
000062 26F3           00056         addwf   PRODL,0x01,0
000064 0EFB           00057         movlw   0xFB
000066 22F4           00058         addwfc  PRODH,0x01,0
                      00059         
000068 CFF4 FFCF      00060         movff   PRODH,TMR1H
00006C CFF3 FFCE      00061         movff   PRODL,TMR1L
000070 EC?? F???      00062         call    OSTimeTick
                      00063         ;Call other service for TMR1. For its vector is the first one,
                      00064         ; its ISR can be called like this
000074 D???           00065         bra             e1
000076                00066 e0:
000076 C??? FFFB      00067         movff   intvec_l+2, PCLATU
00007A C??? FFFA      00068         movff   intvec_l+1, PCLATH
00007E 0100           00069         movlb   0
000080 5100           00070         movf    intvec_l, 0, 0x1
000082 6EF9           00071         movwf   PCL,0
000084                00072 e1:
000084 D???           00073         rcall   e0
                      00074 
                      00075 
000086                00076 Restore_REGS:
000086 EC?? F???      00077         call    OSIntExit
                      00078         lpop_all
00008A 52E5               M         movf    POSTDEC1,0x01,0         ;FSR1L--
00008C 6AEA               M         clrf    FSR0H,0
00008E 0E37               M         movlw   SAVE_BANK0_PUSH_END
000090 6EE9               M         movwf   FSR0L,0
000092 0E37               M         movlw   SAVE_BANK0_PUSH_NUM-1   ;except the last,to avoid under-stack
000094                    M IntPopRegsInBank0:
000094 CFE5 FFED          M         movff   POSTDEC1,POSTDEC0
000098 04E8               M         decf    WREG,0
00009A E1??               M         bnz             IntPopRegsInBank0
00009C CFE5 FFEF          M         movff   POSTDEC1,INDF0
                          M         ;
0000A0 CFE5 FFFB          M         movff   POSTDEC1,PCLATU         ;PCLATU
0000A4 CFE5 FFFA          M         movff   POSTDEC1,PCLATH         ;PCLATH
0000A8 CFE5 FFF5          M         movff   POSTDEC1,TABLAT
0000AC CFE5 FFF6          M         movff   POSTDEC1,TBLPTRL
0000B0 CFE5 FFF7          M         movff   POSTDEC1,TBLPTRH
0000B4 CFE5 FFF8          M         movff   POSTDEC1,TBLPTRU
0000B8 CFE5 FFF3          M         movff   POSTDEC1,PRODL
0000BC CFE5 FFF4          M         movff   POSTDEC1,PRODH
MPASM 03.50 Released                            INTERRUPT.ASM   7-16-2003  20:27:48         PAGE  5


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0000C0 CFE5 FFE9          M         movff   POSTDEC1,FSR0L
0000C4 CFE5 FFEA          M         movff   POSTDEC1,FSR0H
0000C8 CFE5 FFD9          M         movff   POSTDEC1,FSR2L
0000CC CFE5 FFDA          M         movff   POSTDEC1,FSR2H
0000D0 50E5               M         movf    POSTDEC1,0x00,0
0000D2 CFE5 FFE0          M         movff   POSTDEC1,BSR
0000D6 CFE5 FFD8          M         movff   POSTDEC1,STATUS
0000DA 0010           00079         retfie 0
                      00080 
0000DC                00081 HighInterruptHandler
                      00082         hpush_all
0000DC CFE8 F???          M         movff   WREG, WREG_SAVE 
0000E0 CFD8 F???          M         movff   STATUS, STATUS_SAVE     
0000E4 CFE0 F???          M         movff   BSR, BSR_SAVE   
0000E8 CFF5 F???          M         movff   TABLAT, TABLAT_SAVE
0000EC CFF6 F???          M         movff   TBLPTRL, TBLPTRL_SAVE
0000F0 CFF7 F???          M         movff   TBLPTRH, TBLPTRH_SAVE
0000F4 CFF8 F???          M         movff   TBLPTRU, TBLPTRU_SAVE
                          M         ;movff  PCLATH, PCLATH_SAVE
                          M         ;movff  PCLATU, PCLATU_SAVE
0000F8 EC?? F???      00083         call    Func_Receive_ISR
                      00084 
                      00085 ;       bra             h1
                      00086 ;h0:
                      00087 ;       movff   intvec_h+2, PCLATU
                      00088 ;       movff   intvec_h+1, PCLATH
                      00089 ;       movlb   0
                      00090 ;       movf    intvec_h, 0, 0x1
                      00091 ;       movwf   PCL,0
                      00092 ;h1:
                      00093 ;       rcall   h0
                      00094         hpop_all
                          M         ;movff  PCLATU_SAVE, PCLATU
                          M         ;movff  PCLATH_SAVE, PCLATH
0000FC C??? FFF8          M         movff   TBLPTRU_SAVE, TBLPTRU
000100 C??? FFF7          M         movff   TBLPTRH_SAVE, TBLPTRH
000104 C??? FFF6          M         movff   TBLPTRL_SAVE, TBLPTRL
000108 C??? FFF5          M         movff   TABLAT_SAVE, TABLAT
00010C C??? FFE0          M         movff   BSR_SAVE, BSR
000110 C??? FFD8          M         movff   STATUS_SAVE, STATUS
000114 C??? FFE8          M         movff   WREG_SAVE, WREG
000118 0010           00095         retfie 0
                      00096 ;=======================================================
                      00097         END
MPASM 03.50 Released                            INTERRUPT.ASM   7-16-2003  20:27:48         PAGE  6


SYMBOL TABLE
  LABEL                             VALUE 

A                                 00000000
A16                               00000000
A17                               00000001
A18                               00000002
A19                               00000003
ACCESS                            00000000
ACKDT                             00000005
ACKEN                             00000004
ACKSTAT                           00000006
AD0                               00000000
AD1                               00000001
AD10                              00000002
AD11                              00000003
AD12                              00000004
AD13                              00000005
AD14                              00000006
AD15                              00000007
AD2                               00000002
AD3                               00000003

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -