📄 p18demo.lst
字号:
0003E2 EC?? F??? 00546 call d_write
0003E6 0E20 00547 movlw 0x20 ;space
0003E8 6E?? 00548 movwf temp_wr
0003EA EC?? F??? 00549 call d_write
0003EE 0E3D 00550 movlw A'='
0003F0 6E?? 00551 movwf temp_wr
0003F2 EC?? F??? 00552 call d_write
00553
0003F6 0E20 00554 movlw 0x20 ;space
0003F8 6E?? 00555 movwf temp_wr
0003FA EC?? F??? 00556 call d_write
00557
0003FE 50?? 00558 movf MSD,W ;send high digit
000400 6E?? 00559 movwf temp_wr
000402 EC?? F??? 00560 call d_write
000406 50?? 00561 movf MsD,W ;send middle digit
000408 6E?? 00562 movwf temp_wr
00040A EC?? F??? 00563 call d_write
00040E 50?? 00564 movf LSD,W ;send low digit
000410 6E?? 00565 movwf temp_wr
000412 EC?? F??? 00566 call d_write
000416 0E43 00567 movlw A'C' ;send "C" for celcius
000418 6E?? 00568 movwf temp_wr
00041A EC?? F??? 00569 call d_write
00570
00041E 0E20 00571 movlw 0x20 ;space
000420 6E?? 00572 movwf temp_wr
000422 EC?? F??? 00573 call d_write
000426 0E20 00574 movlw 0x20 ;space
000428 6E?? 00575 movwf temp_wr
MPASM 5.20 P18DEMO.ASM 5-28-2008 15:51:06 PAGE 13
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00042A EC?? F??? 00576 call d_write
00042E 0E20 00577 movlw 0x20 ;space
000430 6E?? 00578 movwf temp_wr
000432 EC?? F??? 00579 call d_write
00580
000436 EC?? F??? 00581 call LCDLine_2 ;send "RB0 = Exit" to LCD
00043A 0E90 00582 movlw .144
00043C 6E?? 00583 movwf ptr_pos
00043E EC?? F??? 00584 call stan_char_2
00585
000442 A081 00586 btfss select ;wait for RB0 release
000444 D??? 00587 bra $-2
000446 EC?? F??? 00588 call delay_100ms
00044A A081 00589 btfss select ;exit ?
00044C D??? 00590 bra menu_clock ;YES, goto main menu
00044E B09E 00591 btfsc PIR1,TMR1IF ;2 second overflow occur ??
000450 EC?? F??? 00592 call write_eeprom ;YES
000454 D??? 00593 bra get_temp ;NO, get temperature again
00594
00595
00596 ;----------------- CLOCK ------------------------------------------
00597
000456 00598 clock
000456 A081 00599 btfss select ;wait for RB0 button release
000458 D??? 00600 bra $-2
00045A 0E0F 00601 movlw 0x0F ;intitialize TIMER1
00045C 6ECD 00602 movwf T1CON
00045E 6A?? 00603 clrf seconds
000460 6A?? 00604 clrf minutes
000462 6A?? 00605 clrf hours
000464 00606 overflow
000464 909E 00607 bcf PIR1,TMR1IF
000466 0E80 00608 movlw 0x80
000468 6ECF 00609 movwf TMR1H ;load regs for 1 sec overflow
00046A 6ACE 00610 clrf TMR1L
00611
00046C 2A?? 00612 incf seconds,F ;increment seconds
00046E 50?? 00613 movf seconds,W
000470 083C 00614 sublw .60
000472 A4D8 00615 btfss STATUS,Z ;increment minutes ?
000474 D??? 00616 bra clk_done
000476 2A?? 00617 incf minutes,F
000478 6A?? 00618 clrf seconds
00619
00047A 50?? 00620 movf minutes,W
00047C 083C 00621 sublw .60
00047E A4D8 00622 btfss STATUS,Z ;increment hours ?
000480 D??? 00623 bra clk_done
000482 2A?? 00624 incf hours,F
000484 6A?? 00625 clrf minutes
00626
000486 50?? 00627 movf hours,W
000488 080D 00628 sublw .13
MPASM 5.20 P18DEMO.ASM 5-28-2008 15:51:06 PAGE 14
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00048A A4D8 00629 btfss STATUS,Z
00048C D??? 00630 bra clk_done
00048E 0E01 00631 movlw .1 ;start a new 12 hour period
000490 6E?? 00632 movwf hours
000492 00633 clk_done
000492 50?? 00634 movf hours,W ;send hours to LCD
000494 EC?? F??? 00635 call bin_bcd
00636
000498 EC?? F??? 00637 call LCDLine_1 ;place time on line 1
00638
00049C 50?? 00639 movf MsD,W ;send middle digit
00049E 6E?? 00640 movwf temp_wr
0004A0 EC?? F??? 00641 call d_write
0004A4 50?? 00642 movf LSD,W ;send low digit
0004A6 6E?? 00643 movwf temp_wr
0004A8 EC?? F??? 00644 call d_write
0004AC 0E3A 00645 movlw 0x3A ;send : colon
0004AE 6E?? 00646 movwf temp_wr
0004B0 EC?? F??? 00647 call d_write
00648
0004B4 50?? 00649 movf minutes,W ;send minutes to LCD
0004B6 EC?? F??? 00650 call bin_bcd
00651
0004BA 50?? 00652 movf MsD,W ;send middle digit
0004BC 6E?? 00653 movwf temp_wr
0004BE EC?? F??? 00654 call d_write
0004C2 50?? 00655 movf LSD,W ;send low digit
0004C4 6E?? 00656 movwf temp_wr
0004C6 EC?? F??? 00657 call d_write
0004CA 0E3A 00658 movlw 0x3A ; send : colon
0004CC 6E?? 00659 movwf temp_wr
0004CE EC?? F??? 00660 call d_write
00661
0004D2 50?? 00662 movf seconds,W ;send seconds to LCD
0004D4 EC?? F??? 00663 call bin_bcd
00664
0004D8 50?? 00665 movf MsD,W ;send middle digit
0004DA 6E?? 00666 movwf temp_wr
0004DC EC?? F??? 00667 call d_write
0004E0 50?? 00668 movf LSD,W ;send low digit
0004E2 6E?? 00669 movwf temp_wr
0004E4 EC?? F??? 00670 call d_write
00671
0004E8 0E20 00672 movlw 0x20 ;send 3 spaces after 00:00:00
0004EA 6E?? 00673 movwf temp_wr
0004EC EC?? F??? 00674 call d_write
0004F0 0E20 00675 movlw 0x20
0004F2 6E?? 00676 movwf temp_wr
0004F4 EC?? F??? 00677 call d_write
0004F8 0E20 00678 movlw 0x20
0004FA 6E?? 00679 movwf temp_wr
0004FC EC?? F??? 00680 call d_write
00681
MPASM 5.20 P18DEMO.ASM 5-28-2008 15:51:06 PAGE 15
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
000500 0E70 00682 movlw .112 ;send "RA4=Dn RB0=Menu" to LCD
000502 6E?? 00683 movwf ptr_pos
000504 EC?? F??? 00684 call stan_char_2
00685
000508 A880 00686 btfss scroll ;set time ??
00050A D??? 00687 bra set_time
00688
00050C A081 00689 btfss select ;return to main menu ??
00050E D??? 00690 bra menu
00691
000510 A09E 00692 btfss PIR1,TMR1IF ;has timer1 overflowed ?
000512 D??? 00693 bra $-2 ;NO, wait til overflow
000514 D??? 00694 bra overflow ;YES
00695
000516 0012 00696 return
00697 ;*******************************************************************
00698
00699
00700 ;************************** ROUTINES ******************************
00701 ;******************************************************************
00702 ;******************************************************************
00703
00704 ;----Standard code, Place characters on line-1--------------------------
000518 00705 stan_char_1
000518 EC?? F??? 00706 call LCDLine_1 ;mvoe cursor to line 1
00051C 0E10 00707 movlw .16 ;1-full line of LCD
00051E 6E?? 00708 movwf ptr_count
000520 0E?? 00709 movlw UPPER stan_table
000522 6EF8 00710 movwf TBLPTRU
000524 0E?? 00711 movlw HIGH stan_table
000526 6EF7 00712 movwf TBLPTRH
000528 0E?? 00713 movlw LOW stan_table
00052A 6EF6 00714 movwf TBLPTRL
00052C 50?? 00715 movf ptr_pos,W
00052E 26F6 00716 addwf TBLPTRL,F
000530 6AE8 00717 clrf WREG
000532 22F7 00718 addwfc TBLPTRH,F
000534 22F8 00719 addwfc TBLPTRU,F
00720
000536 00721 stan_next_char_1
000536 0009 00722 tblrd *+
000538 CFF5 F??? 00723 movff TABLAT,temp_wr
00053C EC?? F??? 00724 call d_write ;send character to LCD
00725
000540 2E?? 00726 decfsz ptr_count,F ;move pointer to next char
000542 D??? 00727 bra stan_next_char_1
00728
000544 0E0A 00729 movlw "\n" ;move data into TXREG
000546 6EAD 00730 movwf TXREG ;next line
000548 A2AC 00731 btfss TXSTA,TRMT ;wait for data TX
00054A EF?? F??? 00732 goto $-2
00054E 0E0D 00733 movlw "\r" ;move data into TXREG
000550 6EAD 00734 movwf TXREG ;carriage return
MPASM 5.20 P18DEMO.ASM 5-28-2008 15:51:06 PAGE 16
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
000552 A2AC 00735 btfss TXSTA,TRMT ;wait for data TX
000554 EF?? F??? 00736 goto $-2
00737
000558 0012 00738 return
00739
00740 ;----Standard code, Place characters on line-2--------------------------
00055A 00741 stan_char_2
00055A EC?? F??? 00742 call LCDLine_2 ;move cursor to line 2
00055E 0E10 00743 movlw .16 ;1-full line of LCD
000560 6E?? 00744 movwf ptr_count
000562 0E?? 00745 movlw UPPER stan_table
000564 6EF8 00746 movwf TBLPTRU
000566 0E?? 00747 movlw HIGH stan_table
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -