app.inc

来自「本人编写的无线电话程序,给予PIC18C801设计,包括了uCOS的移植以及菜单」· INC 代码 · 共 87 行

INC
87
字号
;Macros
;PUSH & POP process in low level interrupt
lpush_all macro 
	movff	STATUS,PREINC1		;STATUS
	movff	BSR,PREINC1			;BSR
	movwf	PREINC1,0			;WREG
	movff	FSR2H,PREINC1		;FSR2H
	movff	FSR2L,PREINC1		;FSR2L
	movff	FSR0H,PREINC1		;FSR0H
	movff	FSR0L,PREINC1		;FSR0L
	movff	PRODH,PREINC1		;PRODH
	movff	PRODL,PREINC1		;PRODL
	movff	TBLPTRU,PREINC1		;TBLPTRU
	movff	TBLPTRH,PREINC1		;TBLPTRH
	movff	TBLPTRL,PREINC1		;TBLPTRL
	movff	TABLAT,PREINC1		;TABLAT
	movff	PCLATH,PREINC1		;PCLATH
	movff	PCLATU,PREINC1		;PCLATU
	movf	POSTINC1,0x01,0		;FSR1L++
	;
	;Save 0x2B Registers in BANK-0 from 0x000-0x02A
	clrf	FSR0H,0
	clrf	FSR0L,0
	movlw	SAVE_BANK0_PUSH_NUM
IntPushRegsInBank0:
	movff	POSTINC0,POSTINC1
	decf	WREG,0
	bnz		IntPushRegsInBank0
	endm
;===================================================
lpop_all macro
	movf	POSTDEC1,0x01,0		;FSR1L--
	clrf	FSR0H,0
	movlw	SAVE_BANK0_PUSH_END
	movwf	FSR0L,0
	movlw	SAVE_BANK0_PUSH_NUM-1	;except the last,to avoid under-stack
IntPopRegsInBank0:
	movff	POSTDEC1,POSTDEC0
	decf	WREG,0
	bnz		IntPopRegsInBank0
	movff	POSTDEC1,INDF0
	;
	movff	POSTDEC1,PCLATU		;PCLATU
	movff	POSTDEC1,PCLATH		;PCLATH
	movff	POSTDEC1,TABLAT
	movff	POSTDEC1,TBLPTRL
	movff	POSTDEC1,TBLPTRH
	movff	POSTDEC1,TBLPTRU
	movff	POSTDEC1,PRODL
	movff	POSTDEC1,PRODH
	movff	POSTDEC1,FSR0L
	movff	POSTDEC1,FSR0H
	movff	POSTDEC1,FSR2L
	movff	POSTDEC1,FSR2H
	movf	POSTDEC1,0x00,0
	movff	POSTDEC1,BSR
	movff	POSTDEC1,STATUS
	endm

;PUSH & POP process in high level interrupt
;Saved reg: WREG, STATUS, BSR, TABLAT, TBLTRX
;Thus, no local variables can be used in the high level INT
hpush_all macro 
	movff	WREG, WREG_SAVE	
	movff	STATUS, STATUS_SAVE	
	movff	BSR, BSR_SAVE	
	movff	TABLAT, TABLAT_SAVE
	movff	TBLPTRL, TBLPTRL_SAVE
	movff	TBLPTRH, TBLPTRH_SAVE
	movff	TBLPTRU, TBLPTRU_SAVE
	;movff	PCLATH,	PCLATH_SAVE
	;movff	PCLATU,	PCLATU_SAVE
	endm

hpop_all macro
	;movff	PCLATU_SAVE, PCLATU
	;movff	PCLATH_SAVE, PCLATH
	movff	TBLPTRU_SAVE, TBLPTRU
	movff	TBLPTRH_SAVE, TBLPTRH
	movff	TBLPTRL_SAVE, TBLPTRL
	movff	TABLAT_SAVE, TABLAT
	movff	BSR_SAVE, BSR
	movff	STATUS_SAVE, STATUS
	movff	WREG_SAVE, WREG
	endm

⌨️ 快捷键说明

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