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

📄 code.lst

📁 AVR单片机内部AD变换 AVR内部ADC转换原理: AVR单片机内部的ADC转换为10位逐次逼近型ADC。ADC与一个8通道的模拟多路复用器连接
💻 LST
字号:
   1               		.file	"code.c"
   2               		.arch atmega16
   3               	__SREG__ = 0x3f
   4               	__SP_H__ = 0x3e
   5               	__SP_L__ = 0x3d
   6               	__tmp_reg__ = 0
   7               	__zero_reg__ = 1
   8               		.global __do_copy_data
   9               		.global __do_clear_bss
  11               		.text
  12               	.Ltext0:
  51               	.global	ledcode
  52               		.data
  55               	ledcode:
  56 0000 3F        		.byte	63
  57 0001 06        		.byte	6
  58 0002 5B        		.byte	91
  59 0003 4F        		.byte	79
  60 0004 66        		.byte	102
  61 0005 6D        		.byte	109
  62 0006 7D        		.byte	125
  63 0007 07        		.byte	7
  64 0008 7F        		.byte	127
  65 0009 6F        		.byte	111
  66               		.text
  69               	.global	delay
  71               	delay:
   1:D:/irene/irene3/code.c **** #include <avr/io.h>
   2:D:/irene/irene3/code.c **** #include <avr/signal.h>
   3:D:/irene/irene3/code.c **** #include <avr/interrupt.h>
   4:D:/irene/irene3/code.c **** #include <inttypes.h>
   5:D:/irene/irene3/code.c **** #define vref 496       
   6:D:/irene/irene3/code.c **** uint8_t ledcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; /*LED译码*/
   7:D:/irene/irene3/code.c **** uint8_t ledbuff[6];                              /*显示缓冲*/
   8:D:/irene/irene3/code.c **** void delay(uint16_t time)                        /*延时*/
   9:D:/irene/irene3/code.c **** {
  73               	.LM1:
  74               	/* prologue: frame size=0 */
  75               	/* prologue end (size=0) */
  76               	.L7:
  10:D:/irene/irene3/code.c ****    while(time>0)
  11:D:/irene/irene3/code.c ****    time--;
  78               	.LM2:
  79 0000 0097      		sbiw r24,0
  80 0002 11F0      		breq .L6
  82               	.LM3:
  83 0004 0197      		sbiw r24,1
  84 0006 FCCF      		rjmp .L7
  85               	.L6:
  86 0008 0895      		ret
  87               	/* epilogue: frame size=0 */
  88               	/* epilogue: noreturn */
  89               	/* epilogue end (size=0) */
  90               	/* function delay size 5 (5) */
  93               	.global	leddisplay
  95               	leddisplay:
  12:D:/irene/irene3/code.c ****  }
  13:D:/irene/irene3/code.c **** void leddisplay(void)                            /*数码管显示函数*/
  14:D:/irene/irene3/code.c **** {
  97               	.LM4:
  98               	/* prologue: frame size=0 */
  99 000a CF92      		push r12
 100 000c DF92      		push r13
 101 000e FF92      		push r15
 102 0010 0F93      		push r16
 103 0012 1F93      		push r17
 104 0014 CF93      		push r28
 105 0016 DF93      		push r29
 106               	/* prologue end (size=7) */
 107 0018 90E0      		ldi r25,lo8(ledbuff)
 108 001a C92E      		mov r12,r25
 109 001c 90E0      		ldi r25,hi8(ledbuff)
 110 001e D92E      		mov r13,r25
 111 0020 C0E0      		ldi r28,lo8(0)
 112 0022 D0E0      		ldi r29,hi8(0)
 113 0024 85E0      		ldi r24,lo8(5)
 114 0026 F82E      		mov r15,r24
 115               	.L12:
  15:D:/irene/irene3/code.c ****   uint8_t i;
  16:D:/irene/irene3/code.c ****   for (i=0;i<6;i++)
  17:D:/irene/irene3/code.c ****   {   
  18:D:/irene/irene3/code.c ****    PORTB=ledbuff[i];                           /*需要显示缓冲区数据送到PORTB*/
 117               	.LM5:
 118 0028 F601      		movw r30,r12
 119 002a 8191      		ld r24,Z+
 120 002c 6F01      		movw r12,r30
 121 002e 88BB      		out 56-0x20,r24
  19:D:/irene/irene3/code.c ****    PORTD=~(1<<i);                                      
 123               	.LM6:
 124 0030 01E0      		ldi r16,lo8(1)
 125 0032 10E0      		ldi r17,hi8(1)
 126 0034 0C2E      		mov r0,r28
 127 0036 02C0      		rjmp 2f
 128 0038 000F      	1:	lsl r16
 129 003a 111F      		rol r17
 130 003c 0A94      	2:	dec r0
 131 003e E2F7      		brpl 1b
 132 0040 802F      		mov r24,r16
 133 0042 8095      		com r24
 134 0044 82BB      		out 50-0x20,r24
  20:D:/irene/irene3/code.c ****    delay(10);                                   /*每一位显示保持一定时间*/
 136               	.LM7:
 137 0046 8AE0      		ldi r24,lo8(10)
 138 0048 90E0      		ldi r25,hi8(10)
 139 004a 0E94 0000 		call delay
  21:D:/irene/irene3/code.c ****    PORTD|=(1<<i);                              /*关 闭显示*/  
 141               	.LM8:
 142 004e 82B3      		in r24,50-0x20
 143 0050 802B      		or r24,r16
 144 0052 82BB      		out 50-0x20,r24
 146               	.LM9:
 147 0054 FA94      		dec r15
 148 0056 2196      		adiw r28,1
 149 0058 F7FE      		sbrs r15,7
 150 005a E6CF      		rjmp .L12
 151               	/* epilogue: frame size=0 */
 152 005c DF91      		pop r29
 153 005e CF91      		pop r28
 154 0060 1F91      		pop r17
 155 0062 0F91      		pop r16
 156 0064 FF90      		pop r15
 157 0066 DF90      		pop r13
 158 0068 CF90      		pop r12
 159 006a 0895      		ret
 160               	/* epilogue end (size=8) */
 161               	/* function leddisplay size 49 (34) */
 165               	.global	__vector_14
 167               	__vector_14:
  22:D:/irene/irene3/code.c ****    }
  23:D:/irene/irene3/code.c **** } 
  24:D:/irene/irene3/code.c **** INTERRUPT(SIG_ADC)                             /*AD变换完成中断处理程序*/
  25:D:/irene/irene3/code.c **** {  
 169               	.LM10:
 170               	/* prologue: frame size=0 */
 171 006c 7894      		sei
 172 006e 1F92      		push __zero_reg__
 173 0070 0F92      		push __tmp_reg__
 174 0072 0FB6      		in __tmp_reg__,__SREG__
 175 0074 0F92      		push __tmp_reg__
 176 0076 1124      		clr __zero_reg__
 177 0078 2F93      		push r18
 178 007a 3F93      		push r19
 179 007c 4F93      		push r20
 180 007e 5F93      		push r21
 181 0080 6F93      		push r22
 182 0082 7F93      		push r23
 183 0084 8F93      		push r24
 184 0086 9F93      		push r25
 185 0088 AF93      		push r26
 186 008a BF93      		push r27
 187 008c CF93      		push r28
 188 008e DF93      		push r29
 189 0090 EF93      		push r30
 190 0092 FF93      		push r31
 191               	/* prologue end (size=20) */
  26:D:/irene/irene3/code.c ****   unsigned int i,temp;
  27:D:/irene/irene3/code.c ****   unsigned int lo_val, hi_val;					/*转换寄存器的低位与高位*/
  28:D:/irene/irene3/code.c ****   unsigned long val;
  29:D:/irene/irene3/code.c ****   lo_val=ADCL;                                    /*读出AD变换结果*/
 193               	.LM11:
 194 0094 84B1      		in r24,36-0x20
 195 0096 282F      		mov r18,r24
 196 0098 3327      		clr r19
  30:D:/irene/irene3/code.c ****   hi_val=ADCH;
 198               	.LM12:
 199 009a 85B1      		in r24,37-0x20
 200 009c 9927      		clr r25
  31:D:/irene/irene3/code.c ****   val=(((unsigned long)hi_val)<<8)|((unsigned long)lo_val); /*低8位和高8位数据合成16位*/
 202               	.LM13:
 203 009e AA27      		clr r26
 204 00a0 BB27      		clr r27
 205 00a2 BA2F      		mov r27,r26
 206 00a4 A92F      		mov r26,r25
 207 00a6 982F      		mov r25,r24
 208 00a8 8827      		clr r24
 209 00aa 4427      		clr r20
 210 00ac 5527      		clr r21
 211 00ae 822B      		or r24,r18
 212 00b0 932B      		or r25,r19
 213 00b2 A42B      		or r26,r20
 214 00b4 B52B      		or r27,r21
  32:D:/irene/irene3/code.c ****   temp=(unsigned int)((unsigned long)(val*vref)/1024);      /*AD变换结果转换为电压值*/
 216               	.LM14:
 217 00b6 BC01      		movw r22,r24
 218 00b8 CD01      		movw r24,r26
 219 00ba 20EF      		ldi r18,lo8(496)
 220 00bc 31E0      		ldi r19,hi8(496)
 221 00be 40E0      		ldi r20,hlo8(496)
 222 00c0 50E0      		ldi r21,hhi8(496)
 223 00c2 0E94 0000 		call __mulsi3
 224 00c6 DC01      		movw r26,r24
 225 00c8 CB01      		movw r24,r22
 226 00ca 2AE0      		ldi r18,10
 227 00cc B695      	1:	lsr r27
 228 00ce A795      		ror r26
 229 00d0 9795      		ror r25
 230 00d2 8795      		ror r24
 231 00d4 2A95      		dec r18
 232 00d6 D1F7      		brne 1b
 233 00d8 9C01      		movw r18,r24
 234 00da C0E0      		ldi r28,lo8(ledbuff)
 235 00dc D0E0      		ldi r29,hi8(ledbuff)
 236               	.L19:
  33:D:/irene/irene3/code.c ****   for(i=0;i<3;i++)                                    /*分位显示*/
  34:D:/irene/irene3/code.c ****     {
  35:D:/irene/irene3/code.c **** 	  ledbuff[i]=ledcode[temp%10];
 238               	.LM15:
 239 00de C901      		movw r24,r18
 240 00e0 6AE0      		ldi r22,lo8(10)
 241 00e2 70E0      		ldi r23,hi8(10)
 242 00e4 0E94 0000 		call __udivmodhi4
 243 00e8 FC01      		movw r30,r24
 244 00ea E050      		subi r30,lo8(-(ledcode))
 245 00ec F040      		sbci r31,hi8(-(ledcode))
 246 00ee 8081      		ld r24,Z
 247 00f0 8993      		st Y+,r24
  36:D:/irene/irene3/code.c **** 	  temp=temp/10;
 249               	.LM16:
 250 00f2 C901      		movw r24,r18
 251 00f4 6AE0      		ldi r22,lo8(10)
 252 00f6 70E0      		ldi r23,hi8(10)
 253 00f8 0E94 0000 		call __udivmodhi4
 254 00fc 9B01      		movw r18,r22
 256               	.LM17:
 257 00fe 80E0      		ldi r24,hi8(ledbuff+2)
 258 0100 C030      		cpi r28,lo8(ledbuff+2)
 259 0102 D807      		cpc r29,r24
 260 0104 61F3      		breq .L19
 261 0106 58F3      		brlo .L19
  37:D:/irene/irene3/code.c **** 	}
  38:D:/irene/irene3/code.c ****   ledbuff[2]|=0x80;                                   /*显示小数点*/  
 263               	.LM18:
 264 0108 8091 0000 		lds r24,ledbuff+2
 265 010c 8068      		ori r24,lo8(-128)
 266 010e 8093 0000 		sts ledbuff+2,r24
  39:D:/irene/irene3/code.c ****   ADCSR|=(1<<ADSC);                               /*启动下一次AD转换 */
 268               	.LM19:
 269 0112 369A      		sbi 38-0x20,6
  40:D:/irene/irene3/code.c ****   leddisplay();
 271               	.LM20:
 272 0114 0E94 0000 		call leddisplay
 273               	/* epilogue: frame size=0 */
 274 0118 FF91      		pop r31
 275 011a EF91      		pop r30
 276 011c DF91      		pop r29
 277 011e CF91      		pop r28
 278 0120 BF91      		pop r27
 279 0122 AF91      		pop r26
 280 0124 9F91      		pop r25
 281 0126 8F91      		pop r24
 282 0128 7F91      		pop r23
 283 012a 6F91      		pop r22
 284 012c 5F91      		pop r21
 285 012e 4F91      		pop r20
 286 0130 3F91      		pop r19
 287 0132 2F91      		pop r18
 288 0134 0F90      		pop __tmp_reg__
 289 0136 0FBE      		out __SREG__,__tmp_reg__
 290 0138 0F90      		pop __tmp_reg__
 291 013a 1F90      		pop __zero_reg__
 292 013c 1895      		reti
 293               	/* epilogue end (size=19) */
 294               	/* function __vector_14 size 105 (66) */
 300               	.global	main
 302               	main:
  41:D:/irene/irene3/code.c **** }
  42:D:/irene/irene3/code.c **** int main( void )
  43:D:/irene/irene3/code.c **** {
 304               	.LM21:
 305               	/* prologue: frame size=0 */
 306 013e C0E0      		ldi r28,lo8(__stack - 0)
 307 0140 D0E0      		ldi r29,hi8(__stack - 0)
 308 0142 DEBF      		out __SP_H__,r29
 309 0144 CDBF      		out __SP_L__,r28
 310               	/* prologue end (size=4) */
  44:D:/irene/irene3/code.c ****  DDRD=0x3f;
 312               	.LM22:
 313 0146 8FE3      		ldi r24,lo8(63)
 314 0148 81BB      		out 49-0x20,r24
  45:D:/irene/irene3/code.c ****  PORTD=0xff; 
 316               	.LM23:
 317 014a 8FEF      		ldi r24,lo8(-1)
 318 014c 82BB      		out 50-0x20,r24
  46:D:/irene/irene3/code.c ****  DDRB=0xff;
 320               	.LM24:
 321 014e 87BB      		out 55-0x20,r24
  47:D:/irene/irene3/code.c ****  PORTB=0xff;                                      /*I/O口初始化*/
 323               	.LM25:
 324 0150 88BB      		out 56-0x20,r24
 325 0152 9091 0000 		lds r25,ledcode
 326 0156 E0E0      		ldi r30,lo8(ledbuff)
 327 0158 F0E0      		ldi r31,hi8(ledbuff)
 328 015a 82E0      		ldi r24,lo8(2)
 329               	.L26:
  48:D:/irene/irene3/code.c ****  uint8_t i; 
  49:D:/irene/irene3/code.c ****  for(i=0;i<3;i++)                                     /*清空缓冲区数据 */
  50:D:/irene/irene3/code.c ****  ledbuff[i]=ledcode[0];
 331               	.LM26:
 332 015c 9193      		st Z+,r25
 334               	.LM27:
 335 015e 8150      		subi r24,lo8(-(-1))
 336 0160 87FF      		sbrs r24,7
 337 0162 FCCF      		rjmp .L26
  51:D:/irene/irene3/code.c ****  ledbuff[3]=0x00;                                    
 339               	.LM28:
 340 0164 1092 0000 		sts ledbuff+3,__zero_reg__
  52:D:/irene/irene3/code.c ****  ledbuff[4]=0x5e;                                     /*显示'd'*/
 342               	.LM29:
 343 0168 8EE5      		ldi r24,lo8(94)
 344 016a 8093 0000 		sts ledbuff+4,r24
  53:D:/irene/irene3/code.c ****  ledbuff[5]=0x77;                                     /*显示'A' */
 346               	.LM30:
 347 016e 87E7      		ldi r24,lo8(119)
 348 0170 8093 0000 		sts ledbuff+5,r24
  54:D:/irene/irene3/code.c ****  ADMUX =0x00;                                     //ADC寄存器初始化
 350               	.LM31:
 351 0174 17B8      		out 39-0x20,__zero_reg__
  55:D:/irene/irene3/code.c ****  ADCSR=(1<<ADEN)|(1<<ADSC)|(1<<ADIF)|(1<<ADIE)|0X06;      
 353               	.LM32:
 354 0176 8EED      		ldi r24,lo8(-34)
 355 0178 86B9      		out 38-0x20,r24
  56:D:/irene/irene3/code.c ****  sei();
 357               	.LM33:
 358               	/* #APP */
 359 017a 7894      		sei
 360               	/* #NOAPP */
 361               	.L27:
  57:D:/irene/irene3/code.c ****  for(;;){};
 363               	.LM34:
 364 017c FFCF      		rjmp .L27
 365               	/* epilogue: frame size=0 */
 366               	/* epilogue: noreturn */
 367               	/* epilogue end (size=0) */
 368               	/* function main size 33 (29) */
 371               		.comm ledbuff,6,1
 374               		.text
 376               	Letext:
 377               	/* File "D:/irene/irene3/code.c": code  192 = 0x00c0 ( 134), prologues  31, epilogues  27 */
DEFINED SYMBOLS
                            *ABS*:00000000 code.c
                            *ABS*:0000003f __SREG__
                            *ABS*:0000003e __SP_H__
                            *ABS*:0000003d __SP_L__
                            *ABS*:00000000 __tmp_reg__
                            *ABS*:00000001 __zero_reg__
C:\DOCUME~1\lab\LOCALS~1\Temp/ccADaaaa.s:55     .data:00000000 ledcode
C:\DOCUME~1\lab\LOCALS~1\Temp/ccADaaaa.s:71     .text:00000000 delay
C:\DOCUME~1\lab\LOCALS~1\Temp/ccADaaaa.s:95     .text:0000000a leddisplay
                            *COM*:00000006 ledbuff
C:\DOCUME~1\lab\LOCALS~1\Temp/ccADaaaa.s:167    .text:0000006c __vector_14
C:\DOCUME~1\lab\LOCALS~1\Temp/ccADaaaa.s:302    .text:0000013e main
C:\DOCUME~1\lab\LOCALS~1\Temp/ccADaaaa.s:376    .text:0000017e Letext

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__mulsi3
__udivmodhi4
__stack

⌨️ 快捷键说明

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