📄 adc_on_lcd.lst
字号:
$01A6 $0DF0 RLF STACK_0, F
$01A7 $0DF1 RLF STACK_1, F
$01A8 $0BFC DECFSZ STACK_12, F
$01A9 $2994 GOTO $-21
$01AA $0008 RETURN
$01AB $ _main:
$01AB $3020 MOVLW 32
$01AC $1303 BCF STATUS, RP1
$01AD $1283 BCF STATUS, RP0
$01AE $00AA MOVWF lstr1_ADC_on_LCD+0
$01AF $303E MOVLW 62
$01B0 $00AB MOVWF lstr1_ADC_on_LCD+1
$01B1 $3053 MOVLW 83
$01B2 $00AC MOVWF lstr1_ADC_on_LCD+2
$01B3 $3041 MOVLW 65
$01B4 $00AD MOVWF lstr1_ADC_on_LCD+3
$01B5 $3049 MOVLW 73
$01B6 $00AE MOVWF lstr1_ADC_on_LCD+4
$01B7 $302D MOVLW 45
$01B8 $00AF MOVWF lstr1_ADC_on_LCD+5
$01B9 $3055 MOVLW 85
$01BA $00B0 MOVWF lstr1_ADC_on_LCD+6
$01BB $304E MOVLW 78
$01BC $00B1 MOVWF lstr1_ADC_on_LCD+7
$01BD $3049 MOVLW 73
$01BE $00B2 MOVWF lstr1_ADC_on_LCD+8
$01BF $3056 MOVLW 86
$01C0 $00B3 MOVWF lstr1_ADC_on_LCD+9
$01C1 $3045 MOVLW 69
$01C2 $00B4 MOVWF lstr1_ADC_on_LCD+10
$01C3 $3052 MOVLW 82
$01C4 $00B5 MOVWF lstr1_ADC_on_LCD+11
$01C5 $3053 MOVLW 83
$01C6 $00B6 MOVWF lstr1_ADC_on_LCD+12
$01C7 $303C MOVLW 60
$01C8 $00B7 MOVWF lstr1_ADC_on_LCD+13
$01C9 $01B8 CLRF lstr1_ADC_on_LCD+14
$01CA $303E MOVLW 62
$01CB $00B9 MOVWF lstr2_ADC_on_LCD+0
$01CC $304C MOVLW 76
$01CD $00BA MOVWF lstr2_ADC_on_LCD+1
$01CE $3043 MOVLW 67
$01CF $00BB MOVWF lstr2_ADC_on_LCD+2
$01D0 $3044 MOVLW 68
$01D1 $00BC MOVWF lstr2_ADC_on_LCD+3
$01D2 $3020 MOVLW 32
$01D3 $00BD MOVWF lstr2_ADC_on_LCD+4
$01D4 $3056 MOVLW 86
$01D5 $00BE MOVWF lstr2_ADC_on_LCD+5
$01D6 $304F MOVLW 79
$01D7 $00BF MOVWF lstr2_ADC_on_LCD+6
$01D8 $304C MOVLW 76
$01D9 $00C0 MOVWF lstr2_ADC_on_LCD+7
$01DA $3054 MOVLW 84
$01DB $00C1 MOVWF lstr2_ADC_on_LCD+8
$01DC $3020 MOVLW 32
$01DD $00C2 MOVWF lstr2_ADC_on_LCD+9
$01DE $304D MOVLW 77
$01DF $00C3 MOVWF lstr2_ADC_on_LCD+10
$01E0 $3045 MOVLW 69
$01E1 $00C4 MOVWF lstr2_ADC_on_LCD+11
$01E2 $3054 MOVLW 84
$01E3 $00C5 MOVWF lstr2_ADC_on_LCD+12
$01E4 $3045 MOVLW 69
$01E5 $00C6 MOVWF lstr2_ADC_on_LCD+13
$01E6 $3052 MOVLW 82
$01E7 $00C7 MOVWF lstr2_ADC_on_LCD+14
$01E8 $01C8 CLRF lstr2_ADC_on_LCD+15
$01E9 $3076 MOVLW 118
$01EA $00C9 MOVWF lstr3_ADC_on_LCD+0
$01EB $306F MOVLW 111
$01EC $00CA MOVWF lstr3_ADC_on_LCD+1
$01ED $306C MOVLW 108
$01EE $00CB MOVWF lstr3_ADC_on_LCD+2
$01EF $3074 MOVLW 116
$01F0 $00CC MOVWF lstr3_ADC_on_LCD+3
$01F1 $3061 MOVLW 97
$01F2 $00CD MOVWF lstr3_ADC_on_LCD+4
$01F3 $3067 MOVLW 103
$01F4 $00CE MOVWF lstr3_ADC_on_LCD+5
$01F5 $3065 MOVLW 101
$01F6 $00CF MOVWF lstr3_ADC_on_LCD+6
$01F7 $303A MOVLW 58
$01F8 $00D0 MOVWF lstr3_ADC_on_LCD+7
$01F9 $01D1 CLRF lstr3_ADC_on_LCD+8
;ADC_on_LCD.c,26 :: void main() {
;ADC_on_LCD.c,27 :: INTCON = 0; // disable all interrupts
$01FA $018B CLRF INTCON, 1
;ADC_on_LCD.c,28 :: LCD_Init(&PORTD); // initialize (4-bit interface connection)
$01FB $3008 MOVLW PORTD
$01FC $00D2 MOVWF FARG_Lcd_Init+0
$01FD $206F CALL _Lcd_Init
;ADC_on_LCD.c,29 :: LCD_Cmd(LCD_CURSOR_OFF); // send command to LCD (cursor off)
$01FE $300C MOVLW 12
$01FF $00D7 MOVWF FARG_Lcd_Cmd+0
$0200 $2020 CALL _Lcd_Cmd
;ADC_on_LCD.c,30 :: LCD_Cmd(LCD_CLEAR); // send command to LCD (clear LCD)
$0201 $3001 MOVLW 1
$0202 $00D7 MOVWF FARG_Lcd_Cmd+0
$0203 $2020 CALL _Lcd_Cmd
;ADC_on_LCD.c,32 :: tc = " >SAI-UNIVERS<"; // assign text to string a
$0204 $302A MOVLW lstr1_ADC_on_LCD
$0205 $00A2 MOVWF _tc
;ADC_on_LCD.c,33 :: LCD_Out(1,1,tc); // print string a on LCD, 1st row, 1st column
$0206 $3001 MOVLW 1
$0207 $00D2 MOVWF FARG_LCD_Out+0
$0208 $3001 MOVLW 1
$0209 $00D3 MOVWF FARG_LCD_Out+1
$020A $0822 MOVF _tc, 0
$020B $00D4 MOVWF FARG_LCD_Out+2
$020C $20BB CALL _LCD_Out
;ADC_on_LCD.c,34 :: tc = ">LCD VOLT METER"; // assign text to string a
$020D $3039 MOVLW lstr2_ADC_on_LCD
$020E $00A2 MOVWF _tc
;ADC_on_LCD.c,35 :: LCD_Out(2,1,tc); // print string a on LCD, 2nd row, 1st column
$020F $3002 MOVLW 2
$0210 $00D2 MOVWF FARG_LCD_Out+0
$0211 $3001 MOVLW 1
$0212 $00D3 MOVWF FARG_LCD_Out+1
$0213 $0822 MOVF _tc, 0
$0214 $00D4 MOVWF FARG_LCD_Out+2
$0215 $20BB CALL _LCD_Out
;ADC_on_LCD.c,37 :: OPTION_REG = 0x80;
$0216 $3080 MOVLW 128
$0217 $1683 BSF STATUS, RP0
$0218 $0081 MOVWF OPTION_REG
;ADC_on_LCD.c,38 :: ADCON1 = 0x82; // configure VDD as Vref, and analog channels
$0219 $3082 MOVLW 130
$021A $009F MOVWF ADCON1
;ADC_on_LCD.c,39 :: TRISA = 0xFF; // designate porta as input
$021B $30FF MOVLW 255
$021C $0085 MOVWF TRISA
;ADC_on_LCD.c,40 :: TRISC = 0;
$021D $0187 CLRF TRISC, 1
;ADC_on_LCD.c,41 :: TRISD = 0;
$021E $0188 CLRF TRISD, 1
;ADC_on_LCD.c,42 :: Delay_ms(2000);
$021F $3015 MOVLW 21
$0220 $00FC MOVWF STACK_12
$0221 $30FF MOVLW 255
$0222 $00FB MOVWF STACK_11
$0223 $30FF MOVLW 255
$0224 $00FA MOVWF STACK_10
$0225 $0BFC DECFSZ STACK_12, F
$0226 $2A28 GOTO $+2
$0227 $2A2F GOTO $+8
$0228 $0BFB DECFSZ STACK_11, F
$0229 $2A2B GOTO $+2
$022A $2A2E GOTO $+4
$022B $0BFA DECFSZ STACK_10, F
$022C $2A2B GOTO $-1
$022D $2A28 GOTO $-5
$022E $2A25 GOTO $-9
$022F $3066 MOVLW 102
$0230 $00FB MOVWF STACK_11
$0231 $30FF MOVLW 255
$0232 $00FA MOVWF STACK_10
$0233 $0BFB DECFSZ STACK_11, F
$0234 $2A36 GOTO $+2
$0235 $2A39 GOTO $+4
$0236 $0BFA DECFSZ STACK_10, F
$0237 $2A36 GOTO $-1
$0238 $2A33 GOTO $-5
$0239 $3013 MOVLW 19
$023A $00FA MOVWF STACK_10
$023B $0BFA DECFSZ STACK_10, F
$023C $2A3B GOTO $-1
;ADC_on_LCD.c,43 :: tc = "voltage:"; // assign text to string a
$023D $3049 MOVLW lstr3_ADC_on_LCD
$023E $1283 BCF STATUS, RP0
$023F $00A2 MOVWF _tc
;ADC_on_LCD.c,44 :: while (1) {
$0240 $ L_main_0:
;ADC_on_LCD.c,45 :: t = ADC_read(2); // get ADC value from 2nd channel
$0240 $3002 MOVLW 2
$0241 $00D2 MOVWF FARG_Adc_Read+0
$0242 $20FE CALL _Adc_Read
$0243 $0870 MOVF STACK_0, 0
$0244 $1283 BCF STATUS, RP0
$0245 $00A3 MOVWF _t
$0246 $0871 MOVF STACK_0+1, 0
$0247 $00A4 MOVWF _t+1
;ADC_on_LCD.c,46 :: LCD_Out(2,1,tc); // print string a on LCD, 2nd row, 1st column
$0248 $3002 MOVLW 2
$0249 $00D2 MOVWF FARG_LCD_Out+0
$024A $3001 MOVLW 1
$024B $00D3 MOVWF FARG_LCD_Out+1
$024C $0822 MOVF _tc, 0
$024D $00D4 MOVWF FARG_LCD_Out+2
$024E $20BB CALL _LCD_Out
;ADC_on_LCD.c,48 :: tlong = t * 5000; // use (int) multiplication instead of (long)
$024F $0823 MOVF _t, 0
$0250 $00F0 MOVWF STACK_0
$0251 $0824 MOVF _t+1, 0
$0252 $00F1 MOVWF STACK_0+1
$0253 $3088 MOVLW 136
$0254 $00F4 MOVWF STACK_4
$0255 $3013 MOVLW 19
$0256 $00F5 MOVWF STACK_4+1
$0257 $2163 CALL _mul_16x16_u
$0258 $0870 MOVF STACK_0, 0
$0259 $00A5 MOVWF _tlong
$025A $0871 MOVF STACK_0+1, 0
$025B $00A6 MOVWF _tlong+1
$025C $01A7 CLRF _tlong+2
$025D $01A8 CLRF _tlong+3
;ADC_on_LCD.c,50 :: MOVF STACK_2,W
$025E $0872 MOVF STACK_2, W
;ADC_on_LCD.c,51 :: MOVWF _tlong+2
$025F $00A7 MOVWF _tlong+2
;ADC_on_LCD.c,52 :: MOVF STACK_3,W
$0260 $0873 MOVF STACK_3, W
;ADC_on_LCD.c,53 :: MOVWF _tlong+3
$0261 $00A8 MOVWF _tlong+3
;ADC_on_LCD.c,55 :: t = tlong >> 10;
$0262 $300A MOVLW 10
$0263 $00F4 MOVWF STACK_4
$0264 $0825 MOVF _tlong, 0
$0265 $00F0 MOVWF STACK_0
$0266 $0826 MOVF _tlong+1, 0
$0267 $00F1 MOVWF STACK_0+1
$0268 $0827 MOVF _tlong+2, 0
$0269 $00F2 MOVWF STACK_0+2
$026A $0828 MOVF _tlong+3, 0
$026B $00F3 MOVWF STACK_0+3
$026C $0874 MOVF STACK_4, 0
$026D $ L_main_2:
$026D $1903 BTFSC STATUS, Z
$026E $2A78 GOTO L_main_3
$026F $0CF3 RRF STACK_0+3, 1
$0270 $0CF2 RRF STACK_0+2, 1
$0271 $0CF1 RRF STACK_0+1, 1
$0272 $0CF0 RRF STACK_0, 1
$0273 $13F3 BCF STACK_0+3, 7
$0274 $1B73 BTFSC STACK_0+3, 6
$0275 $17F3 BSF STACK_0+3, 7
$0276 $3FFF ADDLW 255
$0277 $2A6D GOTO L_main_2
$0278 $ L_main_3:
$0278 $0870 MOVF STACK_0, 0
$0279 $00A3 MOVWF _t
$027A $0871 MOVF STACK_0+1, 0
$027B $00A4 MOVWF _t+1
;ADC_on_LCD.c,57 :: ch = t / 1000; // prepare value for diplay
$027C $30E8 MOVLW 232
$027D $00F4 MOVWF STACK_4
$027E $3003 MOVLW 3
$027F $00F5 MOVWF STACK_4+1
$0280 $218E CALL _div_16x16_u
$0281 $0870 MOVF STACK_0, 0
$0282 $00A9 MOVWF _ch
;ADC_on_LCD.c,58 :: LCD_Chr(2,9,48+ch); // write ASCII at 2nd row, 9th column
$0283 $3002 MOVLW 2
$0284 $00D2 MOVWF FARG_Lcd_Chr+0
$0285 $3009 MOVLW 9
$0286 $00D3 MOVWF FARG_Lcd_Chr+1
$0287 $0870 MOVF STACK_0, 0
$0288 $3F30 ADDLW 48
$0289 $00D4 MOVWF FARG_Lcd_Chr+2
$028A $212C CALL _Lcd_Chr
;ADC_on_LCD.c,59 :: LCD_Chr_CP('.');
$028B $302E MOVLW 46
$028C $00D6 MOVWF FARG_Lcd_Chr_CP+0
$028D $205E CALL _Lcd_Chr_CP
;ADC_on_LCD.c,61 :: ch = (t / 100) % 10;
$028E $3064 MOVLW 100
$028F $00F4 MOVWF STACK_4
$0290 $3000 MOVLW 0
$0291 $00F5 MOVWF STACK_4+1
$0292 $0823 MOVF _t, 0
$0293 $00F0 MOVWF STACK_0
$0294 $0824 MOVF _t+1, 0
$0295 $00F1 MOVWF STACK_0+1
$0296 $218E CALL _div_16x16_u
$0297 $300A MOVLW 10
$0298 $00F4 MOVWF STACK_4
$0299 $3000 MOVLW 0
$029A $00F5 MOVWF STACK_4+1
$029B $218E CALL _div_16x16_u
$029C $0878 MOVF STACK_8, 0
$029D $00F0 MOVWF STACK_0
$029E $0879 MOVF STACK_9, 0
$029F $00F1 MOVWF STACK_1
$02A0 $0870 MOVF STACK_0, 0
$02A1 $00A9 MOVWF _ch
;ADC_on_LCD.c,62 :: LCD_Chr_CP(48+ch);
$02A2 $0870 MOVF STACK_0, 0
$02A3 $3F30 ADDLW 48
$02A4 $00D6 MOVWF FARG_Lcd_Chr_CP+0
$02A5 $205E CALL _Lcd_Chr_CP
;ADC_on_LCD.c,64 :: ch = (t / 10) % 10;
$02A6 $300A MOVLW 10
$02A7 $00F4 MOVWF STACK_4
$02A8 $3000 MOVLW 0
$02A9 $00F5 MOVWF STACK_4+1
$02AA $0823 MOVF _t, 0
$02AB $00F0 MOVWF STACK_0
$02AC $0824 MOVF _t+1, 0
$02AD $00F1 MOVWF STACK_0+1
$02AE $218E CALL _div_16x16_u
$02AF $300A MOVLW 10
$02B0 $00F4 MOVWF STACK_4
$02B1 $3000 MOVLW 0
$02B2 $00F5 MOVWF STACK_4+1
$02B3 $218E CALL _div_16x16_u
$02B4 $0878 MOVF STACK_8, 0
$02B5 $00F0 MOVWF STACK_0
$02B6 $0879 MOVF STACK_9, 0
$02B7 $00F1 MOVWF STACK_1
$02B8 $0870 MOVF STACK_0, 0
$02B9 $00A9 MOVWF _ch
;ADC_on_LCD.c,65 :: LCD_Chr_CP(48+ch);
$02BA $0870 MOVF STACK_0, 0
$02BB $3F30 ADDLW 48
$02BC $00D6 MOVWF FARG_Lcd_Chr_CP+0
$02BD $205E CALL _Lcd_Chr_CP
;ADC_on_LCD.c,69 :: LCD_Chr_CP('V');
$02BE $3056 MOVLW 86
$02BF $00D6 MOVWF FARG_Lcd_Chr_CP+0
$02C0 $205E CALL _Lcd_Chr_CP
;ADC_on_LCD.c,71 :: Delay_ms(1);
$02C1 $3003 MOVLW 3
$02C2 $00FB MOVWF STACK_11
$02C3 $30FF MOVLW 255
$02C4 $00FA MOVWF STACK_10
$02C5 $0BFB DECFSZ STACK_11, F
$02C6 $2AC8 GOTO $+2
$02C7 $2ACB GOTO $+4
$02C8 $0BFA DECFSZ STACK_10, F
$02C9 $2AC8 GOTO $-1
$02CA $2AC5 GOTO $-5
$02CB $3096 MOVLW 150
$02CC $00FA MOVWF STACK_10
$02CD $0BFA DECFSZ STACK_10, F
$02CE $2ACD GOTO $-1
$02CF $0000 NOP
;ADC_on_LCD.c,72 :: }
$02D0 $2A40 GOTO L_main_0
;ADC_on_LCD.c,73 :: }//~!
$02D1 $2AD1 GOTO $
//** Procedures locations **
//ADDRESS PROCEDURE
//----------------------------------------------
$0004 Delay_1us
$0007 Delay_5500us
$0019 Delay_50us
$0020 Lcd_Cmd
$005E Lcd_Chr_CP
$0067 Delay_22us
$006F Lcd_Init
$00BB LCD_Out
$00FE Adc_Read
$012C Lcd_Chr
$0163 Mul_16x16_U
$018E Div_16x16_U
$01AB main
//** Labels locations **
//ADDRESS LABEL
//----------------------------------------------
$0004 _Delay_1us:
$0007 _Delay_5500us:
$0019 _Delay_50us:
$0020 _Lcd_Cmd:
$0027 L_Lcd_Cmd_0:
$003A L_Lcd_Cmd_1:
$003B L_Lcd_Cmd_2:
$0040 L_Lcd_Cmd_3:
$0053 L_Lcd_Cmd_4:
$0054 L_Lcd_Cmd_5:
$005C L_Lcd_Cmd_6:
$005D L_Lcd_Cmd_7:
$005E _Lcd_Chr_CP:
$0067 _Delay_22us:
$006F _Lcd_Init:
$00BB _LCD_Out:
$00BC L_LCD_Out_19:
$00C1 L_LCD_Out_20:
$00C4 L_LCD_Out_21:
$00C7 L_LCD_Out_22:
$00CA L_LCD_Out_23:
$00CD L_LCD_Out_17:
$00E0 L_LCD_Out_18:
$00EB L_LCD_Out_24:
$00FB L_LCD_Out_25:
$00FE _Adc_Read:
$0114 L_Adc_Read_0:
$0118 L_Adc_Read_1:
$011F L_Adc_Read_2:
$0126 L_Adc_Read_3:
$012C _Lcd_Chr:
$012D L_Lcd_Chr_10:
$0132 L_Lcd_Chr_11:
$0135 L_Lcd_Chr_12:
$0138 L_Lcd_Chr_13:
$013B L_Lcd_Chr_14:
$013E L_Lcd_Chr_8:
$0151 L_Lcd_Chr_9:
$0163 _Mul_16x16_U:
$018E _Div_16x16_U:
$01AB _main:
$0240 L_main_0:
$026D L_main_2:
$0278 L_main_3:
//** Variables locations **
//ADDRESS VARIABLE
//----------------------------------------------
$0000 INDF
$0002 PCL
$0003 STATUS
$0004 FSR
$0008 PORTD
$000A PCLATH
$000B INTCON
$001E ADRESH
$001F ADCON0
$0020 LCD_port_address
$0021 LCD_cmd_status
$0022 _tc
$0023 _t
$0025 _tlong
$0029 _ch
$002A lstr1_ADC_on_LCD
$0039 lstr2_ADC_on_LCD
$0049 lstr3_ADC_on_LCD
$0052 FARG_Adc_Read+0
$0052 FARG_Lcd_Chr+0
$0052 FARG_Lcd_Init+0
$0052 FARG_LCD_Out+0
$0053 FARG_Lcd_Chr+1
$0053 FARG_LCD_Out+1
$0054 FARG_Lcd_Chr+2
$0054 FARG_LCD_Out+2
$0055 LCD_Out_i_L0
$0056 FARG_Lcd_Chr_CP+0
$0057 FARG_Lcd_Cmd+0
$0070 STACK_0
$0071 STACK_1
$0072 STACK_2
$0073 STACK_3
$0074 STACK_4
$0075 STACK_5
$0076 STACK_6
$0077 STACK_7
$0078 STACK_8
$0079 STACK_9
$007A STACK_10
$007B STACK_11
$007C STACK_12
$007D STACK_13
$007E STACK_14
$007F STACK_15
$0081 OPTION_REG
$0085 TRISA
$0087 TRISC
$0088 TRISD
$009E ADRESL
$009F ADCON1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -