⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datalog.lst

📁 该应用软件可以实现大多数单片机的仿真实验
💻 LST
📖 第 1 页 / 共 5 页
字号:
                      00437 ; | 0x13 | LBA 0-7                    |
                      00438 ; | 0x14 | LBA 8-15                   |
                      00439 ; | 0x15 | LBA 16-23                  |
                      00440 ; | 0x16 | LBA 24-27                  |
                      00441 ; | 0x17 | Command                    |
                      00442 ; +------+----------------------------+
                      00443 
                      00444 ;====================================================================
                      00445 ; Read a register from the ATA drive (16 bit)
                      00446 ;--------------------------------------------------------------------
                      00447 ; W    contains address
                      00448 ; TMP1 contains data low
                      00449 ; TMP2 contains data high
                      00450 ;--------------------------------------------------------------------
0001F4                00451 ATA_Reg16_Read
0001F4 AA82           00452         btfss   PORTC, 5        ; Wait until ready
0001F6 D7FE           00453         bra     ATA_Reg16_Read
0001F8 0B1F           00454         andlw   B'00011111'     ; Set address
0001FA 6E82           00455         movwf   PORTC
0001FC 908D           00456         bcf     LATE, 0         ; DIOR low
0001FE 0000           00457         nop                     ; Wait
000200 0000           00458         nop
000202 5081           00459         movf    PORTB, W        ; Get data
000204 6E00           00460         movwf   TMP1
000206 5083           00461         movf    PORTD, W
000208 6E01           00462         movwf   TMP2
00020A 808D           00463         bsf     LATE, 0         ; DIOR high
00020C 0012           00464         return
                      00465 
                      00466 ;====================================================================
                      00467 ; Write a register to the ATA drive (16 bit)
MPASM 03.00 Released          DATALOG.ASM   3-29-2004  12:59:54         PAGE 10


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00468 ;--------------------------------------------------------------------
                      00469 ; W    contains address
                      00470 ; TMP1 contains data low
                      00471 ; TMP2 contains data high
                      00472 ;--------------------------------------------------------------------
00020E                00473 ATA_Reg16_Write
00020E AA82           00474         btfss   PORTC, 5        ; Wait until ready
000210 D7FE           00475         bra     ATA_Reg16_Write
000212 0B1F           00476         andlw   B'00011111'     ; Set address
000214 6E82           00477         movwf   PORTC
000216 5000           00478         movf    TMP1, W         ; Set data
000218 6E81           00479         movwf   PORTB
00021A 5001           00480         movf    TMP2, W
00021C 6E83           00481         movwf   PORTD
00021E 6A93           00482         clrf    TRISB           ; Port for output
000220 6A95           00483         clrf    TRISD
000222 928D           00484         bcf     LATE, 1         ; DIOW low
000224 0000           00485         nop                     ; Wait
000226 0000           00486         nop
000228 828D           00487         bsf     LATE, 1         ; DIOW high
00022A 6893           00488         setf    TRISB           ; Ports for input
00022C 6895           00489         setf    TRISD
00022E 0012           00490         return
                      00491 
                      00492 ;====================================================================
                      00493 ; Output string routines
                      00494 ;--------------------------------------------------------------------
000230                00495 OUT_VERSION
000230 0E00           00496         movlw   UPPER(MSG_VERSION)
000232 6EF8           00497         movwf   TBLPTRU
000234 0E03           00498         movlw   HIGH(MSG_VERSION)
000236 6EF7           00499         movwf   TBLPTRH
000238 0E98           00500         movlw   LOW(MSG_VERSION)
00023A 6EF6           00501         movwf   TBLPTRL
00023C EF8C F000      00502         goto    UART_Puts
000240                00503 OUT_HELP
000240 0E00           00504         movlw   UPPER(MSG_HELP)
000242 6EF8           00505         movwf   TBLPTRU
000244 0E03           00506         movlw   HIGH(MSG_HELP)
000246 6EF7           00507         movwf   TBLPTRH
000248 0EC8           00508         movlw   LOW(MSG_HELP)
00024A 6EF6           00509         movwf   TBLPTRL
00024C EF8C F000      00510         goto    UART_Puts
000250                00511 OUT_COMMAND
000250 0E00           00512         movlw   UPPER(MSG_COMMAND)
000252 6EF8           00513         movwf   TBLPTRU
000254 0E03           00514         movlw   HIGH(MSG_COMMAND)
000256 6EF7           00515         movwf   TBLPTRH
000258 0EB6           00516         movlw   LOW(MSG_COMMAND)
00025A 6EF6           00517         movwf   TBLPTRL
00025C EF8C F000      00518         goto    UART_Puts
000260                00519 OUT_CRLF
000260 0E00           00520         movlw   UPPER(MSG_CRLF)
MPASM 03.00 Released          DATALOG.ASM   3-29-2004  12:59:54         PAGE 11


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

000262 6EF8           00521         movwf   TBLPTRU
000264 0E03           00522         movlw   HIGH(MSG_CRLF)
000266 6EF7           00523         movwf   TBLPTRH
000268 0EC4           00524         movlw   LOW(MSG_CRLF)
00026A 6EF6           00525         movwf   TBLPTRL
00026C EF8C F000      00526         goto    UART_Puts
000270                00527 OUT_UNKNOWN
000270 0E00           00528         movlw   UPPER(MSG_UNKNOWN)
000272 6EF8           00529         movwf   TBLPTRU
000274 0E04           00530         movlw   HIGH(MSG_UNKNOWN)
000276 6EF7           00531         movwf   TBLPTRH
000278 0E0E           00532         movlw   LOW(MSG_UNKNOWN)
00027A 6EF6           00533         movwf   TBLPTRL
00027C EF8C F000      00534         goto    UART_Puts
000280                00535 OUT_LOG
000280 0E00           00536         movlw   UPPER(MSG_LOG)
000282 6EF8           00537         movwf   TBLPTRU
000284 0E04           00538         movlw   HIGH(MSG_LOG)
000286 6EF7           00539         movwf   TBLPTRH
000288 0E22           00540         movlw   LOW(MSG_LOG)
00028A 6EF6           00541         movwf   TBLPTRL
00028C EF8C F000      00542         goto    UART_Puts
000290                00543 OUT_DUMP
000290 0E00           00544         movlw   UPPER(MSG_DUMP)
000292 6EF8           00545         movwf   TBLPTRU
000294 0E04           00546         movlw   HIGH(MSG_DUMP)
000296 6EF7           00547         movwf   TBLPTRH
000298 0E46           00548         movlw   LOW(MSG_DUMP)
00029A 6EF6           00549         movwf   TBLPTRL
00029C EF8C F000      00550         goto    UART_Puts
                      00551 
                      00552 ;====================================================================
                      00553 ; Output value to USART as two hexadecimal digits
                      00554 ;--------------------------------------------------------------------
                      00555 ; W contains value to be output
                      00556 ;--------------------------------------------------------------------
0002A0                00557 OUT_HEX
0002A0 6E00           00558         movwf   TMP1
0002A2 3800           00559         swapf   TMP1, W
0002A4 D801           00560         rcall   OUT_HEX_SUB1
0002A6 5000           00561         movf    TMP1, W
0002A8                00562 OUT_HEX_SUB1
0002A8 0B0F           00563         andlw   0x0F
0002AA 0FF6           00564         addlw   0xF6
0002AC B0D8           00565         btfsc   STATUS, C
0002AE 0F07           00566         addlw   0x07
0002B0 0F3A           00567         addlw   0x3A
0002B2 D72D           00568         bra     UART_Putch
                      00569 
                      00570 ;====================================================================
                      00571 ; Start logging
                      00572 ;--------------------------------------------------------------------
0002B4                00573 LOG_START
MPASM 03.00 Released          DATALOG.ASM   3-29-2004  12:59:54         PAGE 12


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0002B4 D818           00574         rcall   LOG_RESET
0002B6 D81B           00575         rcall   INIT_ADC
0002B8 D822           00576         rcall   INIT_TIMER
0002BA D828           00577         rcall   START_TIMER
0002BC 8ED0           00578         bsf     RCON, IPEN      ; Enable interrupt priority
0002BE 8EF2           00579         bsf     INTCON, GIEH    ; Enable high prority interrupts
0002C0 8CF2           00580         bsf     INTCON, GIEL    ; Enable low prority interrupts
0002C2 0012           00581         return
                      00582 
                      00583 ;====================================================================
                      00584 ; Stop logging
                      00585 ;--------------------------------------------------------------------
