📄 qei_sim.lst
字号:
00174 ; isr code can go here or be located as a call subroutine elsewhere
00175
0049 00176 Exit_ISRR
0049 00B3 00177 movwf Step_Var
004A 100C 00178 bcf PIR1,TMR1IF
004B 0821 00179 movf status_temp,w ; retrieve copy of STATUS register
004C 0083 00180 movwf STATUS ; restore pre-isr STATUS register contents
004D 0EA0 00181 swapf w_temp,f
004E 0E20 00182 swapf w_temp,w ; restore pre-isr W register contents
004F 0009 00183 retfie ; return from interrupt
00184
00185
00186 ; these first 4 instructions are not required if the internal oscillator is not used
0050 00187 main
0050 23FF 00188 call 0x3FF ; retrieve factory calibration value
0051 1683 00189 bsf STATUS,RP0 ; set file register bank to 1
0052 0090 00190 movwf OSCCAL ; update register with factory cal value
0053 1283 00191 bcf STATUS,RP0 ; set file register bank to 0
00192
0054 1283 00193 BANKSEL CMCON
0055 3007 00194 movlw B'00000111' ; Disable Comparator module
0056 0099 00195 movwf CMCON
0057 1205 00196 bcf LED
00197
0058 1683 00198 BANKSEL ANSEL
0059 3011 00199 movlw B'00010001' ; TAD = FOSC/8 , Only AN0 is analog input
005A 009F 00200 movwf ANSEL
005B 1205 00201 bcf TRISIO,4 ; GPIO4 = LED output
005C 1585 00202 bsf TRISIO,3 ; GPIO3 = MCLR
005D 1085 00203 bcf TRISIO,1 ; OUTA
005E 1105 00204 bcf TRISIO,2 ; OUTB
005F 1285 00205 bcf TRISIO,5 ; INDEX
00206
MPASM 4.01 Released QEI_SIM.ASM 6-10-2005 16:21:14 PAGE 5
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0060 140C 00207 bsf PIE1,TMR1IE
00208
0061 1283 00209 BANKSEL ADCON0
0062 141F 00210 bsf ADCON0,ADON
0063 139F 00211 bcf ADCON0,ADFM
0064 131F 00212 bcf ADCON0,VCFG
00213
0065 1285 00214 bcf INDEX
0066 1085 00215 bcf OUTA
0067 1105 00216 bcf OUTB
0068 01B9 00217 clrf Index_Location
00218
0069 30C7 00219 movlw ((.65536-.57) % .256)
006A 008E 00220 movwf TMR1L
006B 00B4 00221 movwf Buf_TMR1L
006C 30FF 00222 movlw ((.65536-.57) / .256)
006D 008F 00223 movwf TMR1H
006E 00B5 00224 movwf Buf_TMR1H
006F 3001 00225 movlw B'00000001'
0070 0090 00226 movwf T1CON ; Turn Timer ON & Prescaler = 1:1
00227
00228 ; remaining code goes here
00229
0071 1283 00230 BANKSEL GPIO
00231
0072 178B 00232 bsf INTCON,GIE
0073 170B 00233 bsf INTCON,PEIE
00234
0074 01B3 00235 clrf Step_Var
00236
0075 00237 Null_Loop
0075 149F 00238 bsf ADCON0,GO
0076 00239 Wait_ADC
0076 0000 00240 nop
0077 189F 00241 btfsc ADCON0,GO
0078 2876 00242 goto Wait_ADC
0079 081E 00243 movf ADRESH,W
007A 1B9E 00244 btfsc ADRESH,7
007B 2896 00245 goto ADC_GT_0x80
00246
007C 00247 ADC_LT_0x80
007C 1832 00248 btfsc Flags,DIRECTION
007D 2882 00249 goto LT_DIR_DONE
007E 138B 00250 bcf INTCON,GIE
007F 01B3 00251 clrf Step_Var
0080 01B9 00252 clrf Index_Location
0081 178B 00253 bsf INTCON,GIE
0082 00254 LT_DIR_DONE
0082 1432 00255 bsf Flags,DIRECTION
00256
0083 00257 Get_Base_TMR1LH
00258
0083 00B7 00259 movwf Base_TMR1L ; ( Base_TMR1H : Base_TMR1L ) = ADRESH * 2 + RPM
MPASM 4.01 Released QEI_SIM.ASM 6-10-2005 16:21:14 PAGE 6
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
_3600
0084 01B8 00260 clrf Base_TMR1H
0085 1003 00261 bcf STATUS,C
0086 0D37 00262 rlf Base_TMR1L,W
0087 3E35 00263 addlw RPM_3600
0088 1803 00264 btfsc STATUS,C
0089 0AB8 00265 incf Base_TMR1H,F
008A 00B7 00266 movwf Base_TMR1L
00267
008B 30FF 00268 movlw 0xff ; 0xffff - ( Base_TMR1H : Base_TMR1L )
008C 00B6 00269 movwf TempVar
008D 0837 00270 movf Base_TMR1L,W
008E 0236 00271 subwf TempVar,W
008F 00B4 00272 movwf Buf_TMR1L
0090 30FF 00273 movlw 0xff
0091 00B6 00274 movwf TempVar
0092 0838 00275 movf Base_TMR1H,W
0093 0236 00276 subwf TempVar,W
0094 00B5 00277 movwf Buf_TMR1H
00278
0095 2875 00279 goto Null_Loop
00280
0096 00281 ADC_GT_0x80 ; W = 0x80 to 0xff
00282
0096 3AFF 00283 xorlw 0xff ; Complement W register ........................
....
0097 1C32 00284 btfss Flags,DIRECTION
0098 289D 00285 goto GT_DIR_DONE
0099 138B 00286 bcf INTCON,GIE
009A 01B3 00287 clrf Step_Var
009B 01B9 00288 clrf Index_Location
009C 178B 00289 bsf INTCON,GIE
009D 00290 GT_DIR_DONE
009D 1032 00291 bcf Flags,DIRECTION
00292
009E 2883 00293 goto Get_Base_TMR1LH
00294
009F 00295 Delay
009F 081E 00296 movf ADRESH,W
00A0 00B0 00297 movwf DelayVar1
00A1 1903 00298 btfsc STATUS,Z
00A2 0AB0 00299 incf DelayVar1,F
00A3 00300 D_Loop1
00A3 01B1 00301 clrf DelayVar2
00A4 00302 D_Loop2
00A4 0000 00303 nop
00A5 0BB1 00304 decfsz DelayVar2,F
00A6 28A4 00305 goto D_Loop2
00A7 0BB0 00306 decfsz DelayVar1,F
00A8 28A3 00307 goto D_Loop1
00A9 0008 00308 return
00309 ; initialize eeprom locations
00310
MPASM 4.01 Released QEI_SIM.ASM 6-10-2005 16:21:14 PAGE 7
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
2100 00311 ORG 0x2100
2100 0000 0001 0002 00312 DE 0x00, 0x01, 0x02, 0x03
0003
00313
00314
00315 END ; directive 'end of program'
MPASM 4.01 Released QEI_SIM.ASM 6-10-2005 16:21:14 PAGE 8
SYMBOL TABLE
LABEL VALUE
ADCON0 0000001F
ADCS0 00000004
ADCS1 00000005
ADCS2 00000006
ADC_GT_0x80 00000096
ADC_LT_0x80 0000007C
ADFM 00000007
ADIE 00000006
ADIF 00000006
ADON 00000000
ADRESH 0000001E
ADRESL 0000009E
ANS0 00000000
ANS1 00000001
ANS2 00000002
ANS3 00000003
ANSEL 0000009F
Base_TMR1H 00000038
Base_TMR1L 00000037
Buf_TMR1H 00000035
Buf_TMR1L 00000034
C 00000000
CAL0 00000002
CAL1 00000003
CAL2 00000004
CAL3 00000005
CAL4 00000006
CAL5 00000007
CHS0 00000002
CHS1 00000003
CINV 00000004
CIS 00000003
CM0 00000000
CM1 00000001
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -