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

📄 os_18c801_a.lst

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


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00001 ;*******************************************************************************************************
                            *
                      00002 ;                                               uC/OS-II
                      00003 ;                                         The Real-Time Kernel
                      00004 ;
                      00005 ;                                                          Jean J. Labrosse
                      00006 ;
                      00007 ;                                       Microchip PIC18C801 Specific code
                      00008 ;
                      00009 ;
                      00010 ; File : OS_18C801_A.ASM
                      00011 ; By   : Weiming Zhang
                      00012 ; Data : Nov 30,2002
                      00013 ;*******************************************************************************************************
                            *
                      00014 
                      00015 #include p18c801.inc
                      00001         LIST
                      00002 ; P18C801.INC  Standard Header File, Version 0.01   Microchip Technology, Inc.
                      00792         LIST
                      00016 #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--
MPASM 03.50 Released                          OS_18C801_A.ASM   7-16-2003  20:27:32         PAGE  2


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      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
                      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
MPASM 03.50 Released                          OS_18C801_A.ASM   7-16-2003  20:27:32         PAGE  3


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00086 
                      00017 
                      00018 ;0x000~0x02A ----> Push to the system stack
                      00019 ;0x02B~0x02F ----> Move to external RAM directly
                      00020 ;Ext_Stack_Base                                         ~ Ext_Stack_Base+SAVE_BANK0_START-1             
                            ----> Save the content of the hardware stack
                      00021 ;Ext_Stack_Base+SAVE_BANK0_START        ~ Ext_Stack_Base+EXT_SOFT_STK_SHIFT-1   ----> Save GPRs in BANK0
                      00022 ;Ext_Stack_Base+EXT_SOFT_STK_SHIFT      ~ Ext_Stack_Top                                                 
                            ----> Save the system stack
                      00023 
                      00024 #define         EXT_SOFT_STK_SHIFT      0x60
                      00025 #define         SAVE_BANK0_PUSH_END                     0x37;0x2A                                       
                            ;0x000~~0x02A
                      00026 #define         SAVE_BANK0_PUSH_NUM                     SAVE_BANK0_PUSH_END+1
                      00027 
                      00028 #define         TASK_HD_STK_PTR         3                                       ;hardware stack pointer:
                             
                      00029                                                                                                         
                            ;0->empty;1->main()'s caller;  2->OSStart()'s; 3->OSStartHighRdy()'s
                      00030 
                      00031 ;(0x000)~~(SAVE_BANK0_START-1) pushed to system stack
                      00032 ;(SAVE_BANK0_START)~~(SAVE_BANK0_END) saved in external RAM
                      00033 
                      00034 
                      00035 ;---------------- Modified if neccessary below ---------------------------------------------------------
                            -
                      00036 ;#define                HDSTK_ONCHIP_EN
                      00037 ;MAX_TASKS                              EQU             0x10    ;16 tasks at total
                      00038 ;TASK_STK_BASE_ONCHIP_H EQU             0x01    ;OnChip soft-stack address: 0x100--...
                      00039 ;TASK_STK_BASE_ONCHIP_L EQU             0x00
                      00040 ;TASK_HD_STK_PTR                        EQU             3               ;hardware stack pointer: 
                      00041                                                                                 ;0->empty;1->main()'s ca
                            ller;  2->OSStart()'s; 3->OSStartHighRdy()'s
                      00042 ;---------------- Modified if neccessary above ---------------------------------------------------------
                            -
                      00043 
                      00044 
                      00045 ;EXT_HDSTK_ADDR_SHIFT   EQU             0xC0
                      00046 ;SFSTK_DEPTH_ADDR_SHIFT EQU             0x18    ;shift_address of GPRs' depth
                      00047 ;HDSTK_DEPTH_ADDR_SHIFT EQU             0x19    ;shift_address of Hardware-stack's depth
                      00048 
                      00049 ;MAX_ONCHIP_STACK_SFR   EQU             0x1A    ;26
                      00050 ;MAX_ONCHIP_STACK_SIZE  EQU             0x1A    ;26
                      00051 
                      00052 
                      00053 
                      00054 ;GLOBAL OSTickISR
                      00055         ;GLOBAL LowInterruptHandler
  0000                00056         GLOBAL OSStartHighRdy
  0000                00057         GLOBAL OSCtxSw
  0000                00058         GLOBAL OSIntCtxSw
                      00059 ;            EXTERN  _OSIntExit:FAR
                      00060 ;            EXTERN  _OSTimeTick:FAR