0002C4                00586 LOG_STOP
0002C4 9EF2           00587         bcf     INTCON, 7       ; Disable interrupts
0002C6 D824           00588         rcall   STOP_TIMER
0002C8 D827           00589         rcall   STOP_ADC
0002CA DF3D           00590         rcall   ATA_Block_Write ; Flush buffer to disk
0002CC                00591 LOG_UPDATE
0002CC CFD9 F00E      00592         movff   FSR2L, END_POSL ; Copy over to end log pointers
0002D0 CFDA F00F      00593         movff   FSR2H, END_POSH
0002D4 C002 F010      00594         movff   ATA_A0, END_ATA_A0
0002D8 C003 F011      00595         movff   ATA_A1, END_ATA_A1
0002DC C004 F012      00596         movff   ATA_A2, END_ATA_A2
0002E0 C005 F013      00597         movff   ATA_A3, END_ATA_A3
0002E4 0012           00598         return
                      00599 
                      00600 ;====================================================================
                      00601 ; Reset log ready for start of logging
                      00602 ;--------------------------------------------------------------------
0002E6                00603 LOG_RESET
Message[314]: LFSR instruction is not supported on some versions of the 18Cxx2 devices.
Message[315]: Please refer to Microchip document DS80058A for more details.
0002E6 EE24 F000      00604         lfsr    FSR2, ATA_BUF   ; Point to start of data capture buffer
0002EA DF4A           00605         rcall   ATA_A_RESET
0002EC 0012           00606         return
                      00607 
                      00608 ;====================================================================
                      00609 ; Initialise ADC converter
                      00610 ;--------------------------------------------------------------------
0002EE                00611 INIT_ADC
0002EE 0E0E           00612         movlw   B'00001110'
0002F0 6EC1           00613         movwf   ADCON1
0002F2 0EC1           00614         movlw   B'11000001'
0002F4 6EC2           00615         movwf   ADCON0
0002F6 9C9F           00616         bcf     IPR1, ADIP      ; Low priority
0002F8 9C9E           00617         bcf     PIR1, ADIF      ; Clear any pending interrupt
0002FA 8C9D           00618         bsf     PIE1, ADIE      ; Enable ADC conversion interrupt
                      00619 
0002FC 0012           00620         return
                      00621 
                      00622 ;====================================================================
                      00623 ; Initialise timer 0
                      00624 ;--------------------------------------------------------------------
MPASM 03.00 Released          DATALOG.ASM   3-29-2004  12:59:54         PAGE 13


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0002FE                00625 INIT_TIMER
0002FE 0E46           00626         movlw   B'01000110'
000300 6ED5           00627         movwf   T0CON
000302 0E01           00628         movlw   D'1'            ; Setup countdown on TMR0 for ADC trigger
000304 6E0D           00629         movwf   T0COUNT
000306 94F2           00630         bcf     INTCON, TMR0IF  ; Clear any pending TMR0 overflow interrupt
000308 8AF2           00631         bsf     INTCON, TMR0IE  ; Enable timer 0 overflow interrupt
00030A 0012           00632         return
                      00633 
                      00634 ;====================================================================
                      00635 ; Start timer 0
                      00636 ;--------------------------------------------------------------------
00030C                00637 START_TIMER
00030C 8ED5           00638         bsf     T0CON, 7        ; Start timer 0
00030E 0012           00639         return
                      00640 
                      00641 ;====================================================================
                      00642 ; Stop timer 0
                      00643 ;--------------------------------------------------------------------
000310                00644 STOP_TIMER
000310 9AF2           00645         bcf     INTCON, TMR0IE  ; Disable timer 0 overflow interrupt
000312 94F2           00646         bcf     INTCON, TMR0IF  ; Clear any pending TMR0 overflow interrupt
000314 9ED5           00647         bcf     T0CON, 7        ; Stop timer 0
000316 0012           00648         return
                      00649 
                      00650 ;====================================================================
                      00651 ; Stop ADC conversion
                      00652 ;--------------------------------------------------------------------
000318                00653 STOP_ADC
000318 9C9D           00654         bcf     PIE1, ADIE      ; Diasable ADC conversion interrupt
00031A 9C9E           00655         bcf     PIR1, ADIF      ; Clear any pending interrupt
00031C 90C2           00656         bcf     ADCON0, ADON    ; Turn off ADC module
00031E 0012           00657         return
                      00658 
                      00659 ;====================================================================
                      00660 ; Dump data from ATA to USART in hex

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -