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

📄 adc.s

📁 AVR单片机ATMEGA内部自带AD转换器实例
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module adc.c
	.area data(ram, con, rel)
_Type_flag::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\AD\adc.c
	.dbsym e Type_flag _Type_flag c
_channel_0_flag::
	.blkb 1
	.area idata
	.byte 1
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\AD\adc.c
	.dbsym e channel_0_flag _channel_0_flag c
_channel_1_flag::
	.blkb 1
	.area idata
	.byte 1
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\AD\adc.c
	.dbsym e channel_1_flag _channel_1_flag c
_channel_2_flag::
	.blkb 1
	.area idata
	.byte 1
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\AD\adc.c
	.dbsym e channel_2_flag _channel_2_flag c
_channel_3_flag::
	.blkb 1
	.area idata
	.byte 1
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\AD\adc.c
	.dbsym e channel_3_flag _channel_3_flag c
_Display_flag::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\AD\adc.c
	.dbsym e Display_flag _Display_flag c
_LED_table::
	.blkb 2
	.area idata
	.byte 63,6
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\AD\adc.c
	.blkb 2
	.area idata
	.byte 91,'O
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\AD\adc.c
	.blkb 2
	.area idata
	.byte 'f,'m
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\AD\adc.c
	.blkb 2
	.area idata
	.byte 125,7
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\AD\adc.c
	.blkb 2
	.area idata
	.byte 127,'o
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\AD\adc.c
	.blkb 2
	.area idata
	.byte 'w,124
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\AD\adc.c
	.blkb 2
	.area idata
	.byte 57,94
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\AD\adc.c
	.blkb 2
	.area idata
	.byte 'y,'q
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\AD\adc.c
	.blkb 2
	.area idata
	.byte 'v,56
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\AD\adc.c
	.blkb 2
	.area idata
	.byte 55,62
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\AD\adc.c
	.blkb 2
	.area idata
	.byte 's,92
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\AD\adc.c
	.blkb 2
	.area idata
	.byte 64,0
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\AD\adc.c
	.dbsym e LED_table _LED_table A[24:24]c
	.area vector(rom, abs)
	.org 4
	jmp _External_INT_0
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\AD\adc.c
	.area vector(rom, abs)
	.org 8
	jmp _External_INT_1
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\AD\adc.c
	.area vector(rom, abs)
	.org 12
	jmp _External_INT_2
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\AD\adc.c
	.area vector(rom, abs)
	.org 84
	jmp _ADC_INT
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\AD\adc.c
	.area text(rom, con, rel)
	.dbfile G:\猛\avr实践\AD\adc.c
	.dbfunc e main _main fV
;              i -> R22
	.even
_main::
	.dbline -1
	.dbline 90
; #include <iom128.h>
; #include <macros.h>
; #include <math.h>
; //LED 开关定义
; 
; #define   ADC_start			0x40
; 
; #define	  Red_LED_on		PORTB&~BIT(0)
; #define	  Red_LED_off		PORTB|(1<<0)
; #define	  Green_LED_on		PORTB&(~(1<<1))
; #define	  Green_LED_off		PORTB|(1<<1)
; #define	  Yellow_LED_on		PORTB&(~(1<<2))
; #define	  Yellow_LED_off	PORTB|(1<<2)
; #define	  Blue_LED_on		PORTB&(~(1<<3))
; #define	  Blue_LED_off		PORTB|(1<<3)
; 
; unsigned int AD_sample_value;
; 
; unsigned char Type_flag = 0;
; unsigned char channel_0_flag = 1;
; unsigned char channel_1_flag = 1;
; unsigned char channel_2_flag = 1;
; unsigned char channel_3_flag = 1;
; 
; //Display
; unsigned char number_baifen;
; unsigned char number_shifen;
; unsigned char number_ge_dot;
; unsigned char Display_type;
; unsigned char Display_value;
; unsigned char Display_flag = 0;
; 
; unsigned char LED_table[]=
; {  
;    0x3F,  //"0"
;    0x06,  //"1"
;    0x5B,  //"2"
;    0x4F,  //"3"
;    0x66,  //"4"
;    0x6D,  //"5"
;    0x7D,  //"6"
;    0x07,  //"7"
;    0x7F,  //"8"
;    0x6F,  //"9"
;    0x77,  //"A"
;    0x7C,  //"B"
;    0x39,  //"C"
;    0x5E,  //"D"
;    0x79,  //"E"
;    0x71,  //"F"
;    0x76,  //"H"
;    0x38,  //"L"
;    0x37,  //"n"
;    0x3E,  //"u"
;    0x73,  //"P"
;    0x5C,  //"o"
;    0x40,  //"-"
;    0x00,  //熄灭                     
; };
; 
; //use for test;
; 
; unsigned char m;
; 
; //define Interrupt Vactor
; 
; #pragma interrupt_handler External_INT_0:2		//外部中断0
; #pragma interrupt_handler External_INT_1:3		//外部中断1
; #pragma interrupt_handler External_INT_2:4		//外部中断2
; #pragma interrupt_handler ADC_INT:22		//ADC中断
; 
; //pre_define
; 
; void main(void);
; void Port_initialize(void);
; void ADC_initialize(void);
; void INT_initialize(void);
; void UART_initialize(void);
; void Delay(void);
; void External_INT_0(void);
; void ADC_INT(void);
; void External_INT_1(void);
; void External_INT_2(void);
; void LED_Display(unsigned char Channel_num,unsigned int Data);
; void DATA_to_NUM(unsigned int data);
; 
; 
; 
; void main(void)
; {
	.dbline 93
; 	unsigned char i;
; 	
; 	Port_initialize();
	xcall _Port_initialize
	.dbline 95
; 	//UART_initialize();
; 	INT_initialize();
	xcall _INT_initialize
	.dbline 96
; 	ADC_initialize();
	xcall _ADC_initialize
	.dbline 98
; 		
; 	for (; ; )
L2:
	.dbline 99
; 	{
	.dbline 101
; 		
; 		switch (Type_flag)
	lds R20,_Type_flag
	clr R21
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L9
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	breq L10
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	breq L11
	xjmp L6
X0:
	.dbline 102
; 		{
L9:
	.dbline 111
; 			/*case 0:				//发送的数值
; 			{
; 				Display_type = 0;
; 				Display_value = Tx_data;
; 			
; 			}break;
; 			*/
; 			case 1:				//发送计数
; 			{
	.dbline 112
; 				Display_type = 1;
	ldi R24,1
	sts _Display_type,R24
	.dbline 115
; 				//Display_value = Tx_counter;
; 			
; 			}break;
	.dbline 115
	xjmp L7
L10:
	.dbline 118
; 
; 			case 2:				//接收的数值
; 			{
	.dbline 119
; 				Display_type = 2;
	ldi R24,2
	sts _Display_type,R24
	.dbline 122
; 				//Display_value = Rx_data;
; 
; 			}break;
	.dbline 122
	xjmp L7
L11:
	.dbline 125
; 
; 			case 3:				//接收计数
; 			{
	.dbline 126
; 				Display_type = 3;
	ldi R24,3
	sts _Display_type,R24
	.dbline 129
; 				//Display_value = Rx_counter;
; 			
; 			}break;
	.dbline 129
	xjmp L7
L6:
	.dbline 132
; 
; 			default:
; 			{
	.dbline 133
; 				Display_type = 0x0;
	clr R2
	sts _Display_type,R2
	.dbline 135
; 				
; 			}break;
	.dbline 135
L7:
	.dbline 138
; 		}
; 
; 		if (Display_flag == 1)
	lds R24,_Display_flag
	cpi R24,1
	brne L12
	.dbline 139
; 		{
	.dbline 141
; 			//DDRB |=0xF0;
; 			LED_Display(Display_type,AD_sample_value);		//数码管显示
	lds R18,_AD_sample_value
	lds R19,_AD_sample_value+1
	lds R16,_Display_type
	xcall _LED_Display
	.dbline 143
; 			//DDRB |=0xF0;
; 		}
	xjmp L13
L12:
	.dbline 145
; 		else
; 		{
	.dbline 147
; 		 	
; 			LED_Display(Display_type,AD_sample_value);
	lds R18,_AD_sample_value
	lds R19,_AD_sample_value+1
	lds R16,_Display_type
	xcall _LED_Display
	.dbline 150
; 			
; 			 
; 		}
L13:
	.dbline 154
; 		
; 		
; 		
; 		if (channel_0_flag == 0)
	lds R2,_channel_0_flag
	tst R2
	brne L14
	.dbline 155
; 		{
	.dbline 156
; 			PORTB = Red_LED_on;
	cbi 0x18,0
	.dbline 158
; 
; 			for (i=0;i<30 ;i++ )
	clr R22
	xjmp L19
L16:
	.dbline 159
	.dbline 160
	xcall _Delay
	.dbline 161
L17:
	.dbline 158
	inc R22
L19:
	.dbline 158
	cpi R22,30
	brlo L16
	.dbline 163
; 			{
; 				Delay();
; 			}
; 
; 			channel_0_flag = 1;
	ldi R24,1
	sts _channel_0_flag,R24
	.dbline 164
; 		}
	xjmp L15
L14:
	.dbline 166
; 		else
; 		{
	.dbline 167
; 			PORTB = Red_LED_off;
	sbi 0x18,0
	.dbline 168
; 		}
L15:
	.dbline 170
; 		
; 		if (channel_1_flag == 0)
	lds R2,_channel_1_flag
	tst R2
	brne L20
	.dbline 171
; 		{
	.dbline 172
; 			PORTB = Green_LED_on;
	cbi 0x18,1
	.dbline 174
; 
; 			for (i=0;i<30 ;i++ )
	clr R22
	xjmp L25
L22:
	.dbline 175
	.dbline 176
	xcall _Delay
	.dbline 177
L23:
	.dbline 174
	inc R22
L25:
	.dbline 174
	cpi R22,30
	brlo L22
	.dbline 179
; 			{
; 				Delay();
; 			}
; 
; 			channel_1_flag = 1;
	ldi R24,1
	sts _channel_1_flag,R24
	.dbline 180
; 		}
	xjmp L21
L20:
	.dbline 182
; 		else
; 		{
	.dbline 183
; 			PORTB = Green_LED_off;
	sbi 0x18,1
	.dbline 184
; 		}
L21:
	.dbline 186
; 
; 		if (channel_2_flag == 0)
	lds R2,_channel_2_flag
	tst R2
	brne L26
	.dbline 187
; 		{
	.dbline 188
; 			PORTB = Yellow_LED_on;
	cbi 0x18,2
	.dbline 190
; 
; 			for (i=0;i<30 ;i++ )
	clr R22
	xjmp L31
L28:
	.dbline 191
	.dbline 192
	xcall _Delay
	.dbline 193
L29:
	.dbline 190
	inc R22
L31:
	.dbline 190
	cpi R22,30
	brlo L28
	.dbline 195
; 			{
; 				Delay();
; 			}
; 
; 			channel_2_flag = 1;
	ldi R24,1
	sts _channel_2_flag,R24
	.dbline 196
; 		}
	xjmp L27
L26:
	.dbline 198
; 		else
; 		{
	.dbline 199
; 			PORTB = Yellow_LED_off;
	sbi 0x18,2
	.dbline 200
; 		}
L27:
	.dbline 202
; 		
; 		if (channel_3_flag == 0)
	lds R2,_channel_3_flag
	tst R2
	brne L32
	.dbline 203
; 		{
	.dbline 204
; 			PORTB = Blue_LED_on;
	cbi 0x18,3
	.dbline 206
; 
; 			for (i=0;i<30 ;i++ )
	clr R22
	xjmp L37
L34:
	.dbline 207
	.dbline 208
	xcall _Delay
	.dbline 209
L35:
	.dbline 206
	inc R22
L37:
	.dbline 206
	cpi R22,30
	brlo L34
	.dbline 211
; 			{
; 				Delay();
; 			}
; 
; 			channel_3_flag = 1;
	ldi R24,1
	sts _channel_3_flag,R24
	.dbline 212
; 		}
	xjmp L2
L32:
	.dbline 214
	.dbline 215
	sbi 0x18,3
	.dbline 216
	.dbline 217
	.dbline 98
	.dbline 98
	xjmp L2
X1:
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbsym r i 22 c
	.dbend
	.dbfunc e Port_initialize _Port_initialize fV
	.even
_Port_initialize::
	.dbline -1
	.dbline 221
; 		else
; 		{
; 			PORTB = Blue_LED_off;
; 		}
; 	}
; }
; 
; void Port_initialize(void)
; {
	.dbline 222
; 	DDRA = 0xFF;
	ldi R24,255
	out 0x1a,R24
	.dbline 223
; 	DDRB |= 0x0F;
	in R24,0x17
	ori R24,15
	out 0x17,R24
	.dbline 224
; 	DDRD = 0x00;
	clr R2
	out 0x11,R2
	.dbline 225
; 	PORTB = 0xFF;
	ldi R24,255
	out 0x18,R24
	.dbline -2
	.dbline 226
; }
L38:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e ADC_initialize _ADC_initialize fV
	.even
_ADC_initialize::
	.dbline -1
	.dbline 228
; void ADC_initialize(void)
; {
	.dbline 229
; 	ADMUX = 0x40;	//Vref = AVCC,right,channel = 0
	ldi R24,64
	out 0x7,R24
	.dbline 230
; 	ADCSR = 0x89;	//enable ADC,not start now,not continuous,F--,clock = f/2
	ldi R24,137
	out 0x6,R24
	.dbline -2
	.dbline 233
; 
; 
; }
L39:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e INT_initialize _INT_initialize fV
	.even
_INT_initialize::
	.dbline -1
	.dbline 235
; void INT_initialize(void)
; {

⌨️ 快捷键说明

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