?? ver1.lst
字號:
0021 1DA3 00198 tmns1 btfss mystat3 ;
0022 282B 00199 goto tmns3 ;
00200 prepare0 ;
M resetout
0023 1085 M bcf GPIO, 0x01;
0024 30C9 M movlw intv0 ; intv0 is the state0 timeout
0025 0081 M movwf TMR0
0026 110B M bcf INTCON, T0IF ;
00201 setstate0 ;
0027 30F0 M movlw 0xf0 ;
0028 05A3 M andwf MYSTAT, f ;
0029 1423 M bsf mystat0 ;
00202 exitint ;
002A 287C M goto reti ;
00203
002B 1C23 00204 tmns3 btfss mystat0 ;
002C 2835 00205 goto tmns0 ;
00206 prepare1 ;
M resetout
002D 1085 M bcf GPIO, 0x01;
002E 30EE M movlw intv1 ; intv1 is the state1 timeout
002F 0081 M movwf TMR0
0030 110B M bcf INTCON, T0IF ;
00207 setstate1 ;
0031 30F0 M movlw 0xf0 ;
0032 05A3 M andwf MYSTAT, f ;
0033 14A3 M bsf mystat1 ;
00208 exitint ;
0034 287C M goto reti ;
00209
00210 tmns0 prepare2 ;
M setout
0035 1485 M bsf GPIO, 0x01;
0036 0827 M movf psout, w ; psout is the state2 timeout
0037 0081 M movwf TMR0 ; aka the pulse out
0038 110B M bcf INTCON, T0IF ;
00211 setstate2 ;
0039 30F0 M movlw 0xf0 ;
003A 05A3 M andwf MYSTAT, f ;
003B 1523 M bsf mystat2 ;
00212 exitint ;
003C 287C M goto reti ;
00213
003D 1C0B 00214 notm btfss INTCON, GPIF ;
003E 287B 00215 goto exitinti ;
003F 0805 00216 movf GPIO, w ;
0040 100B 00217 bcf INTCON, GPIF ; clear the int source
MPASM 4.00 Released VER1.ASM 4-4-2005 23:14:04 PAGE 6
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0041 0805 00218 movf GPIO, w ; read the port
0042 3901 00219 andlw 0x01 ; isolate lsb, in
0043 1903 00220 btfsc STATUS, Z ;
0044 284F 00221 goto ntmin0 ;
0045 1C23 00222 ntmin1 btfss mystat0 ;
0046 287B 00223 goto exitinti ;
00224 prepare1 ;
M resetout
0047 1085 M bcf GPIO, 0x01;
0048 30EE M movlw intv1 ; intv1 is the state1 timeout
0049 0081 M movwf TMR0
004A 110B M bcf INTCON, T0IF ;
00225 setstate1 ;
004B 30F0 M movlw 0xf0 ;
004C 05A3 M andwf MYSTAT, f ;
004D 14A3 M bsf mystat1 ;
00226 exitint ;
004E 287C M goto reti ;
00227
004F 1CA3 00228 ntmin0 btfss mystat1 ;
0050 287B 00229 goto exitinti ;
00230 docalculus ;
M
0051 0BA8 M decfsz tctr, f ; decrement it
0052 2872 M goto exitc ;
M
0053 300F M movlw sltick ; back again
0054 00A8 M movwf tctr ;
M
0055 0801 M movf TMR0, w ; load it
0056 00A6 M movwf psin ; to psin
M
0057 0826 M movf psin, w ;
0058 3E0A M addlw th0 ;
0059 1C03 M btfss STATUS, C ; it should be some carry to carry on
005A 2872 M goto exitc ; pulse too short
M
005B 0826 M movf psin, w ;
005C 3E07 M addlw th1 ;
005D 1C03 M btfss STATUS, C ; it should be some carry to carry on
005E 2868 M goto calmin ; minimal pulse detected
M
005F 0826 M movf psin, w ;
0060 3E05 M addlw th2 ;
0061 1C03 M btfss STATUS, C ; it should be some carry to carry on
0062 2872 M goto exitc ; pulse is neutral
M
0063 0826 M movf psin, w ;
0064 3E02 M addlw th3 ;
0065 1C03 M btfss STATUS, C ; it should be some carry to carry on
0066 286D M goto calmax ; maximal pulse detected
M
0067 2872 M goto exitc ; pulse is too long
MPASM 4.00 Released VER1.ASM 4-4-2005 23:14:04 PAGE 7
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
M
0068 3008 M calmin movlw thmax ; test for minimal pulse (maximal couter0 value)
0069 0727 M addwf psout, w ;
006A 1C03 M btfss STATUS, C ;
006B 0AA7 M incf psout, f ; increment if the overflow was not generated
006C 2872 M goto exitc ;
M
006D 3010 M calmax movlw thmin ; test for minimal pulse (maximal couter0 value)
006E 0727 M addwf psout, w ;
006F 1803 M btfsc STATUS, C ;
0070 03A7 M decf psout, f ; increment if the overflow was not generated
0071 2872 M goto exitc ;
M
0072 0000 M exitc nop;
00231 prepare2 ;
M setout
0073 1485 M bsf GPIO, 0x01;
0074 0827 M movf psout, w ; psout is the state2 timeout
0075 0081 M movwf TMR0 ; aka the pulse out
0076 110B M bcf INTCON, T0IF ;
00232 setstate2 ;
0077 30F0 M movlw 0xf0 ;
0078 05A3 M andwf MYSTAT, f ;
0079 1523 M bsf mystat2 ;
00233 exitint ;
007A 287C M goto reti ;
00234
00235 exitinti exitint ;
007B 287C M goto reti ;
00236
00237
007C 0E21 00238 reti SWAPF STATUS_TEMP ,W ;swap STATUS_TEMP register into W, sets bank to original state
007D 0083 00239 MOVWF STATUS ;move W into STATUS register
007E 0EA0 00240 SWAPF W_TEMP, F ;swap W_TEMP
007F 0E20 00241 SWAPF W_TEMP,W ;swap W_TEMP into W
00242
0080 0009 00243 retfie ; exit general ISR
00244
00245
00246
00247 ; INIT XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
00248
0081 138B 00249 init bcf INTCON, GIE ; disable all interrupts
00250
0082 1683 00251 bsf STATUS, RP0 ; Bank 1
0083 23FF 00252 call 3FFh ; Get the cal value
0084 0090 00253 movwf OSCCAL ; Calibrate
0085 1283 00254 bcf STATUS, RP0 ; Bank 0
00255
0086 1283 00256 bcf STATUS, RP0 ;
0087 1303 00257 bcf STATUS, RP1 ; bank0
0088 0185 00258 clrf GPIO ; clear port
0089 3007 00259 movlw 0x07 ; all digital
MPASM 4.00 Released VER1.ASM 4-4-2005 23:14:04 PAGE 8
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
008A 0099 00260 movwf CMCON
00261
008B 3000 00262 movlw 0x00
008C 0085 00263 movwf GPIO ;
00264
008D 1683 00265 bsf STATUS, RP0 ; bank1
00266
00267
008E 30FD 00268 dirset movlw b'11111101' ; all inputs but GP1
008F 0085 00269 movwf TRISIO ; configure them
00270
0090 3000 00271 anaset movlw b'00000000' ; all digital
0091 009F 00272 movwf ANSEL ;
00273
0092 3001 00274 movlw b'00000001' ; enable only gp0 IOCB
0093 0096 00275 movwf IOCB ;
00276
0094 1283 00277 bcf STATUS, RP0 ; return to
0095 1303 00278 bcf STATUS, RP1 ; bank0
00279
0096 3000 00280 movlw b'00000000' ; disable ADC,
0097 009F 00281 movwf ADCON0 ;
00282
00283
0098 3028 00284 movlw b'00101000' ;
0099 008B 00285 movwf INTCON ; enable TMR0 and IOCB
00286
009A 1683 00287 bsf STATUS, RP0 ; bank1
009B 3000 00288 movlw b'00000000' ;
009C 008C 00289 movwf PIE1 ;
009D 1283 00290 bcf STATUS, RP0 ; return to
009E 1303 00291 bcf STATUS, RP1 ; bank0
00292
009F 3000 00293 movlw b'00000000' ;
00A0 0090 00294 movwf T1CON ; timer, not enabled yet, no prescaler
00295
00A1 0064 00296 clrwdt ;Clear WDT
00A2 0181 00297 clrf TMR0 ;and tmr0
00298
00A3 1683 00299 bsf STATUS, RP0 ; bank1
00A4 3046 00300 movlw b'01000110' ; 128x prescaler, to TMR0 as timer, GP2 positive interr
00A5 0081 00301 movwf OPTION_REG ;
00A6 303C 00302 movlw b'00111100' ; WPU
00A7 0095 00303 movwf WPU ;
00A8 1283 00304 bcf STATUS, RP0 ; return to
00A9 1303 00305 bcf STATUS, RP1 ; bank0
00306
00AA 3001 00307 movlw 0x01 ;
00AB 00A3 00308 movwf MYSTAT ;
00AC 30F4 00309 movlw psstart ;
00AD 00A7 00310 movwf psout ;
00AE 3005 00311 movlw 0x05 ;
00AF 00A8 00312 movwf tctr ;
MPASM 4.00 Released VER1.ASM 4-4-2005 23:14:04 PAGE 9
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00313
00B0 178B 00314 bsf INTCON, GIE ;
00315
00316 ; the
00B1 28B1 00317 mloop goto mloop ;
00318
00319
00320
00321 end
MPASM 4.00 Released VER1.ASM 4-4-2005 23:14:04 PAGE 10
SYMBOL TABLE
LABEL VALUE
ADCON0 0000001F
ADCS0 00000004
ADCS1 00000005
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -