📄 datalog.lst
字号:
MPASM 03.00 Released DATALOG.ASM 3-29-2004 12:59:54 PAGE 1
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
Warning[205]: Found directive in column 1. (LIST)
00001 LIST p=18F458 ;PIC18F458 is the target processor
00002
00003 #include "P18f458.INC" ;Include header file
00001 LIST
00002 ; P18F458.INC Standard Header File, Version 1.10 Microchip Technology, Inc.
01571 LIST
00004
00005 ;====================================================================
00006 ; Macros
00007 ;--------------------------------------------------------------------
00008
00009 #define CLK_FREQ D'20000000'
00010 #define BAUD(x) ((CLK_FREQ/x)/D'64')-1
00011
00012 #define BRG_VAL BAUD(D'9600') ;Baud rate configuration value
00013
00014 ;====================================================================
00015 ; Uninitialised data
00016 ;--------------------------------------------------------------------
00017
00018 ; General temps
00000000 00019 TMP1 equ 0x000000
00000001 00020 TMP2 equ 0x000001
00021
00022 ; Current LBA sector address for reading/wring
00000002 00023 ATA_A0 equ 0x000002
00000003 00024 ATA_A1 equ 0x000003
00000004 00025 ATA_A2 equ 0x000004
00000005 00026 ATA_A3 equ 0x000005
00027
00028 ; Counter used to track data words read/written to/from ATA
00000006 00029 ATA_CNT equ 0x000006
00030
00031 ; High priority interrupt temps
00000007 00032 STATUS_TEMP_H equ 0x000007
00000008 00033 WREG_TEMP_H equ 0x000008
00000009 00034 BSR_TEMP_H equ 0x000009
00035
00036 ; Low priority interrupt temps
0000000A 00037 STATUS_TEMP_L equ 0x00000A
0000000B 00038 WREG_TEMP_L equ 0x00000B
0000000C 00039 BSR_TEMP_L equ 0x00000C
00040
00041 ; Countdown number of timer 0 overflows
0000000D 00042 T0COUNT equ 0x00000D
00043
00044 ; End of logged data
0000000E 00045 END_POSL equ 0x00000E
0000000F 00046 END_POSH equ 0x00000F
00000010 00047 END_ATA_A0 equ 0x000010
00000011 00048 END_ATA_A1 equ 0x000011
00000012 00049 END_ATA_A2 equ 0x000012
MPASM 03.00 Released DATALOG.ASM 3-29-2004 12:59:54 PAGE 2
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00000013 00050 END_ATA_A3 equ 0x000013
00051
00052 ; Temp for log data to be displayed
00000014 00053 INPDATA_L equ 0x000014
00000015 00054 INPDATA_H equ 0x000015
00055
00056 ; Countdoen the number of log entries on a display line
00000016 00057 OUT_COUNT equ 0x000016
00058
00059 ; ATA data transfer buffer
00000400 00060 ATA_BUF equ 0x000400
00000600 00061 ATA_BUF_END equ 0x000600
00062
00063 ;====================================================================
00064 ; Interrupt vectors
00065 ;--------------------------------------------------------------------
000000 00066 org 0x000000 ;Reset vector
000000 D00C 00067 bra START
00068
000008 00069 org 0x000008 ;High priority interrupt vector
000008 D052 00070 bra INT_HIGH
00071
000018 00072 org 0x000018 ;Low priority interrupt vector
000018 D05B 00073 bra INT_LOW
00074
00075 ;====================================================================
00076 ; Main program
00077 ;--------------------------------------------------------------------
00001A 00078 START
00001A D82F 00079 rcall INIT ; Program initialisation
00001C D909 00080 rcall OUT_VERSION ; Version message
00001E 00081 REHELP
00001E D910 00082 rcall OUT_HELP ; Help message
000020 00083 MLOOP
000020 D917 00084 rcall OUT_COMMAND ; Command prompt
00085
000022 D870 00086 rcall UART_Getch ; Get user input
000024 6E00 00087 movwf TMP1 ; and store
00088
000026 D91C 00089 rcall OUT_CRLF ; Newline
000028 0E68 00090 movlw 'h' ; Check for help
00002A 1800 00091 xorwf TMP1, W
00002C E0F8 00092 bz REHELP
00002E 0E48 00093 movlw 'H'
000030 1800 00094 xorwf TMP1, W
000032 E0F5 00095 bz REHELP
000034 0E76 00096 movlw 'v' ; Check for version
000036 1800 00097 xorwf TMP1, W
000038 E012 00098 bz VERSION
00003A 0E56 00099 movlw 'V'
00003C 1800 00100 xorwf TMP1, W
00003E E00F 00101 bz VERSION
000040 0E6C 00102 movlw 'l' ; Check for log start
MPASM 03.00 Released DATALOG.ASM 3-29-2004 12:59:54 PAGE 3
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
000042 1800 00103 xorwf TMP1, W
000044 E00F 00104 bz LOG
000046 0E4C 00105 movlw 'L'
000048 1800 00106 xorwf TMP1, W
00004A E00C 00107 bz LOG
00004C 0E64 00108 movlw 'd' ; Check for log dump
00004E 1800 00109 xorwf TMP1, W
000050 E010 00110 bz DUMP
000052 0E44 00111 movlw 'D'
000054 1800 00112 xorwf TMP1, W
000056 E00D 00113 bz DUMP
000058 D90B 00114 rcall OUT_UNKNOWN ; Command is unknown
00005A EF10 F000 00115 goto MLOOP
00116
00005E D8E8 00117 VERSION rcall OUT_VERSION ; Version message
000060 EF10 F000 00118 goto MLOOP
00119
000064 D90D 00120 LOG rcall OUT_LOG ; Log start message
000066 D926 00121 rcall LOG_START ; Enable logging under interrupt
000068 D84D 00122 rcall UART_Getch ; Wait for any user input
00006A D92C 00123 rcall LOG_STOP ; Terminate logging
00006C D8F9 00124 rcall OUT_CRLF
00006E EF10 F000 00125 goto MLOOP
00126
000072 D90E 00127 DUMP rcall OUT_DUMP ; Dump start message
000074 D955 00128 rcall DUMP_ALL ; Dump data
000076 EF10 F000 00129 goto MLOOP
00130
00131 ;====================================================================
00132 ; Program initialisation
00133 ;--------------------------------------------------------------------
00007A 00134 INIT
00135 ;Setup serial comms
00007A 0E90 00136 movlw b'10010000' ;Enable USART in continous receive mode
00007C 6EAB 00137 movwf RCSTA
00007E 0E22 00138 movlw b'00100010' ;Async, TX enabled, low baud rate
000080 6EAC 00139 movwf TXSTA
000082 0E1F 00140 movlw BRG_VAL ;Set baud rate
000084 6EAF 00141 movwf SPBRG
000086 50AE 00142 movf RCREG, W ;Flush out RX buffer
000088 50AE 00143 movf RCREG, W
00144
00145 ;Setup I/O ports
00008A 6A80 00146 clrf PORTA
00008C 6892 00147 setf TRISA ; Port A all input
00008E 6A81 00148 clrf PORTB
000090 6893 00149 setf TRISB ; Port B all input, ATA D0-7
000092 6A82 00150 clrf PORTC
000094 0EE0 00151 movlw B'11100000' ; Port C lower bits for ATA adressing
000096 6E94 00152 movwf TRISC
000098 0E07 00153 movlw B'00000111' ; Turn off comparitor
00009A 6EB4 00154 movwf CMCON ; On PORTD bits 0-3
00009C 6A83 00155 clrf PORTD
MPASM 03.00 Released DATALOG.ASM 3-29-2004 12:59:54 PAGE 4
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00009E 6895 00156 setf TRISD ; Port D all input, ATA D8-15
0000A0 0E03 00157 movlw B'00000011'
0000A2 6E84 00158 movwf PORTE
0000A4 0E04 00159 movlw B'00000100' ; Port E lower two bits output for ATA
0000A6 6E96 00160 movwf TRISE ; read and write
0000A8 D91E 00161 rcall LOG_RESET ; Reset log pointers
0000AA D910 00162 rcall LOG_UPDATE
0000AC 0012 00163 return
00164
00165 ;====================================================================
00166 ; High priority intrrupt handler
00167 ;--------------------------------------------------------------------
0000AE 00168 INT_HIGH
0000AE CFD8 F007 00169 movff STATUS, STATUS_TEMP_H
0000B2 CFE0 F009 00170 movff BSR, BSR_TEMP_H
0000B6 6E08 00171 movwf WREG_TEMP_H
00172
0000B8 94F2 00173 bcf INTCON, TMR0IF ;Clear timer 0 overflow interrupt flag
0000BA 2E0D 00174 decfsz T0COUNT
0000BC D003 00175 bra INT_HIGH_EXIT1
0000BE 0E14 00176 movlw D'20' ;Only start conversion every 20 timer 0 timeouts
0000C0 6E0D 00177 movwf T0COUNT
0000C2 84C2 00178 bsf ADCON0, GO ;Start ADC conversion
00179
0000C4 00180 INT_HIGH_EXIT1
0000C4 5008 00181 movf WREG_TEMP_H, W
0000C6 C009 FFE0 00182 movff BSR_TEMP_H, BSR
0000CA C007 FFD8 00183 movff STATUS_TEMP_H, STATUS
0000CE 0010 00184 retfie
00185
00186 ;====================================================================
00187 ; Low prority interrupt handler
00188 ;--------------------------------------------------------------------
0000D0 00189 INT_LOW
0000D0 CFD8 F00A 00190 movff STATUS, STATUS_TEMP_L
0000D4 CFE0 F00C 00191 movff BSR, BSR_TEMP_L
0000D8 6E0B 00192 movwf WREG_TEMP_L
00193
0000DA 50C3 00194 movf ADRESL, W ;Copy ADC result to buffer
0000DC 6EDE 00195 movwf POSTINC2
0000DE 50C4 00196 movf ADRESH, W ;Copy ADC result to buffer
0000E0 6EDE 00197 movwf POSTINC2
00198
0000E2 9C9E 00199 bcf PIR1, ADIF ;Clear ADC interrupt flag
00200
0000E4 0E06 00201 movlw HIGH(ATA_BUF_END) ; Check if at end of buffer
0000E6 62DA 00202 cpfseq FSR2H
0000E8 D007 00203 bra INT_LOW_EXIT1
0000EA 0E00 00204 movlw LOW(ATA_BUF_END)
0000EC 62D9 00205 cpfseq FSR2L
0000EE D004 00206 bra INT_LOW_EXIT1
00207
0000F0 D82A 00208 rcall ATA_Block_Write
MPASM 03.00 Released DATALOG.ASM 3-29-2004 12:59:54 PAGE 5
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0000F2 D84B 00209 rcall ATA_A_INC
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.
0000F4 EE24 F000 00210 lfsr FSR2, ATA_BUF ; Point to start of data capture buffer
00211
0000F8 00212 INT_LOW_EXIT1
0000F8 500B 00213 movf WREG_TEMP_L, W
0000FA C00C FFE0 00214 movff BSR_TEMP_L, BSR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -