📄 adc_on_lcd.asm
字号:
$0169 $00F8 MOVWF STACK_8
$016A $0CF1 RRF STACK_1, F
$016B $0CF0 RRF STACK_0, F
$016C $1C03 BTFSS STATUS, C
$016D $2977 GOTO $+10
$016E $0874 MOVF STACK_4, W
$016F $07F9 ADDWF STACK_9, F
$0170 $0875 MOVF STACK_5, W
$0171 $1803 BTFSC STATUS, C
$0172 $0F75 INCFSZ STACK_5, W
$0173 $07FA ADDWF STACK_10, F
$0174 $1803 BTFSC STATUS, C
$0175 $0AFB INCF STACK_11, F
$0176 $1003 BCF STATUS, C
$0177 $1FF0 BTFSS STACK_0, 7
$0178 $297F GOTO $+7
$0179 $0874 MOVF STACK_4, W
$017A $07FA ADDWF STACK_10, F
$017B $0875 MOVF STACK_5, W
$017C $1803 BTFSC STATUS, C
$017D $0F75 INCFSZ STACK_5, W
$017E $07FB ADDWF STACK_11, F
$017F $0CFB RRF STACK_11, F
$0180 $0CFA RRF STACK_10, F
$0181 $0CF9 RRF STACK_9, F
$0182 $0CF8 RRF STACK_8, F
$0183 $1C03 BTFSS STATUS, C
$0184 $296A GOTO $-26
$0185 $087B MOVF STACK_11, W
$0186 $00F3 MOVWF STACK_3
$0187 $087A MOVF STACK_10, W
$0188 $00F2 MOVWF STACK_2
$0189 $0879 MOVF STACK_9, W
$018A $00F1 MOVWF STACK_1
$018B $0878 MOVF STACK_8, W
$018C $00F0 MOVWF STACK_0
$018D $0008 RETURN
$018E $ _Div_16x16_U:
$018E $1303 BCF STATUS, RP1
$018F $1283 BCF STATUS, RP0
$0190 $01F8 CLRF STACK_8
$0191 $01F9 CLRF STACK_9
$0192 $3010 MOVLW 16
$0193 $00FC MOVWF STACK_12
$0194 $0D71 RLF STACK_1, W
$0195 $0DF8 RLF STACK_8, F
$0196 $0DF9 RLF STACK_9, F
$0197 $0874 MOVF STACK_4, W
$0198 $02F8 SUBWF STACK_8, F
$0199 $0875 MOVF STACK_5, W
$019A $1C03 BTFSS STATUS, C
$019B $0F75 INCFSZ STACK_5, W
$019C $02F9 SUBWF STACK_9, F
$019D $1803 BTFSC STATUS, C
$019E $29A6 GOTO $+8
$019F $0874 MOVF STACK_4, W
$01A0 $07F8 ADDWF STACK_8, F
$01A1 $0875 MOVF STACK_5, W
$01A2 $1803 BTFSC STATUS, C
$01A3 $0F75 INCFSZ STACK_5, W
$01A4 $07F9 ADDWF STACK_9, F
$01A5 $1003 BCF STATUS, C
$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 $
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -