main_key.lst

来自「WINAVR写的2x8键盘扫描程序」· LST 代码 · 共 501 行 · 第 1/2 页

LST
501
字号
  84:C:/WinAVR/avr/include/util/delay.h **** static inline void _delay_loop_1(uint8_t __count) __attribute__((always_inline));
  85:C:/WinAVR/avr/include/util/delay.h **** static inline void _delay_loop_2(uint16_t __count) __attribute__((always_inline));
  86:C:/WinAVR/avr/include/util/delay.h **** static inline void _delay_us(double __us) __attribute__((always_inline));
  87:C:/WinAVR/avr/include/util/delay.h **** static inline void _delay_ms(double __ms) __attribute__((always_inline));
  88:C:/WinAVR/avr/include/util/delay.h **** #endif
  89:C:/WinAVR/avr/include/util/delay.h **** 
  90:C:/WinAVR/avr/include/util/delay.h **** /** \ingroup util_delay
  91:C:/WinAVR/avr/include/util/delay.h **** 
  92:C:/WinAVR/avr/include/util/delay.h ****     Delay loop using an 8-bit counter \c __count, so up to 256
  93:C:/WinAVR/avr/include/util/delay.h ****     iterations are possible.  (The value 256 would have to be passed
  94:C:/WinAVR/avr/include/util/delay.h ****     as 0.)  The loop executes three CPU cycles per iteration, not
  95:C:/WinAVR/avr/include/util/delay.h ****     including the overhead the compiler needs to setup the counter
  96:C:/WinAVR/avr/include/util/delay.h ****     register.
  97:C:/WinAVR/avr/include/util/delay.h **** 
  98:C:/WinAVR/avr/include/util/delay.h ****     Thus, at a CPU speed of 1 MHz, delays of up to 768 microseconds
  99:C:/WinAVR/avr/include/util/delay.h ****     can be achieved.
 100:C:/WinAVR/avr/include/util/delay.h **** */
 101:C:/WinAVR/avr/include/util/delay.h **** void
 102:C:/WinAVR/avr/include/util/delay.h **** _delay_loop_1(uint8_t __count)
 103:C:/WinAVR/avr/include/util/delay.h **** {
 104:C:/WinAVR/avr/include/util/delay.h **** 	__asm__ volatile (
 105:C:/WinAVR/avr/include/util/delay.h **** 		"1: dec %0" "\n\t"
 106:C:/WinAVR/avr/include/util/delay.h **** 		"brne 1b"
 107:C:/WinAVR/avr/include/util/delay.h **** 		: "=r" (__count)
 108:C:/WinAVR/avr/include/util/delay.h **** 		: "0" (__count)
 109:C:/WinAVR/avr/include/util/delay.h **** 	);
 110:C:/WinAVR/avr/include/util/delay.h **** }
 111:C:/WinAVR/avr/include/util/delay.h **** 
 112:C:/WinAVR/avr/include/util/delay.h **** /** \ingroup util_delay
 113:C:/WinAVR/avr/include/util/delay.h **** 
 114:C:/WinAVR/avr/include/util/delay.h ****     Delay loop using a 16-bit counter \c __count, so up to 65536
 115:C:/WinAVR/avr/include/util/delay.h ****     iterations are possible.  (The value 65536 would have to be
 116:C:/WinAVR/avr/include/util/delay.h ****     passed as 0.)  The loop executes four CPU cycles per iteration,
 117:C:/WinAVR/avr/include/util/delay.h ****     not including the overhead the compiler requires to setup the
 118:C:/WinAVR/avr/include/util/delay.h ****     counter register pair.
 119:C:/WinAVR/avr/include/util/delay.h **** 
 120:C:/WinAVR/avr/include/util/delay.h ****     Thus, at a CPU speed of 1 MHz, delays of up to about 262.1
 121:C:/WinAVR/avr/include/util/delay.h ****     milliseconds can be achieved.
 122:C:/WinAVR/avr/include/util/delay.h ****  */
 123:C:/WinAVR/avr/include/util/delay.h **** void
 124:C:/WinAVR/avr/include/util/delay.h **** _delay_loop_2(uint16_t __count)
 125:C:/WinAVR/avr/include/util/delay.h **** {
 126:C:/WinAVR/avr/include/util/delay.h **** 	__asm__ volatile (
 127:C:/WinAVR/avr/include/util/delay.h **** 		"1: sbiw %0,1" "\n\t"
 128:C:/WinAVR/avr/include/util/delay.h **** 		"brne 1b"
 129:C:/WinAVR/avr/include/util/delay.h **** 		: "=w" (__count)
 130:C:/WinAVR/avr/include/util/delay.h **** 		: "0" (__count)
 131:C:/WinAVR/avr/include/util/delay.h **** 	);
 132:C:/WinAVR/avr/include/util/delay.h **** }
 133:C:/WinAVR/avr/include/util/delay.h **** 
 134:C:/WinAVR/avr/include/util/delay.h **** #ifndef F_CPU
 135:C:/WinAVR/avr/include/util/delay.h **** /* prevent compiler error by supplying a default */
 136:C:/WinAVR/avr/include/util/delay.h **** # warning "F_CPU not defined for <util/delay.h>"
 137:C:/WinAVR/avr/include/util/delay.h **** # define F_CPU 1000000UL
 138:C:/WinAVR/avr/include/util/delay.h **** #endif
 139:C:/WinAVR/avr/include/util/delay.h **** 
 140:C:/WinAVR/avr/include/util/delay.h **** /**
 141:C:/WinAVR/avr/include/util/delay.h ****    \ingroup util_delay
 142:C:/WinAVR/avr/include/util/delay.h **** 
 143:C:/WinAVR/avr/include/util/delay.h ****    Perform a delay of \c __us microseconds, using _delay_loop_1().
 144:C:/WinAVR/avr/include/util/delay.h **** 
 145:C:/WinAVR/avr/include/util/delay.h ****    The macro F_CPU is supposed to be defined to a
 146:C:/WinAVR/avr/include/util/delay.h ****    constant defining the CPU clock frequency (in Hertz).
 147:C:/WinAVR/avr/include/util/delay.h **** 
 148:C:/WinAVR/avr/include/util/delay.h ****    The maximal possible delay is 768 us / F_CPU in MHz.
 149:C:/WinAVR/avr/include/util/delay.h ****  */
 150:C:/WinAVR/avr/include/util/delay.h **** void
 151:C:/WinAVR/avr/include/util/delay.h **** _delay_us(double __us)
 152:C:/WinAVR/avr/include/util/delay.h **** {
 153:C:/WinAVR/avr/include/util/delay.h **** 	uint8_t __ticks;
 154:C:/WinAVR/avr/include/util/delay.h **** 	double __tmp = ((F_CPU) / 3e6) * __us;
 155:C:/WinAVR/avr/include/util/delay.h **** 	if (__tmp < 1.0)
 156:C:/WinAVR/avr/include/util/delay.h **** 		__ticks = 1;
 157:C:/WinAVR/avr/include/util/delay.h **** 	else if (__tmp > 255)
 158:C:/WinAVR/avr/include/util/delay.h **** 		__ticks = 0;	/* i.e. 256 */
 159:C:/WinAVR/avr/include/util/delay.h **** 	else
 160:C:/WinAVR/avr/include/util/delay.h **** 		__ticks = (uint8_t)__tmp;
 161:C:/WinAVR/avr/include/util/delay.h **** 	_delay_loop_1(__ticks);
 162:C:/WinAVR/avr/include/util/delay.h **** }
 163:C:/WinAVR/avr/include/util/delay.h **** 
 164:C:/WinAVR/avr/include/util/delay.h **** 
 165:C:/WinAVR/avr/include/util/delay.h **** /**
 166:C:/WinAVR/avr/include/util/delay.h ****    \ingroup util_delay
 167:C:/WinAVR/avr/include/util/delay.h **** 
 168:C:/WinAVR/avr/include/util/delay.h ****    Perform a delay of \c __ms milliseconds, using _delay_loop_2().
 169:C:/WinAVR/avr/include/util/delay.h **** 
 170:C:/WinAVR/avr/include/util/delay.h ****    The macro F_CPU is supposed to be defined to a
 171:C:/WinAVR/avr/include/util/delay.h ****    constant defining the CPU clock frequency (in Hertz).
 172:C:/WinAVR/avr/include/util/delay.h **** 
 173:C:/WinAVR/avr/include/util/delay.h ****    The maximal possible delay is 262.14 ms / F_CPU in MHz.
 174:C:/WinAVR/avr/include/util/delay.h ****  */
 175:C:/WinAVR/avr/include/util/delay.h **** void
 176:C:/WinAVR/avr/include/util/delay.h **** _delay_ms(double __ms)
 177:C:/WinAVR/avr/include/util/delay.h **** {
 207               	.LM15:
 208 00a4 80E0      		ldi r24,lo8(0x42480000)
 209 00a6 90E0      		ldi r25,hi8(0x42480000)
 210 00a8 A8E4      		ldi r26,hlo8(0x42480000)
 211 00aa B2E4      		ldi r27,hhi8(0x42480000)
 212 00ac 8A83      		std Y+2,r24
 213 00ae 9B83      		std Y+3,r25
 214 00b0 AC83      		std Y+4,r26
 215 00b2 BD83      		std Y+5,r27
 216               	.LBB4:
 178:C:/WinAVR/avr/include/util/delay.h **** 	uint16_t __ticks;
 179:C:/WinAVR/avr/include/util/delay.h **** 	double __tmp = ((F_CPU) / 4e3) * __ms;
 218               	.LM16:
 219 00b4 26E6      		ldi r18,lo8(0x44e66666)
 220 00b6 36E6      		ldi r19,hi8(0x44e66666)
 221 00b8 46EE      		ldi r20,hlo8(0x44e66666)
 222 00ba 54E4      		ldi r21,hhi8(0x44e66666)
 223 00bc 6A81      		ldd r22,Y+2
 224 00be 7B81      		ldd r23,Y+3
 225 00c0 8C81      		ldd r24,Y+4
 226 00c2 9D81      		ldd r25,Y+5
 227 00c4 0E94 0000 		call __mulsf3
 228 00c8 DC01      		movw r26,r24
 229 00ca CB01      		movw r24,r22
 230 00cc 8887      		std Y+8,r24
 231 00ce 9987      		std Y+9,r25
 232 00d0 AA87      		std Y+10,r26
 233 00d2 BB87      		std Y+11,r27
 180:C:/WinAVR/avr/include/util/delay.h **** 	if (__tmp < 1.0)
 235               	.LM17:
 236 00d4 20E0      		ldi r18,lo8(0x3f800000)
 237 00d6 30E0      		ldi r19,hi8(0x3f800000)
 238 00d8 40E8      		ldi r20,hlo8(0x3f800000)
 239 00da 5FE3      		ldi r21,hhi8(0x3f800000)
 240 00dc 6885      		ldd r22,Y+8
 241 00de 7985      		ldd r23,Y+9
 242 00e0 8A85      		ldd r24,Y+10
 243 00e2 9B85      		ldd r25,Y+11
 244 00e4 0E94 0000 		call __ltsf2
 245 00e8 8823      		tst r24
 246 00ea 0CF0      		brlt .L7
 247 00ec 05C0      		rjmp .L6
 248               	.L7:
 181:C:/WinAVR/avr/include/util/delay.h **** 		__ticks = 1;
 250               	.LM18:
 251 00ee 81E0      		ldi r24,lo8(1)
 252 00f0 90E0      		ldi r25,hi8(1)
 253 00f2 9F83      		std Y+7,r25
 254 00f4 8E83      		std Y+6,r24
 255 00f6 1AC0      		rjmp .L8
 256               	.L6:
 182:C:/WinAVR/avr/include/util/delay.h **** 	else if (__tmp > 65535)
 258               	.LM19:
 259 00f8 20E0      		ldi r18,lo8(0x477fff00)
 260 00fa 3FEF      		ldi r19,hi8(0x477fff00)
 261 00fc 4FE7      		ldi r20,hlo8(0x477fff00)
 262 00fe 57E4      		ldi r21,hhi8(0x477fff00)
 263 0100 6885      		ldd r22,Y+8
 264 0102 7985      		ldd r23,Y+9
 265 0104 8A85      		ldd r24,Y+10
 266 0106 9B85      		ldd r25,Y+11
 267 0108 0E94 0000 		call __gtsf2
 268 010c 1816      		cp __zero_reg__,r24
 269 010e 0CF0      		brlt .L10
 270 0110 03C0      		rjmp .L9
 271               	.L10:
 183:C:/WinAVR/avr/include/util/delay.h **** 		__ticks = 0;	/* i.e. 65536 */
 273               	.LM20:
 274 0112 1F82      		std Y+7,__zero_reg__
 275 0114 1E82      		std Y+6,__zero_reg__
 276 0116 0AC0      		rjmp .L8
 277               	.L9:
 184:C:/WinAVR/avr/include/util/delay.h **** 	else
 185:C:/WinAVR/avr/include/util/delay.h **** 		__ticks = (uint16_t)__tmp;
 279               	.LM21:
 280 0118 6885      		ldd r22,Y+8
 281 011a 7985      		ldd r23,Y+9
 282 011c 8A85      		ldd r24,Y+10
 283 011e 9B85      		ldd r25,Y+11
 284 0120 0E94 0000 		call __fixunssfsi
 285 0124 DC01      		movw r26,r24
 286 0126 CB01      		movw r24,r22
 287 0128 9F83      		std Y+7,r25
 288 012a 8E83      		std Y+6,r24
 289               	.L8:
 290               	.LBB5:
 292               	.LM22:
 293 012c 8E81      		ldd r24,Y+6
 294 012e 9F81      		ldd r25,Y+7
 295 0130 9D87      		std Y+13,r25
 296 0132 8C87      		std Y+12,r24
 297               	.LBB6:
 299               	.LM23:
 300 0134 8C85      		ldd r24,Y+12
 301 0136 9D85      		ldd r25,Y+13
 302               	/* #APP */
 303 0138 0197      		1: sbiw r24,1
 304 013a F1F7      		brne 1b
 305               	/* #NOAPP */
 306 013c 9D87      		std Y+13,r25
 307 013e 8C87      		std Y+12,r24
 308               	.LBE6:
 309               	.LBE5:
 310               	.LBE4:
 311               	.LBE3:
 313               	.Ltext2:
  48:main_key.c    **** 		_delay_ms(50);
  49:main_key.c    **** 		if(temp_key1==key())
 315               	.LM24:
 316 0140 0E94 0000 		call key
 317 0144 982F      		mov r25,r24
 318 0146 8981      		ldd r24,Y+1
 319 0148 9817      		cp r25,r24
 320 014a 09F0      		breq .+2
 321 014c A8CF      		rjmp .L4
  50:main_key.c    **** 		{
  51:main_key.c    **** 		  //LCM1602Write_String(0,0,temp_key1);
  52:main_key.c    **** 			LCM1602Write_number(temp_key1);
 323               	.LM25:
 324 014e 8981      		ldd r24,Y+1
 325 0150 0E94 0000 		call LCM1602Write_number
 326               	.LBE2:
 327 0154 A4CF      		rjmp .L4
 328               	/* epilogue: frame size=13 */
 329               	/* epilogue: noreturn */
 330               	/* epilogue end (size=0) */
 331               	/* function main size 106 (102) */
 346               	.Lscope2:
 347               		.text
 349               	Letext:
 350               	/* File "main_key.c": code  174 = 0x00ae ( 123), prologues  29, epilogues  22 */
DEFINED SYMBOLS
                            *ABS*:00000000 main_key.c
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyebaaa.s:3      *ABS*:0000003f __SREG__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyebaaa.s:4      *ABS*:0000003e __SP_H__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyebaaa.s:5      *ABS*:0000003d __SP_L__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyebaaa.s:6      *ABS*:00000000 __tmp_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyebaaa.s:7      *ABS*:00000001 __zero_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyebaaa.s:76     .text:00000000 Timer0_init
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyebaaa.s:114    .text:0000002e __vector_9
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyebaaa.s:174    .text:00000088 main
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyebaaa.s:349    .text:00000156 Letext

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
key
__stack
key_init
LCM1602Init
__mulsf3
__ltsf2
__gtsf2
__fixunssfsi
LCM1602Write_number

⌨️ 快捷键说明

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