📄 p18demo.lst
字号:
000104 A081 00166 btfss select ;wait for RB0 release
000106 EF?? F??? 00167 goto $-2
00168
00010A 0E00 00169 movlw 0x00 ;voltmeter
00010C 6E?? 00170 movwf ptr_pos
00010E EC?? F??? 00171 call stan_char_1
00172
000112 0E40 00173 movlw .64 ;RA4=Next RB0=Now
000114 6E?? 00174 movwf ptr_pos
000116 EC?? F??? 00175 call stan_char_2
MPASM 5.20 P18DEMO.ASM 5-28-2008 15:51:06 PAGE 5
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00011A 00176 v_wait
00011A A081 00177 btfss select ;voltmeter measurement ??
00011C D??? 00178 bra voltmeter
00011E B880 00179 btfsc scroll ;next mode ??
000120 D??? 00180 bra v_wait ;NO
000122 A880 00181 btfss scroll ;YES
000124 D??? 00182 bra $-2 ;wait for RA4 release
00183 ;------------------ BUZZER --------------------------------------
000126 00184 menu_buz
000126 A081 00185 btfss select ;wait for RB0 release
000128 D??? 00186 bra $-2
00187
00012A 0E10 00188 movlw .16 ;buzzer
00012C 6E?? 00189 movwf ptr_pos
00012E EC?? F??? 00190 call stan_char_1
00191
000132 0E40 00192 movlw .64 ;RA4=Next RB0=Now
000134 6E?? 00193 movwf ptr_pos
000136 EC?? F??? 00194 call stan_char_2
00013A 00195 b_wait
00013A A081 00196 btfss select ;Buzzer sound ??
00013C EF?? F??? 00197 goto buzzer ;YES
000140 B880 00198 btfsc scroll ;NO, next mode ??
000142 EF?? F??? 00199 goto b_wait ;NO
000146 A880 00200 btfss scroll ;YES
000148 D??? 00201 bra $-2 ;wait for RA4 release
00202 ;----------------- TEMPERATURE MEASUREMENT ----------------------
00014A 00203 menu_temp
00014A A880 00204 btfss scroll ;wait for RA4 release
00014C D??? 00205 bra $-2
00206
00014E 0E20 00207 movlw .32 ;temperature
000150 6E?? 00208 movwf ptr_pos
000152 EC?? F??? 00209 call stan_char_1
00210
000156 0E40 00211 movlw .64 ;RA4=Next RB0=Now
000158 6E?? 00212 movwf ptr_pos
00015A EC?? F??? 00213 call stan_char_2
00015E 00214 t_wait
00015E A081 00215 btfss select ;temperature measurement ??
000160 D??? 00216 bra temp ;YES
000162 B880 00217 btfsc scroll ;NO, next mode ??
000164 D??? 00218 bra t_wait ;NO
000166 A880 00219 btfss scroll ;YES
000168 D??? 00220 bra $-2 ;wait for release
00221 ;------------------ CLOCK TIME ----------------------------------
00016A 00222 menu_clock
00016A A081 00223 btfss select ;wait for RB0 release
00016C D??? 00224 bra $-2
00225
00016E 0E30 00226 movlw .48 ;clock
000170 6E?? 00227 movwf ptr_pos
000172 EC?? F??? 00228 call stan_char_1
MPASM 5.20 P18DEMO.ASM 5-28-2008 15:51:06 PAGE 6
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00229
000176 0E40 00230 movlw .64 ;RA4=Next RB0=Now
000178 6E?? 00231 movwf ptr_pos
00017A EC?? F??? 00232 call stan_char_2
00017E 00233 c_wait
00017E A081 00234 btfss select ;goto time ??
000180 D??? 00235 bra clock ;YES
000182 B880 00236 btfsc scroll ;NO, next mode ??
000184 D??? 00237 bra c_wait ;NO
000186 A880 00238 btfss scroll ;YES
000188 D??? 00239 bra $-2 ;wait for release
00240 ;-------------------------------------------------------------------
00018A D??? 00241 bra menu ;begining of menu
00018C 0012 00242 return
00243
00244 ;*******************************************************************
00245
00246
00247
00248
00249 ;************* STANDARD USER CODE **********************************
00250
00251 ;------------- Voltmeter--------------------------------------------
00018E 00252 voltmeter
00018E A081 00253 btfss select ;wait for RB0 release
000190 D??? 00254 bra $-2
00255
000192 0E41 00256 movlw B'01000001' ;configure A/D converter
000194 6EC2 00257 movwf ADCON0 ;turn A/D on
000196 0E0E 00258 movlw b'00001110' ;RA0 = analog input
000198 6EC1 00259 movwf ADCON1
00260
00019A 0EA0 00261 movlw .160 ;send "Volts = " to the LCD
00019C 6E?? 00262 movwf ptr_pos
00019E EC?? F??? 00263 call stan_char_1
0001A2 00264 volts_again
0001A2 84C2 00265 bsf ADCON0,GO ;start conversion
0001A4 B4C2 00266 btfsc ADCON0,GO
0001A6 D??? 00267 bra $-2
0001A8 50C4 00268 movf ADRESH,W
00269
0001AA 6E?? 00270 movwf AARGB0 ;move adresh into AARGB1
0001AC 0EC3 00271 movlw 0xC3 ;19.5mV/step 0xC3 = 195
0001AE 6E?? 00272 movwf BARGB0
0001B0 EC?? F??? 00273 call UMUL0808L
00274
0001B4 0E64 00275 movlw 0x64 ;divide result by 100 (0x64)
0001B6 6E?? 00276 movwf BARGB0
0001B8 EC?? F??? 00277 call UDIV1608L
00278
0001BC 50?? 00279 movf AARGB0,W ;prepare for 16-bit binary to BCD
0001BE 6E?? 00280 movwf NumH
0001C0 50?? 00281 movf AARGB1,W
MPASM 5.20 P18DEMO.ASM 5-28-2008 15:51:06 PAGE 7
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0001C2 6E?? 00282 movwf NumL
0001C4 EC?? F??? 00283 call bin16_bcd ;get volts ready for LCD
00284
0001C8 EC?? F??? 00285 call LCDLine_2 ;display A/D result on 2nd line
0001CC 50?? 00286 movf Hund,W ;get hunds
0001CE EC?? F??? 00287 call bin_bcd
0001D2 50?? 00288 movf LSD,W ;send high digit from the LSD #.xx
0001D4 6E?? 00289 movwf temp_wr
0001D6 EC?? F??? 00290 call d_write
0001DA 0E2E 00291 movlw A'.' ;send decimal point "."
0001DC 6E?? 00292 movwf temp_wr
0001DE EC?? F??? 00293 call d_write
00294
0001E2 50?? 00295 movf Tens,W ;get tens
0001E4 EC?? F??? 00296 call bin_bcd
0001E8 50?? 00297 movf LSD,W ;send low digit x.#x
0001EA 6E?? 00298 movwf temp_wr
0001EC EC?? F??? 00299 call d_write
00300
0001F0 50?? 00301 movf Ones,W ;get ones
0001F2 EC?? F??? 00302 call bin_bcd
0001F6 50?? 00303 movf LSD,W ;send low digit x.x#
0001F8 6E?? 00304 movwf temp_wr
0001FA EC?? F??? 00305 call d_write
0001FE 0E56 00306 movlw A'V' ;send "V" unit
000200 6E?? 00307 movwf temp_wr
000202 EC?? F??? 00308 call d_write
00309
000206 0E20 00310 movlw 0x20 ;3 spaces
000208 6E?? 00311 movwf temp_wr
00020A EC?? F??? 00312 call d_write
00020E 0E20 00313 movlw 0x20
000210 6E?? 00314 movwf temp_wr
000212 EC?? F??? 00315 call d_write
000216 0E20 00316 movlw 0x20
000218 6E?? 00317 movwf temp_wr
00021A EC?? F??? 00318 call d_write
00021E 0E52 00319 movlw A'R' ;send "RB0=Exit" to LCD
000220 6E?? 00320 movwf temp_wr
000222 EC?? F??? 00321 call d_write
000226 0E42 00322 movlw A'B'
000228 6E?? 00323 movwf temp_wr
00022A EC?? F??? 00324 call d_write
00022E 0E30 00325 movlw A'0'
000230 6E?? 00326 movwf temp_wr
000232 EC?? F??? 00327 call d_write
000236 0E3D 00328 movlw A'='
000238 6E?? 00329 movwf temp_wr
00023A EC?? F??? 00330 call d_write
00023E 0E45 00331 movlw A'E'
000240 6E?? 00332 movwf temp_wr
000242 EC?? F??? 00333 call d_write
000246 0E78 00334 movlw A'x'
MPASM 5.20 P18DEMO.ASM 5-28-2008 15:51:06 PAGE 8
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
000248 6E?? 00335 movwf temp_wr
00024A EC?? F??? 00336 call d_write
00024E 0E69 00337 movlw A'i'
000250 6E?? 00338 movwf temp_wr
000252 EC?? F??? 00339 call d_write
000256 0E74 00340 movlw A't'
000258 6E?? 00341 movwf temp_wr
00025A EC?? F??? 00342 call d_write
00025E 0E20 00343 movlw 0x20 ;2 spaces
000260 6E?? 00344 movwf temp_wr
000262 EC?? F??? 00345 call d_write
000266 0E20 00346 movlw 0x20
000268 6E?? 00347 movwf temp_wr
00026A EC?? F??? 00348 call d_write
00349
00026E 0E0D 00350 movlw "\r" ;move data into TXREG
000270 6EAD 00351 movwf TXREG ;carriage return
000272 A2AC 00352 btfss TXSTA,TRMT ;wait for data TX
000274 D??? 00353 bra $-2
00354
000276 A081 00355 btfss select ;exit volt measurement ??
000278 D??? 00356 bra menu_buz ;YES
00027A D??? 00357 bra volts_again ;NO, do conversion again
00358
00359 ;--------------------- BUZZER --------------------------------------
00027C 00360 buzzer
00027C A081 00361 btfss select ;wait for RB0 release
00027E D??? 00362 bra $-2
00363
000280 0E80 00364 movlw 0x80 ;start at these PWM values
000282 6ECB 00365 movwf PR2 ;initialize PWM period
000284 0E80 00366 movlw 0x80
000286 6EBE 00367 movwf CCPR1L ;initialize PWM duty cycle
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -