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

📄 adc.s

📁 数控电压源程序数控电压源程序数控电压源程序数控电压源程序
💻 S
字号:
	.module ADC.c
	.area text(rom, con, rel)
	.dbfile E:\张秋伟\我的实验\数控电压源\ADC.c
	.dbfunc e adc_init _adc_init fV
	.even
_adc_init::
	.dbline -1
	.dbline 13
; //包含所需头文件
; #include <ioM16v.h>
; #include <macros.h>
; 
; /*------宏定义------*/
; #define uchar	unsigned char
; #define uint	unsigned int
; #define DAC_DATA    PORTB
; #define DAC_DDR     DDRB
; 
; 
; void adc_init(void)
; {
	.dbline 15
;  //adc转换初始化
;  ADCSRA	= 0x00;	//禁止AD转换
	clr R2
	out 0x6,R2
	.dbline 16
;  ADMUX	= 0x47;
	ldi R24,71
	out 0x7,R24
	.dbline 17
;  SFIOR |= 0x00;
	in R2,0x30
	out 0x30,R2
	.dbline 18
;  ACSR	= 0x80; //禁止模拟比较器
	ldi R24,128
	out 0x8,R24
	.dbline 19
;  ADCSRA	= 0xCE;
	ldi R24,206
	out 0x6,R24
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e adc_calc _adc_calc fi
;        voltage -> R10,R11
;          value -> y+0
	.even
_adc_calc::
	xcall push_gset3
	sbiw R28,4
	.dbline -1
	.dbline 24
; }
; 
; 
; unsigned int adc_calc(void)
; {
	.dbline 26
;  //计算实际电压
;  unsigned long value=0;
	ldi R20,0
	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
	.dbline 27
;  unsigned int voltage=0; //电压单位为(mV)
	clr R10
	clr R11
	.dbline 28
;  value=ADCL;		 //首先读低位
	in R2,0x4
	clr R3
	clr R4
	clr R5
	movw R30,R28
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	.dbline 29
;  value|=(int)ADCH << 8; //然后读高位
	in R2,0x5
	clr R3
	mov R3,R2
	clr R2
	clr R4
	sbrc R3,7
	com R4
	clr R5
	sbrc R4,7
	com R5
	movw R30,R28
	ldd R6,z+0
	ldd R7,z+1
	ldd R8,z+2
	ldd R9,z+3
	or R6,R2
	or R7,R3
	or R8,R4
	or R9,R5
	movw R30,R28
	std z+0,R6
	std z+1,R7
	std z+2,R8
	std z+3,R9
	.dbline 30
;  voltage=(value*5000)>>10;
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	ldi R20,136
	ldi R21,19
	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
	ldi R24,10
	ldi R25,0
	st -y,R24
	xcall lsr32
	movw R10,R16
	.dbline 31
;  return voltage;
	.dbline -2
L2:
	adiw R28,4
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r voltage 10 i
	.dbsym l value 0 l
	.dbend

⌨️ 快捷键说明

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