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

📄 queryad.s

📁 ATmega16应用例子
💻 S
字号:
	.module QueryAD.C
	.area text(rom, con, rel)
	.dbfile E:\ICCAVR_H\CmmICC.H
	.dbfunc e delay50us _delay50us fV
;              j -> R20
;              t -> R16,R17
	.even
_delay50us::
	xcall push_gset1
	.dbline -1
	.dbline 117
; 
; #include <iom16v.h>
; #include "E:\ICCAVR_H\CmmICC.H"
; 
; #define H_VAL_DISP_DDR  DDRD
; #define L_VAL_DISP_DDR  DDRB
; #define H_VAL_DISP_PORT PORTD
; #define L_VAL_DISP_PORT PORTB
; 
; const uint8 ADEnStatus[8] = {0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
; 
; uint8 AdcMux;			  //ADC通道
; uint16 AdcVal;			  //ADC转换值
; 
; void adc_init()
; {
; 	/*--------
; 	设置对应的IO口为输入高阻态
; 	--------*/
; 	DDRA &= ADEnStatus[AdcMux];	   
; 	PORTA &= ADEnStatus[AdcMux];
; 
; 	ADCSR = 0x00;				//disable adc
; 	ADMUX = (1<<REFS0)|(AdcMux&0x0F);	//set AVcc as Vref, set adc input channel
; 	ACSR = (1<<ACD);			//close analog comparator
; 	//ADCSRA=(1<<ADEN)|(1<<ADIE)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1);//64分频
; }
; 
; void main(void)
; {
; 	H_VAL_DISP_DDR = 0xFF;
; 	L_VAL_DISP_DDR = 0xFF;
; 	AdcMux = 0;				//使用ADC通道0
; 	adc_init(); 
; 	while(1)
; 	{ 
; 		ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1); 	
; 		while(!ADSC);
; 		H_VAL_DISP_PORT = (ADC&0x300)>>8;	//ADC的高2位Val
; 		L_VAL_DISP_PORT = ADC&0xFF;			//ADC的低8位Val
; 	}
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 119
; }
; }
	xjmp L5
L2:
	.dbline 120
; }
	clr R20
	xjmp L9
L6:
	.dbline 121
L7:
	.dbline 120
	inc R20
L9:
	.dbline 120
	cpi R20,70
	brlo L6
L3:
	.dbline 119
	subi R16,1
	sbci R17,0
L5:
	.dbline 119
	clr R2
	clr R3
	cp R2,R16
	cpc R3,R17
	brlt L2
	.dbline -2
	.dbline 122
; }
; }
L1:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r j 20 c
	.dbsym r t 16 I
	.dbend
	.dbfunc e delay50ms _delay50ms fV
;              i -> R20,R21
;              t -> R16,R17
	.even
_delay50ms::
	xcall push_gset1
	.dbline -1
	.dbline 132
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 134
; }
; }
	xjmp L14
L11:
	.dbline 135
; }
	clr R20
	clr R21
	xjmp L18
L15:
	.dbline 136
L16:
	.dbline 135
	subi R20,255  ; offset = 1
	sbci R21,255
L18:
	.dbline 135
	cpi R20,162
	ldi R30,205
	cpc R21,R30
	brlo L15
L12:
	.dbline 134
	subi R16,1
	sbci R17,0
L14:
	.dbline 134
	clr R2
	clr R3
	cp R2,R16
	cpc R3,R17
	brlt L11
	.dbline -2
	.dbline 137
; }
; }
L10:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r t 16 I
	.dbend
	.dbfunc e speaData _speaData fV
;              y -> y+4
;              j -> y+0
;              i -> R10
;              C -> R12
;              D -> y+16
	.even
_speaData::
	xcall push_arg4
	xcall push_gset4
	sbiw R28,8
	ldd R12,y+20
	.dbline -1
	.dbline 148
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 151
; }
; }
; }
	clr R10
	ldi R20,1
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	std z+0,R20
	std z+1,R21
	std z+2,R22
	std z+3,R23
	xjmp L23
L20:
	.dbline 152
	.dbline 153
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	movw R30,R28
	ldd R6,z+16
	ldd R7,z+17
	ldd R8,z+18
	ldd R9,z+19
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R6
	movw R18,R8
	xcall div32u
	movw R30,R28
	std z+4,R16
	std z+5,R17
	std z+6,R18
	std z+7,R19
	.dbline 154
	ldi R20,10
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	ldd R2,z+4
	ldd R3,z+5
	ldd R4,z+6
	ldd R5,z+7
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	movw R16,R2
	movw R18,R4
	xcall mod32u
	ldi R24,<_dataElem
	ldi R25,>_dataElem
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R16
	.dbline 155
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	ldi R20,10
	ldi R21,0
	ldi R22,0
	ldi R23,0
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R20
	movw R18,R22
	xcall empy32u
	movw R30,R28
	std z+0,R16
	std z+1,R17
	std z+2,R18
	std z+3,R19
	.dbline 156
L21:
	.dbline 151
	inc R10
L23:
	.dbline 151
	cp R10,R12
	brsh X0
	xjmp L20
X0:
	.dbline -2
	.dbline 157
; }
; }
; }
; }
; }
; }
L19:
	adiw R28,8
	xcall pop_gset4
	adiw R28,4
	.dbline 0 ; func end
	ret
	.dbsym l y 4 l
	.dbsym l j 0 l
	.dbsym r i 10 c
	.dbsym r C 12 c
	.dbsym l D 16 l
	.dbend
	.dbfunc e changeDToH _changeDToH fc
;            hex -> R20
;              t -> y+0
;            dec -> R20
	.even
_changeDToH::
	xcall push_gset1
	mov R20,R16
	sbiw R28,2
	.dbline -1
	.dbline 167
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 170
; }
; }
; }
	ldi R17,10
	mov R16,R20
	xcall div8u
	std y+1,R16
	.dbline 171
; }
	ldi R17,10
	mov R16,R20
	xcall mod8u
	std y+0,R16
	.dbline 172
; }
	ldd R2,y+1
	ldi R24,16
	mul R24,R2
	mov R20,R0
	add R20,R16
	.dbline 173
; }
	mov R16,R20
	.dbline -2
L24:
	adiw R28,2
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r hex 20 c
	.dbsym l t 0 A[2:2]c
	.dbsym r dec 20 c
	.dbend
	.dbfunc e converseDToH _converseDToH fc
;            hex -> R20
;              t -> y+0
;            dec -> R20
	.even
_converseDToH::
	xcall push_gset1
	mov R20,R16
	sbiw R28,2
	.dbline -1
	.dbline 184
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 187
; }
; }
; }
	mov R24,R20
	swap R24
	andi R24,#0x0F
	std y+1,R24
	.dbline 188
; }
	ldi R17,16
	mov R16,R20
	xcall mod8u
	std y+0,R16
	.dbline 189
; }
	ldd R2,y+1
	ldi R24,16
	mul R24,R2
	mov R20,R0
	add R20,R16
	.dbline 190
; }
	mov R16,R20
	.dbline -2
L27:
	adiw R28,2
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r hex 20 c
	.dbsym l t 0 A[2:2]c
	.dbsym r dec 20 c
	.dbend
	.dbfunc e changeHToD _changeHToD fc
;            dec -> R20
;              t -> y+0
;            hex -> R20
	.even
_changeHToD::
	xcall push_gset1
	mov R20,R16
	sbiw R28,2
	.dbline -1
	.dbline 201
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 204
; }
; }
; }
	mov R24,R20
	swap R24
	andi R24,#0x0F
	std y+1,R24
	.dbline 205
; }
	ldi R17,16
	mov R16,R20
	xcall mod8u
	std y+0,R16
	.dbline 206
; }
	ldd R2,y+1
	ldi R24,10
	mul R24,R2
	mov R20,R0
	add R20,R16
	.dbline 207
; }
	mov R16,R20
	.dbline -2
L30:
	adiw R28,2
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r dec 20 c
	.dbsym l t 0 A[2:2]c
	.dbsym r hex 20 c
	.dbend
	.dbfunc e converseHToD _converseHToD fc
;            dec -> R20
;              t -> y+0
;            hex -> R20
	.even
_converseHToD::
	xcall push_gset1
	mov R20,R16
	sbiw R28,2
	.dbline -1
	.dbline 218
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 221
; }
; }
; }
	ldi R17,10
	mov R16,R20
	xcall div8u
	std y+1,R16
	.dbline 222
; }
	ldi R17,10
	mov R16,R20
	xcall mod8u
	std y+0,R16
	.dbline 223
; }
	ldd R2,y+1
	ldi R24,16
	mul R24,R2
	mov R20,R0
	add R20,R16
	.dbline 224
; }
	mov R16,R20
	.dbline -2
L33:
	adiw R28,2
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r dec 20 c
	.dbsym l t 0 A[2:2]c
	.dbsym r hex 20 c
	.dbend
	.area lit(rom, con, rel)
_ADEnStatus::
	.byte 254,253
	.byte 251,247
	.byte 239,223
	.byte 191,127
	.dbfile E:\ProductPro\M16SD\ICCAVR\AD\QueryAD\QueryAD.C
	.dbsym e ADEnStatus _ADEnStatus A[8:8]kc
	.area text(rom, con, rel)
	.dbfile E:\ProductPro\M16SD\ICCAVR\AD\QueryAD\QueryAD.C
	.dbfunc e adc_init _adc_init fV
	.even
_adc_init::
	.dbline -1
	.dbline 16
	.dbline 20
	ldi R24,<_ADEnStatus
	ldi R25,>_ADEnStatus
	lds R30,_AdcMux
	clr R31
	add R30,R24
	adc R31,R25
	lpm R30,Z
	in R2,0x1a
	and R2,R30
	out 0x1a,R2
	.dbline 21
	lds R30,_AdcMux
	clr R31
	add R30,R24
	adc R31,R25
	lpm R30,Z
	in R2,0x1b
	and R2,R30
	out 0x1b,R2
	.dbline 23
	clr R2
	out 0x6,R2
	.dbline 24
	lds R24,_AdcMux
	andi R24,15
	ori R24,64
	out 0x7,R24
	.dbline 25
	ldi R24,128
	out 0x8,R24
	.dbline -2
	.dbline 27
L36:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
	.even
_main::
	.dbline -1
	.dbline 30
	.dbline 31
	ldi R24,255
	out 0x11,R24
	.dbline 32
	out 0x17,R24
	.dbline 33
	clr R2
	sts _AdcMux,R2
	.dbline 34
	xcall _adc_init
	xjmp L39
L38:
	.dbline 36
	.dbline 37
	ldi R24,198
	out 0x6,R24
L41:
	.dbline 38
L42:
	.dbline 38
	.dbline 39
	in R24,0x4
	in R25,0x5
	andi R24,0
	andi R25,3
	mov R24,R25
	clr R25
	out 0x12,R24
	.dbline 40
	in R24,0x4
	in R25,0x5
	andi R25,0
	out 0x18,R24
	.dbline 41
L39:
	.dbline 35
	xjmp L38
X1:
	.dbline -2
	.dbline 42
L37:
	.dbline 0 ; func end
	ret
	.dbend
	.area bss(ram, con, rel)
	.dbfile E:\ProductPro\M16SD\ICCAVR\AD\QueryAD\QueryAD.C
_AdcVal::
	.blkb 2
	.dbsym e AdcVal _AdcVal i
_AdcMux::
	.blkb 1
	.dbsym e AdcMux _AdcMux c
_dataElem::
	.blkb 6
	.dbfile E:\ICCAVR_H\CmmICC.H
	.dbsym e dataElem _dataElem A[6:6]c

⌨️ 快捷键说明

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