;========================================================================================================== ; ; Wingman MainMotorDriver copyright 2005 v1.0 (2005-04-16) ; ; Name: Christoffer Martinsson ; E-mail: cm@wsm.se ; ; ;========================================================================================================== include P16F684.INC W_TEMP EQU 0x20 ; TempRegister STATUS_TEMP EQU 0x21 ; TempRegister PPM_ValueH EQU 0x22 PPM_ValueL EQU 0x23 PulseInH EQU 0x24 PulseInL EQU 0x25 ;========================================================================================================== ; Reset- and Interrupt-vectors ;========================================================================================================== ORG 0x0000 GOTO Main ;Reset-vector ORG 0x0004 GOTO Interrupt ;Interrupt-vector ;========================================================================================================== ; Macro ;========================================================================================================== ;---------------------------------------------------------------------------------------------------------- ; StoreWregInTemp ; ; Description: Store Status and working-register in temp-registers ; ; Input: - ; ChangedReg: - ; UsedReg: W,STATUS,W_TEMP,STATUS_TEMP ;---------------------------------------------------------------------------------------------------------- StoreWregInTemp MACRO MOVWF W_TEMP ;Copy W to TEMP register SWAPF STATUS,W ;Swap status to be saved into W CLRF STATUS ;bank 0, regardless of current bank, Clears IRP,RP1,RP0 MOVWF STATUS_TEMP ;Save status to bank zero STATUS_TEMP register ENDM ;---------------------------------------------------------------------------------------------------------- ; RestoreWregFromTemp ; ; Description: Restore Status and working-register from temp-registers ; ; Input: - ; ChangedReg: W,STATUS ; UsedReg: W,STATUS,W_TEMP,STATUS_TEMP ;---------------------------------------------------------------------------------------------------------- RestoreWregFromTemp MACRO SWAPF STATUS_TEMP,W ;Swap STATUS_TEMP register into W (sets bank to original state) MOVWF STATUS ;Move W into Status register SWAPF W_TEMP,F ;Swap W_TEMP SWAPF W_TEMP,W ;Swap W_TEMP into W ENDM ;---------------------------------------------------------------------------------------------------------- ; Compare16 ; ; Description: Compare two 16bit-registers if Reg1=Reg2 then Z=1. ; if Reg1