MPASM 03.50 Released                          OS_18C801_A.ASM   7-16-2003  20:27:32         PAGE  4


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00061 ;            EXTERN  _OSTaskSwHook:FAR
                      00062             
                      00063 ;            EXTERN  _OSIntNesting:BYTE
                      00064 ;                        EXTERN  _OSTickDOSCtr:BYTE
                      00065 ;EXTERN OSTCBCurSn              ;Only used by myself (Weiming Zhang).
                      00066         ;EXTERN TxIntISR
  0000                00067         EXTERN  WriteTimer1
  0000                00068         EXTERN  OSTimeTick
  0000                00069         EXTERN  OSIntExit
                      00070         ;EXTERN TimerISR
                      00071         
                      00072         ;EXTERN Func_Transmit_ISR
                      00073         ;EXTERN Func_INT2_ISR
                      00074         ;EXTERN Func_TMR0_ISR
                      00075         ;EXTERN Func_RB_ISR
                      00076         ;EXTERN Func_TMR2_ISR
                      00077         
  0000                00078         EXTERN  pCurRxTail
                      00079         ;EXTERN intCurRxNum
  0000                00080         EXTERN  Func_Receive_ISR
                      00081 ;       EXTERN  TickPostSem
                      00082 ;       EXTERN  OSIntEnter
                      00083 
                      00084 
  0000                00085         EXTERN  OSPrioHighRdy,OSPrioCur
  0000                00086         EXTERN  OSTCBHighRdy,OSTCBCur
                      00087         ;Pay attention! 
                      00088         ;If OSPrioCur,OSTCBHighRdy and OSTCBCur have the save "BSR" value???
  0000                00089         EXTERN  StackDepth                                              ;Only used by myself (Weiming Zh
                            ang)
  0000                00090         EXTERN  OSSysStkBase;                                   ;Only used by myself (Weiming Zhang)
  0000                00091         EXTERN  OSRunning
  0000                00092         EXTERN  OSIntNesting
                      00093 
                      00094 ;*******************************************************************************************************
                            **
                      00095 ;                                          START MULTITASKING
                      00096 ;                                       void OSStartHighRdy(void)
                      00097 ;
                      00098 ; The stack frame is assumed to look as follows:
                      00099 ;
                      00100 ; OSTCBHighRdy->OSTCBStkPtr --> [FSR2H]                               (high memory)
                      00101 ;                               [FSR2L]
                      00102 ;                               [FSR1H]
                      00103 ;                               [FSR1L]
                      00104 ;                               [FSR0H]
                      00105 ;                               [FSR0L]
                      00106 ;                               [STKPTR]
                      00107 ;                               [BSR]
                      00108 ;                               [WREG]
                      00109 ;                               upper address of task code address(interrupt return address)
                      00110 ;                               high address of task code address(interrupt return address)
                      00111 ;                               low address of task code address(interrupt return address)
MPASM 03.50 Released                          OS_18C801_A.ASM   7-16-2003  20:27:32         PAGE  5


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00112 ;                               [STATUS]
                      00113 ;                               upper address of task code address
                      00114 ;                               high address of task code address
                      00115 ;                               low address of task code address
                      00116 ;                               upper address of 'pdata'
                      00117 ;                               high address of 'pdata'
                      00118 ;                               low address of 'pdata'               (low memory)
                      00119 ;
                      00120 ; Note : OSStartHighRdy() MUST:

⌨️ 快捷键说明

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