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

📄 adc_on_lcd.lst

📁 PIC MICROCONTROLLER PROJECTS 3
💻 LST
📖 第 1 页 / 共 2 页
字号:
$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 + -