840 lines
49 KiB
Plaintext
Executable File
840 lines
49 KiB
Plaintext
Executable File
MPASM 5.02 MAINMOTORDRIVER.ASM 3-29-2006 0:37:12 PAGE 1
|
||
|
||
|
||
LOC OBJECT CODE LINE SOURCE TEXT
|
||
VALUE
|
||
|
||
00001 ;=======================================================================================================
|
||
===
|
||
00002 ;
|
||
00003 ; Wingman MainMotorDriver copyright 2005
|
||
v1.0 (2005-04-22)
|
||
00004 ;
|
||
00005 ; Name: Christoffer Martinsson
|
||
00006 ; E-mail: cm@wsm.se
|
||
00007 ;
|
||
00008 ;
|
||
00009 ;=======================================================================================================
|
||
===
|
||
00010
|
||
Warning[205]: Found directive in column 1. (include)
|
||
00011 include P16F684.INC
|
||
00001 LIST
|
||
00002 ; P16F684.INC Standard Header File, Version 1.03 Microchip Technology, Inc.
|
||
00379 LIST
|
||
00012
|
||
00013 ; Temp-registers
|
||
00000020 00014 W_TEMP EQU 0x20 ; TempRegister for interrupt-routine
|
||
00000021 00015 STATUS_TEMP EQU 0x21 ; TempRegister for interrupt-routine
|
||
00000022 00016 DivRegH EQU 0x22 ; TempRegister for div-routine
|
||
00000023 00017 DivRegL EQU 0x23 ; TempRegister for div-routine
|
||
00000024 00018 SetPWM_Temp EQU 0x24
|
||
00019
|
||
00020 ; Time-definitions
|
||
00004E20 00021 minPulseValue =.20000
|
||
00009C40 00022 maxPulseValue =.40000
|
||
00004E20 00023 ms1Value =.20000
|
||
00002710 00024 ms05Value =.10000
|
||
00025
|
||
00026 ;=======================================================================================================
|
||
===
|
||
00027 ; Reset- and Interrupt-vectors
|
||
00028 ;=======================================================================================================
|
||
===
|
||
0000 00029 ORG 0x0000
|
||
0000 282C 00030 GOTO Main ;Reset-vector
|
||
0004 00031 ORG 0x0004
|
||
0004 2805 00032 GOTO Interrupt ;Interrupt-vector
|
||
00033 ;=======================================================================================================
|
||
===
|
||
00034 ; Macro
|
||
00035 ;=======================================================================================================
|
||
===
|
||
00036 ;-------------------------------------------------------------------------------------------------------
|
||
---
|
||
00037 ; StoreWregInTemp
|
||
00038 ;
|
||
00039 ; Description: Store Status and working-register in temp-registers
|
||
00040 ;
|
||
00041 ; Input: -
|
||
MPASM 5.02 MAINMOTORDRIVER.ASM 3-29-2006 0:37:12 PAGE 2
|
||
|
||
|
||
LOC OBJECT CODE LINE SOURCE TEXT
|
||
VALUE
|
||
|
||
00042 ; ChangedReg: W_TEMP,STATUS_TEMP
|
||
00043 ; UsedReg: W,STATUS,W_TEMP,STATUS_TEMP
|
||
00044 ;-------------------------------------------------------------------------------------------------------
|
||
---
|
||
00045 StoreWregInTemp MACRO
|
||
00046 MOVWF W_TEMP ;Copy W to TEMP register
|
||
00047 SWAPF STATUS,W ;Swap status to be saved into W
|
||
00048 CLRF STATUS ;bank 0, regardless of current bank, Cle
|
||
ars IRP,RP1,RP0
|
||
00049 MOVWF STATUS_TEMP ;Save status to bank zero STATUS_TEMP register
|
||
00050 ENDM
|
||
00051 ;-------------------------------------------------------------------------------------------------------
|
||
---
|
||
00052 ; RestoreWregFromTemp
|
||
00053 ;
|
||
00054 ; Description: Restore Status and working-register from temp-registers
|
||
00055 ;
|
||
00056 ; Input: -
|
||
00057 ; ChangedReg: W,STATUS
|
||
00058 ; UsedReg: W,STATUS,W_TEMP,STATUS_TEMP
|
||
00059 ;-------------------------------------------------------------------------------------------------------
|
||
---
|
||
00060 RestoreWregFromTemp MACRO
|
||
00061 SWAPF STATUS_TEMP,W ;Swap STATUS_TEMP register into W (sets bank to
|
||
original state)
|
||
00062 MOVWF STATUS ;Move W into Status register
|
||
00063 SWAPF W_TEMP,F ;Swap W_TEMP
|
||
00064 SWAPF W_TEMP,W ;Swap W_TEMP into W
|
||
00065 ENDM
|
||
00066 ;-------------------------------------------------------------------------------------------------------
|
||
---
|
||
00067 ; Sub16L
|
||
00068 ;
|
||
00069 ; Description: Subtract literal from 16bit-register. Reg = Reg - Number, WITH VALID CARRY
|
||
00070 ;
|
||
00071 ; Input: RegH, RegL, Number
|
||
00072 ; ChangedReg: C
|
||
00073 ; UsedReg: W
|
||
00074 ;-------------------------------------------------------------------------------------------------------
|
||
---
|
||
00075 Sub16L MACRO RegH, RegL, Number
|
||
00076 MOVLW low Number
|
||
00077 SUBWF RegL
|
||
00078 MOVLW high Number
|
||
00079 ;BTFSS STATUS,C
|
||
00080 ;INCFSZ high Number,W
|
||
00081 SUBWF RegH
|
||
00082 ENDM
|
||
00083 ;-------------------------------------------------------------------------------------------------------
|
||
---
|
||
00084 ; Set16L
|
||
00085 ;
|
||
00086 ; Description: Sets 16bit-register to literal. Reg = Number
|
||
MPASM 5.02 MAINMOTORDRIVER.ASM 3-29-2006 0:37:12 PAGE 3
|
||
|
||
|
||
LOC OBJECT CODE LINE SOURCE TEXT
|
||
VALUE
|
||
|
||
00087 ;
|
||
00088 ; Input: RegH, RegL, Number
|
||
00089 ; ChangedReg: C
|
||
00090 ; UsedReg: W
|
||
00091 ;-------------------------------------------------------------------------------------------------------
|
||
---
|
||
00092 Set16L MACRO RegH, RegL, Number
|
||
00093 MOVLW low Number
|
||
00094 MOVWF RegL
|
||
00095 MOVLW high Number
|
||
00096 MOVWF RegH
|
||
00097 ENDM
|
||
00098 ;-------------------------------------------------------------------------------------------------------
|
||
---
|
||
00099 ; Clear16
|
||
00100 ;
|
||
00101 ; Description: Clear 16bit-register.
|
||
00102 ;
|
||
00103 ; Input: RegH, RegL
|
||
00104 ; ChangedReg:
|
||
00105 ; UsedReg:
|
||
00106 ;-------------------------------------------------------------------------------------------------------
|
||
---
|
||
00107 Clear16 MACRO RegH, RegL
|
||
00108 CLRF RegH
|
||
00109 CLRF RegL
|
||
00110 ENDM
|
||
00111 ;-------------------------------------------------------------------------------------------------------
|
||
---
|
||
00112 ; Comp16L
|
||
00113 ;
|
||
00114 ; Description: Compare one 16bit-registers to literal if Reg1=Number then Z=1.
|
||
00115 ;
|
||
if Reg1<Number then C=1.
|
||
00116 ;
|
||
if Number<Reg1 then C=0.
|
||
00117 ; Input: RegH, RegL, Number
|
||
00118 ; ChangedReg: Z, C
|
||
00119 ; UsedReg: W
|
||
00120 ;-------------------------------------------------------------------------------------------------------
|
||
---
|
||
00121 Comp16L MACRO RegH, RegL, Number
|
||
00122 MOVF RegH,W
|
||
00123 SUBLW high Number
|
||
|
||
00124 BTFSS STATUS,Z
|
||
|
||
00125 EXITM
|
||
00126 MOVF RegL,W
|
||
00127 SUBLW low Number
|
||
00128 ENDM
|
||
00129 ;-------------------------------------------------------------------------------------------------------
|
||
---
|
||
MPASM 5.02 MAINMOTORDRIVER.ASM 3-29-2006 0:37:12 PAGE 4
|
||
|
||
|
||
LOC OBJECT CODE LINE SOURCE TEXT
|
||
VALUE
|
||
|
||
00130 ; SetPWM
|
||
00131 ;
|
||
00132 ; Description: Sets hardware PWM-output to 8bit register-value. PWM = Reg
|
||
00133 ;
|
||
|
||
00134 ; Input: Reg
|
||
00135 ; ChangedReg: CCP1CON(4,5), CCPR1L
|
||
00136 ; UsedReg: W, CCP1CON(4,5), CCPR1L, Reg, SetPWM_Temp
|
||
00137 ;-------------------------------------------------------------------------------------------------------
|
||
---
|
||
00138 SetPWM MACRO Reg
|
||
00139 BCF STATUS,C
|
||
00140 MOVF Reg,W
|
||
00141 ANDLW b'00000011'
|
||
00142 MOVWF SetPWM_Temp
|
||
00143 RLF SetPWM_Temp,F
|
||
00144 RLF SetPWM_Temp,F
|
||
00145 RLF SetPWM_Temp,F
|
||
00146 RLF SetPWM_Temp,F
|
||
00147 MOVF CCP1CON,W
|
||
00148 ANDLW b'11001111'
|
||
00149 IORWF SetPWM_Temp,W
|
||
00150 MOVWF CCP1CON
|
||
00151 MOVF Reg,W
|
||
00152 ANDLW b'11111100'
|
||
00153 MOVWF SetPWM_Temp
|
||
00154 RRF SetPWM_Temp,F
|
||
00155 RRF SetPWM_Temp,F
|
||
00156 MOVF SetPWM_Temp,W
|
||
00157 MOVWF CCPR1L
|
||
00158 ENDM
|
||
00159 ;=======================================================================================================
|
||
===
|
||
00160 ; Interrupt routines
|
||
00161 ;=======================================================================================================
|
||
===
|
||
00162 Interrupt StoreWregInTemp
|
||
0005 00A0 M MOVWF W_TEMP ;Copy W to TEMP register
|
||
0006 0E03 M SWAPF STATUS,W ;Swap status to be saved into W
|
||
0007 0183 M CLRF STATUS ;bank 0, regardless of current bank, Cle
|
||
ars IRP,RP1,RP0
|
||
0008 00A1 M MOVWF STATUS_TEMP ;Save status to bank zero STATUS_TEMP register
|
||
00163 ;-------------------------------------------------------------------------------------------------------
|
||
---
|
||
00164 ; Timer1_Int
|
||
00165 ;
|
||
00166 ; Description: Increment pulseIn counter-registers
|
||
00167 ;-------------------------------------------------------------------------------------------------------
|
||
---
|
||
0009 1283 00168 Timer1_Int BCF STATUS,RP0 ; Bank 0
|
||
000A 1C0C 00169 BTFSS PIR1,TMR1IF
|
||
000B 280E 00170 GOTO Int_Return
|
||
000C 100C 00171 BCF PIR1,TMR1IF
|
||
MPASM 5.02 MAINMOTORDRIVER.ASM 3-29-2006 0:37:12 PAGE 5
|
||
|
||
|
||
LOC OBJECT CODE LINE SOURCE TEXT
|
||
VALUE
|
||
|
||
000D 1010 00172 BCF T1CON,TMR1ON ; Timer1
|
||
off
|
||
00173 ;-------------------------------------------------------------------------------------------------------
|
||
---
|
||
00174 Int_Return RestoreWregFromTemp
|
||
000E 0E21 M SWAPF STATUS_TEMP,W ;Swap STATUS_TEMP register into W (sets bank to
|
||
original state)
|
||
000F 0083 M MOVWF STATUS ;Move W into Status register
|
||
0010 0EA0 M SWAPF W_TEMP,F ;Swap W_TEMP
|
||
0011 0E20 M SWAPF W_TEMP,W ;Swap W_TEMP into W
|
||
0012 0009 00175 RETFIE
|
||
00176
|
||
00177 ;=======================================================================================================
|
||
===
|
||
00178 ; Sub-routines
|
||
00179 ;=======================================================================================================
|
||
===
|
||
00180 ;-------------------------------------------------------------------------------------------------------
|
||
---
|
||
00181 ; Div16byL
|
||
00182 ;
|
||
00183 ; Description: Divide a 16bit-register with a literal. DivReg = DivReg / W.
|
||
00184 ;
|
||
|
||
00185 ; Input: DivRegH, DivRegL, W
|
||
00186 ; ChangedReg: Z, C, DivRegH, DivRegL
|
||
00187 ; UsedReg: W, DivRegH, DivRegL
|
||
00188 ;-------------------------------------------------------------------------------------------------------
|
||
---
|
||
0013 2026 00189 Div16byL CALL DivSkipHiShift
|
||
Warning[207]: Found label after column 1. (iDivRepeat)
|
||
00000008 00190 iDivRepeat =8
|
||
00191 WHILE iDivRepeat
|
||
0014 201F 00192 call DivCode
|
||
Warning[207]: Found label after column 1. (iDivRepeat)
|
||
00000007 00193 iDivRepeat--
|
||
0015 201F 00192 call DivCode
|
||
Warning[207]: Found label after column 1. (iDivRepeat)
|
||
00000006 00193 iDivRepeat--
|
||
0016 201F 00192 call DivCode
|
||
Warning[207]: Found label after column 1. (iDivRepeat)
|
||
00000005 00193 iDivRepeat--
|
||
0017 201F 00192 call DivCode
|
||
Warning[207]: Found label after column 1. (iDivRepeat)
|
||
00000004 00193 iDivRepeat--
|
||
0018 201F 00192 call DivCode
|
||
Warning[207]: Found label after column 1. (iDivRepeat)
|
||
00000003 00193 iDivRepeat--
|
||
0019 201F 00192 call DivCode
|
||
Warning[207]: Found label after column 1. (iDivRepeat)
|
||
00000002 00193 iDivRepeat--
|
||
001A 201F 00192 call DivCode
|
||
Warning[207]: Found label after column 1. (iDivRepeat)
|
||
MPASM 5.02 MAINMOTORDRIVER.ASM 3-29-2006 0:37:12 PAGE 6
|
||
|
||
|
||
LOC OBJECT CODE LINE SOURCE TEXT
|
||
VALUE
|
||
|
||
00000001 00193 iDivRepeat--
|
||
001B 201F 00192 call DivCode
|
||
Warning[207]: Found label after column 1. (iDivRepeat)
|
||
00000000 00193 iDivRepeat--
|
||
00194 ENDW
|
||
001C 0DA3 00195 RLF DivRegL,F ; C << l
|
||
o << C
|
||
001D 1103 00196 BCF STATUS,Z
|
||
001E 0008 00197 RETURN ; we are done!
|
||
00198
|
||
001F 0DA3 00199 DivCode RLF DivRegL,F ; C << lo << C
|
||
0020 0DA2 00200 RLF DivRegH,F ; C << hi << C
|
||
0021 1C03 00201 BTFSS STATUS,C ; if Carry
|
||
0022 2826 00202 GOTO DivSkipHiShift
|
||
0023 02A2 00203 SUBWF DivRegH,F ; hi-=w
|
||
0024 1403 00204 BSF STATUS,C ; ignore carry
|
||
0025 0008 00205 RETURN ; done
|
||
00206 ; endif
|
||
0026 00207 DivSkipHiShift
|
||
0026 02A2 00208 SUBWF DivRegH,F ; hi-=w
|
||
0027 1803 00209 BTFSC STATUS,C ; if carry set
|
||
0028 0008 00210 RETURN ; done
|
||
0029 07A2 00211 ADDWF DivRegH,F ; hi+=w
|
||
002A 1003 00212 BCF STATUS,C ; clear carry
|
||
002B 0008 00213 RETURN
|
||
00214 ;=======================================================================================================
|
||
===
|
||
00215 ; Main
|
||
00216 ;=======================================================================================================
|
||
===
|
||
002C 1283 00217 Main BCF STATUS,RP0 ; Bank 0
|
||
002D 0187 00218 CLRF PORTC ; Clear
|
||
PORTC
|
||
002E 0185 00219 CLRF PORTA ; Clear
|
||
PORTA
|
||
002F 3007 00220 MOVLW 0x07
|
||
0030 0099 00221 MOVWF CMCON0 ; Compar
|
||
ator OFF
|
||
0031 0193 00222 CLRF CCPR1L
|
||
0032 304C 00223 MOVLW b'01001100'
|
||
0033 0095 00224 MOVWF CCP1CON
|
||
0034 3081 00225 MOVLW b'10000001'
|
||
0035 009F 00226 MOVWF ADCON0
|
||
00227
|
||
0036 1683 00228 BSF STATUS,RP0 ; Bank 1
|
||
0037 300D 00229 MOVLW b'00001101'
|
||
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
|
||
0038 0085 00230 MOVWF TRISA
|
||
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
|
||
0039 0187 00231 CLRF TRISC
|
||
003A 3001 00232 MOVLW b'00000001'
|
||
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
|
||
003B 0091 00233 MOVWF ANSEL ; All pi
|
||
MPASM 5.02 MAINMOTORDRIVER.ASM 3-29-2006 0:37:12 PAGE 7
|
||
|
||
|
||
LOC OBJECT CODE LINE SOURCE TEXT
|
||
VALUE
|
||
|
||
ns to digital I/O except AN0
|
||
003C 303F 00234 MOVLW 0x3F
|
||
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
|
||
003D 0092 00235 MOVWF PR2
|
||
003E 3020 00236 MOVLW b'00100000'
|
||
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
|
||
003F 009F 00237 MOVWF ADCON1
|
||
0040 30CF 00238 MOVLW b'11001111'
|
||
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
|
||
0041 0081 00239 MOVWF OPTION_REG
|
||
00240
|
||
0042 1283 00241 BCF STATUS,RP0 ; Bank 0
|
||
0043 1512 00242 BSF T2CON,TMR2ON ; PWM on
|
||
0044 178B 00243 BSF INTCON,GIE
|
||
; Global interrup enable
|
||
00244
|
||
00245 ; MOVLW low .30000
|
||
00246 ; MOVWF TMR1L
|
||
00247 ; MOVLW high .30000
|
||
00248 ; MOVWF TMR1H
|
||
00249
|
||
00250 ;-------------------------------------------------------------------------------------------------------
|
||
---
|
||
00251 ; MainLoop
|
||
00252 ;-------------------------------------------------------------------------------------------------------
|
||
---
|
||
0045 1283 00253 Mainloop: BCF STATUS,RP0 ; Bank 0
|
||
0046 0064 00254 CLRWDT
|
||
00255
|
||
00256 ;DECODE_PPM
|
||
0047 1905 00257 PPM_Lo: BTFSC PORTA,2 ; Wait for pulse
|
||
to go low
|
||
0048 2847 00258 GOTO PPM_Lo
|
||
0049 1D05 00259 PPM_Hi: BTFSS PORTA,2 ; Wait for pulse
|
||
to go high (start measuring)
|
||
004A 2849 00260 GOTO PPM_Hi
|
||
00261 Clear16 TMR1H,TMR1L ; Clear
|
||
Timer1 countervalue
|
||
004B 018F M CLRF TMR1H
|
||
004C 018E M CLRF TMR1L
|
||
004D 1410 00262 BSF T1CON,TMR1ON ; Start
|
||
Timer1
|
||
004E 1905 00263 PPM_Loop: BTFSC PORTA,2 ; Wait for pulse to go l
|
||
ow (stop measuring)
|
||
004F 284E 00264 GOTO PPM_Loop
|
||
0050 1010 00265 BCF T1CON,TMR1ON ; Stop Timer1
|
||
|
||
00266 ; Comp16L TMR1H,TMR1L,minPulseValue
|
||
00267 ; BTFSC STATUS,C ; If cou
|
||
nter < minPulseValue (~1ms)
|
||
00268 ; GOTO Mainloop ; then g
|
||
oto Mainloop
|
||
00269 ; Comp16L TMR1H,TMR1L,maxPulseValue
|
||
MPASM 5.02 MAINMOTORDRIVER.ASM 3-29-2006 0:37:12 PAGE 8
|
||
|
||
|
||
LOC OBJECT CODE LINE SOURCE TEXT
|
||
VALUE
|
||
|
||
00270 ; BTFSS STATUS,C ; else I
|
||
f counter > maxPulseValue (~2ms)
|
||
00271 ; GOTO Mainloop ; then g
|
||
oto Mainloop
|
||
00272 Sub16L TMR1H,TMR1L,ms1Value ; else counter-value - 1
|
||
ms
|
||
0051 3020 M MOVLW low ms1Value
|
||
Message[305]: Using default destination of 1 (file).
|
||
0052 028E M SUBWF TMR1L
|
||
0053 304E M MOVLW high ms1Value
|
||
M ;BTFSS STATUS,C
|
||
M ;INCFSZ high Number,W
|
||
Message[305]: Using default destination of 1 (file).
|
||
0054 028F M SUBWF TMR1H
|
||
00273 Comp16L TMR1H,TMR1L,ms05Value
|
||
0055 080F M MOVF TMR1H,W
|
||
0056 3C27 M SUBLW high ms05Value
|
||
|
||
0057 1D03 M BTFSS STATUS,Z
|
||
|
||
M EXITM
|
||
0058 1C03 00274 BTFSS STATUS,C ; If cou
|
||
nter > 0,5ms
|
||
0059 285B 00275 GOTO PWM_Fwr ; then g
|
||
oto PWM_forward
|
||
005A 2861 00276 GOTO PWM_Rev ; else g
|
||
oto PWN_reverse
|
||
00277
|
||
005B 1395 00278 PWM_Fwr: BCF CCP1CON,P1M1 ; Set H-bridge i
|
||
n forward-mode
|
||
00279 Sub16L TMR1H,TMR1L,ms05Value ; counter-value - 0,5ms
|
||
005C 3010 M MOVLW low ms05Value
|
||
Message[305]: Using default destination of 1 (file).
|
||
005D 028E M SUBWF TMR1L
|
||
005E 3027 M MOVLW high ms05Value
|
||
M ;BTFSS STATUS,C
|
||
M ;INCFSZ high Number,W
|
||
Message[305]: Using default destination of 1 (file).
|
||
005F 028F M SUBWF TMR1H
|
||
0060 2869 00280 GOTO PWM_SetVal ; goto P
|
||
WM_SetValue
|
||
0061 1795 00281 PWM_Rev: BSF CCP1CON,P1M1 ; Set H-bridge i
|
||
n reverse-mode
|
||
0062 30FF 00282 MOVLW 0xFF
|
||
0063 068F 00283 XORWF TMR1H,F ; Invert
|
||
counterH
|
||
0064 068E 00284 XORWF TMR1L,F ; Invert
|
||
counterL
|
||
00285 Sub16L TMR1H,TMR1L,(0xFFFF-ms05Value) ; Inverted counter-value - (6553
|
||
5-0,5ms)
|
||
0065 30EF M MOVLW low (0xFFFF-ms05Value)
|
||
Message[305]: Using default destination of 1 (file).
|
||
0066 028E M SUBWF TMR1L
|
||
MPASM 5.02 MAINMOTORDRIVER.ASM 3-29-2006 0:37:12 PAGE 9
|
||
|
||
|
||
LOC OBJECT CODE LINE SOURCE TEXT
|
||
VALUE
|
||
|
||
0067 30D8 M MOVLW high (0xFFFF-ms05Value)
|
||
M ;BTFSS STATUS,C
|
||
M ;INCFSZ high Number,W
|
||
Message[305]: Using default destination of 1 (file).
|
||
0068 028F M SUBWF TMR1H
|
||
00286
|
||
0069 080F 00287 PWM_SetVal: MOVF TMR1H,W ; Divide by 79..
|
||
.
|
||
006A 00A2 00288 MOVWF DivRegH ; Load d
|
||
iv-routine with countervalue
|
||
006B 080E 00289 MOVF TMR1L,W
|
||
006C 00A3 00290 MOVWF DivRegL ; Load d
|
||
iv-routine with countervalue
|
||
006D 3028 00291 MOVLW ((ms05Value/0xFF)+1) ; Load div-routine with
|
||
divide-value
|
||
006E 2013 00292 CALL Div16byL ; Divide
|
||
!
|
||
00293
|
||
00294 SetPWM DivRegL
|
||
006F 1003 M BCF STATUS,C
|
||
0070 0823 M MOVF DivRegL,W
|
||
0071 3903 M ANDLW b'00000011'
|
||
0072 00A4 M MOVWF SetPWM_Temp
|
||
0073 0DA4 M RLF SetPWM_Temp,F
|
||
0074 0DA4 M RLF SetPWM_Temp,F
|
||
0075 0DA4 M RLF SetPWM_Temp,F
|
||
0076 0DA4 M RLF SetPWM_Temp,F
|
||
0077 0815 M MOVF CCP1CON,W
|
||
0078 39CF M ANDLW b'11001111'
|
||
0079 0424 M IORWF SetPWM_Temp,W
|
||
007A 0095 M MOVWF CCP1CON
|
||
007B 0823 M MOVF DivRegL,W
|
||
007C 39FC M ANDLW b'11111100'
|
||
007D 00A4 M MOVWF SetPWM_Temp
|
||
007E 0CA4 M RRF SetPWM_Temp,F
|
||
007F 0CA4 M RRF SetPWM_Temp,F
|
||
0080 0824 M MOVF SetPWM_Temp,W
|
||
0081 0093 M MOVWF CCPR1L
|
||
00295
|
||
0082 2845 00296 GOTO Mainloop
|
||
00297 END
|
||
MPASM 5.02 MAINMOTORDRIVER.ASM 3-29-2006 0:37:12 PAGE 10
|
||
|
||
|
||
SYMBOL TABLE
|
||
LABEL VALUE
|
||
|
||
ADCON0 0000001F
|
||
ADCON1 0000009F
|
||
ADCS0 00000004
|
||
ADCS1 00000005
|
||
ADCS2 00000006
|
||
ADFM 00000007
|
||
ADIE 00000006
|
||
ADIF 00000006
|
||
ADON 00000000
|
||
ADRESH 0000001E
|
||
ADRESL 0000009E
|
||
ANS0 00000000
|
||
ANS1 00000001
|
||
ANS2 00000002
|
||
ANS3 00000003
|
||
ANS4 00000004
|
||
ANS5 00000005
|
||
ANS6 00000006
|
||
ANS7 00000007
|
||
ANSEL 00000091
|
||
C 00000000
|
||
C1IE 00000003
|
||
C1IF 00000003
|
||
C1INV 00000004
|
||
C1OUT 00000006
|
||
C2IE 00000004
|
||
C2IF 00000004
|
||
C2INV 00000005
|
||
C2OUT 00000007
|
||
C2SYNC 00000000
|
||
CCP1CON 00000015
|
||
CCP1IE 00000005
|
||
CCP1IF 00000005
|
||
CCP1M0 00000000
|
||
CCP1M1 00000001
|
||
CCP1M2 00000002
|
||
CCP1M3 00000003
|
||
CCPR1H 00000014
|
||
CCPR1L 00000013
|
||
CHS0 00000002
|
||
CHS1 00000003
|
||
CHS2 00000004
|
||
CIS 00000003
|
||
CM0 00000000
|
||
CM1 00000001
|
||
CM2 00000002
|
||
CMCON0 00000019
|
||
CMCON1 0000001A
|
||
Clear16
|
||
Comp16L
|
||
DC 00000001
|
||
DC1B0 00000004
|
||
DC1B1 00000005
|
||
MPASM 5.02 MAINMOTORDRIVER.ASM 3-29-2006 0:37:12 PAGE 11
|
||
|
||
|
||
SYMBOL TABLE
|
||
LABEL VALUE
|
||
|
||
Div16byL 00000013
|
||
DivCode 0000001F
|
||
DivRegH 00000022
|
||
DivRegL 00000023
|
||
DivSkipHiShift 00000026
|
||
ECCPAS 00000017
|
||
ECCPAS0 00000004
|
||
ECCPAS1 00000005
|
||
ECCPAS2 00000006
|
||
ECCPASE 00000007
|
||
EEADR 0000009B
|
||
EECON1 0000009C
|
||
EECON2 0000009D
|
||
EEDAT 0000009A
|
||
EEDATA 0000009A
|
||
EEIE 00000007
|
||
EEIF 00000007
|
||
F 00000001
|
||
FSR 00000004
|
||
GIE 00000007
|
||
GO 00000001
|
||
GO_DONE 00000001
|
||
HTS 00000002
|
||
INDF 00000000
|
||
INTCON 0000000B
|
||
INTE 00000004
|
||
INTEDG 00000006
|
||
INTF 00000001
|
||
IOC 00000096
|
||
IOC0 00000000
|
||
IOC1 00000001
|
||
IOC2 00000002
|
||
IOC3 00000003
|
||
IOC4 00000004
|
||
IOC5 00000005
|
||
IOCA 00000096
|
||
IOCA0 00000000
|
||
IOCA1 00000001
|
||
IOCA2 00000002
|
||
IOCA3 00000003
|
||
IOCA4 00000004
|
||
IOCA5 00000005
|
||
IRCF0 00000004
|
||
IRCF1 00000005
|
||
IRCF2 00000006
|
||
IRP 00000007
|
||
Int_Return 0000000E
|
||
Interrupt 00000005
|
||
LTS 00000001
|
||
Main 0000002C
|
||
Mainloop 00000045
|
||
NOT_BOD 00000000
|
||
NOT_DONE 00000001
|
||
MPASM 5.02 MAINMOTORDRIVER.ASM 3-29-2006 0:37:12 PAGE 12
|
||
|
||
|
||
SYMBOL TABLE
|
||
LABEL VALUE
|
||
|
||
NOT_PD 00000003
|
||
NOT_POR 00000001
|
||
NOT_RAPU 00000007
|
||
NOT_T1SYNC 00000002
|
||
NOT_TO 00000004
|
||
OPTION_REG 00000081
|
||
OSCCON 0000008F
|
||
OSCTUNE 00000090
|
||
OSFIE 00000002
|
||
OSFIF 00000002
|
||
OSTS 00000003
|
||
P1M0 00000006
|
||
P1M1 00000007
|
||
PCL 00000002
|
||
PCLATH 0000000A
|
||
PCON 0000008E
|
||
PDC0 00000000
|
||
PDC1 00000001
|
||
PDC2 00000002
|
||
PDC3 00000003
|
||
PDC4 00000004
|
||
PDC5 00000005
|
||
PDC6 00000006
|
||
PEIE 00000006
|
||
PIE1 0000008C
|
||
PIR1 0000000C
|
||
PORTA 00000005
|
||
PORTC 00000007
|
||
PPM_Hi 00000049
|
||
PPM_Lo 00000047
|
||
PPM_Loop 0000004E
|
||
PR2 00000092
|
||
PRSEN 00000007
|
||
PS0 00000000
|
||
PS1 00000001
|
||
PS2 00000002
|
||
PSA 00000003
|
||
PSSAC0 00000002
|
||
PSSAC1 00000003
|
||
PSSBD0 00000000
|
||
PSSBD1 00000001
|
||
PWM1CON 00000016
|
||
PWM_Fwr 0000005B
|
||
PWM_Rev 00000061
|
||
PWM_SetVal 00000069
|
||
RAIE 00000003
|
||
RAIF 00000000
|
||
RD 00000000
|
||
RP0 00000005
|
||
RP1 00000006
|
||
RestoreWregFromTemp
|
||
SBODEN 00000004
|
||
SCS 00000000
|
||
MPASM 5.02 MAINMOTORDRIVER.ASM 3-29-2006 0:37:12 PAGE 13
|
||
|
||
|
||
SYMBOL TABLE
|
||
LABEL VALUE
|
||
|
||
STATUS 00000003
|
||
STATUS_TEMP 00000021
|
||
SWDTEN 00000000
|
||
Set16L
|
||
SetPWM
|
||
SetPWM_Temp 00000024
|
||
StoreWregInTemp
|
||
Sub16L
|
||
T0CS 00000005
|
||
T0IE 00000005
|
||
T0IF 00000002
|
||
T0SE 00000004
|
||
T1CKPS0 00000004
|
||
T1CKPS1 00000005
|
||
T1CON 00000010
|
||
T1GINV 00000007
|
||
T1GSS 00000001
|
||
T1IE 00000000
|
||
T1IF 00000000
|
||
T1OSCEN 00000003
|
||
T2CKPS0 00000000
|
||
T2CKPS1 00000001
|
||
T2CON 00000012
|
||
T2IE 00000001
|
||
T2IF 00000001
|
||
TMR0 00000001
|
||
TMR1CS 00000001
|
||
TMR1GE 00000006
|
||
TMR1H 0000000F
|
||
TMR1IE 00000000
|
||
TMR1IF 00000000
|
||
TMR1L 0000000E
|
||
TMR1ON 00000000
|
||
TMR2 00000011
|
||
TMR2IE 00000001
|
||
TMR2IF 00000001
|
||
TMR2ON 00000002
|
||
TOUTPS0 00000003
|
||
TOUTPS1 00000004
|
||
TOUTPS2 00000005
|
||
TOUTPS3 00000006
|
||
TRISA 00000085
|
||
TRISC 00000087
|
||
TUN0 00000000
|
||
TUN1 00000001
|
||
TUN2 00000002
|
||
TUN3 00000003
|
||
TUN4 00000004
|
||
Timer1_Int 00000009
|
||
ULPWUE 00000005
|
||
VCFG 00000006
|
||
VR0 00000000
|
||
VR1 00000001
|
||
MPASM 5.02 MAINMOTORDRIVER.ASM 3-29-2006 0:37:12 PAGE 14
|
||
|
||
|
||
SYMBOL TABLE
|
||
LABEL VALUE
|
||
|
||
VR2 00000002
|
||
VR3 00000003
|
||
VRCON 00000099
|
||
VREN 00000007
|
||
VRR 00000005
|
||
W 00000000
|
||
WDTCON 00000018
|
||
WDTPS0 00000001
|
||
WDTPS1 00000002
|
||
WDTPS2 00000003
|
||
WDTPS3 00000004
|
||
WPU 00000095
|
||
WPUA 00000095
|
||
WR 00000001
|
||
WREN 00000002
|
||
WRERR 00000003
|
||
W_TEMP 00000020
|
||
Z 00000002
|
||
_BOD_NSLEEP 00003EFF
|
||
_BOD_OFF 00003CFF
|
||
_BOD_ON 00003FFF
|
||
_BOD_SBODEN 00003DFF
|
||
_CPD_OFF 00003FFF
|
||
_CPD_ON 00003F7F
|
||
_CP_OFF 00003FFF
|
||
_CP_ON 00003FBF
|
||
_EC_OSC 00003FFB
|
||
_EXTRC 00003FFF
|
||
_EXTRCIO 00003FFE
|
||
_EXTRC_OSC_CLKOUT 00003FFF
|
||
_EXTRC_OSC_NOCLKOUT 00003FFE
|
||
_FCMEN_OFF 000037FF
|
||
_FCMEN_ON 00003FFF
|
||
_HS_OSC 00003FFA
|
||
_IESO_OFF 00003BFF
|
||
_IESO_ON 00003FFF
|
||
_INTOSC 00003FFD
|
||
_INTOSCIO 00003FFC
|
||
_INTRC_OSC_CLKOUT 00003FFD
|
||
_INTRC_OSC_NOCLKOUT 00003FFC
|
||
_LP_OSC 00003FF8
|
||
_MCLRE_OFF 00003FDF
|
||
_MCLRE_ON 00003FFF
|
||
_PWRTE_OFF 00003FFF
|
||
_PWRTE_ON 00003FEF
|
||
_WDT_OFF 00003FF7
|
||
_WDT_ON 00003FFF
|
||
_XT_OSC 00003FF9
|
||
__16F684 00000001
|
||
iDivRepeat 00000000
|
||
maxPulseValue 00009C40
|
||
minPulseValue 00004E20
|
||
ms05Value 00002710
|
||
MPASM 5.02 MAINMOTORDRIVER.ASM 3-29-2006 0:37:12 PAGE 15
|
||
|
||
|
||
SYMBOL TABLE
|
||
LABEL VALUE
|
||
|
||
ms1Value 00004E20
|
||
|
||
|
||
MEMORY USAGE MAP ('X' = Used, '-' = Unused)
|
||
|
||
0000 : X---XXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
|
||
0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
|
||
0080 : XXX------------- ---------------- ---------------- ----------------
|
||
|
||
All other memory blocks unused.
|
||
|
||
Program Memory Words Used: 128
|
||
Program Memory Words Free: 1920
|
||
|
||
|
||
Errors : 0
|
||
Warnings : 10 reported, 0 suppressed
|
||
Messages : 12 reported, 0 suppressed
|
||
|
||
|