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

📄 tc0counter.lst

📁 AVR单片机atmega16的定时计数器T0实现四位加减计数器
💻 LST
📖 第 1 页 / 共 2 页
字号:
 172 003c 28EE      		ldi r18,lo8(1000)
 173 003e 33E0      		ldi r19,hi8(1000)
 174 0040 B901      		movw r22,r18
 175 0042 0E94 0000 		call __udivmodhi4
 176 0046 D801      		movw r26,r16
 177 0048 6D93      		st X+,r22
 178 004a 7C93      		st X,r23
  40:TC0counter.c  **** 	i=i%1000;
 180               	.LM10:
 181 004c CF01      		movw r24,r30
 182 004e B901      		movw r22,r18
 183 0050 0E94 0000 		call __udivmodhi4
 184 0054 9C01      		movw r18,r24
  41:TC0counter.c  **** 	p[1]=i/100;
 186               	.LM11:
 187 0056 E4E6      		ldi r30,lo8(100)
 188 0058 F0E0      		ldi r31,hi8(100)
 189 005a BF01      		movw r22,r30
 190 005c 0E94 0000 		call __udivmodhi4
 191 0060 E801      		movw r28,r16
 192 0062 6A83      		std Y+2,r22
 193 0064 7B83      		std Y+3,r23
  42:TC0counter.c  **** 	i=i%100;
 195               	.LM12:
 196 0066 C901      		movw r24,r18
 197 0068 BF01      		movw r22,r30
 198 006a 0E94 0000 		call __udivmodhi4
 199 006e 9C01      		movw r18,r24
  43:TC0counter.c  **** 	p[2]=i/10;
 201               	.LM13:
 202 0070 EAE0      		ldi r30,lo8(10)
 203 0072 F0E0      		ldi r31,hi8(10)
 204 0074 BF01      		movw r22,r30
 205 0076 0E94 0000 		call __udivmodhi4
 206 007a 6C83      		std Y+4,r22
 207 007c 7D83      		std Y+5,r23
  44:TC0counter.c  **** 	i=i%10;
 209               	.LM14:
 210 007e C901      		movw r24,r18
 211 0080 BF01      		movw r22,r30
 212 0082 0E94 0000 		call __udivmodhi4
  45:TC0counter.c  **** 	p[3]=i;
 214               	.LM15:
 215 0086 8E83      		std Y+6,r24
 216 0088 9F83      		std Y+7,r25
 217               	/* epilogue: frame size=0 */
 218 008a DF91      		pop r29
 219 008c CF91      		pop r28
 220 008e 1F91      		pop r17
 221 0090 0F91      		pop r16
 222 0092 0895      		ret
 223               	/* epilogue end (size=5) */
 224               	/* function Process size 50 (41) */
 226               	.Lscope1:
 228               	.global	Init_IO
 230               	Init_IO:
  46:TC0counter.c  **** 	//int j;
  47:TC0counter.c  **** 	//for(j=0;j<4;j++,p++)
  48:TC0counter.c  **** 	//Data[j]= *p;
  49:TC0counter.c  **** }
  50:TC0counter.c  **** 
  51:TC0counter.c  **** 
  52:TC0counter.c  **** void Init_IO(void)               //初始化I/O口
  53:TC0counter.c  **** {
 232               	.LM16:
 233               	/* prologue: frame size=0 */
 234               	/* prologue end (size=0) */
  54:TC0counter.c  **** 	DDRA=0xff;                    //设置A口为推挽1输出
 236               	.LM17:
 237 0094 8FEF      		ldi r24,lo8(-1)
 238 0096 8ABB      		out 58-0x20,r24
  55:TC0counter.c  **** 	PORTA=0xff;
 240               	.LM18:
 241 0098 8BBB      		out 59-0x20,r24
  56:TC0counter.c  **** 	DDRC=0xff;                    //设置C口为不带上拉电阻的输入
 243               	.LM19:
 244 009a 84BB      		out 52-0x20,r24
  57:TC0counter.c  **** 	PORTC=0xff;    
 246               	.LM20:
 247 009c 85BB      		out 53-0x20,r24
  58:TC0counter.c  **** 	DDRD=0x00;                    //设置D口为推挽1输出;             
 249               	.LM21:
 250 009e 11BA      		out 49-0x20,__zero_reg__
  59:TC0counter.c  **** 	PORTD=0x00;
 252               	.LM22:
 253 00a0 12BA      		out 50-0x20,__zero_reg__
 254               	/* epilogue: frame size=0 */
 255 00a2 0895      		ret
 256               	/* epilogue end (size=1) */
 257               	/* function Init_IO size 8 (7) */
 259               	.Lscope2:
 261               	.global	main
 263               	main:
  60:TC0counter.c  **** }
  61:TC0counter.c  **** 
  62:TC0counter.c  **** 
  63:TC0counter.c  **** int main(void)
  64:TC0counter.c  **** {	
 265               	.LM23:
 266               	/* prologue: frame size=0 */
 267 00a4 C0E0      		ldi r28,lo8(__stack - 0)
 268 00a6 D0E0      		ldi r29,hi8(__stack - 0)
 269 00a8 DEBF      		out __SP_H__,r29
 270 00aa CDBF      		out __SP_L__,r28
 271               	/* prologue end (size=4) */
  65:TC0counter.c  **** 	uint i,Load;
  66:TC0counter.c  **** 	Init_IO();                        //初始化I/O口
 273               	.LM24:
 274 00ac 0E94 0000 		call Init_IO
  67:TC0counter.c  **** 	PORTA=0xff;						  //点亮测试所有的数码管
 276               	.LM25:
 277 00b0 8FEF      		ldi r24,lo8(-1)
 278 00b2 8BBB      		out 59-0x20,r24
  68:TC0counter.c  **** 	PORTC=0x00;
 280               	.LM26:
 281 00b4 15BA      		out 53-0x20,__zero_reg__
 282 00b6 A0EA      		ldi r26,lo8(4000)
 283 00b8 BFE0      		ldi r27,hi8(4000)
 284 00ba C0E0      		ldi r28,hlo8(4000)
 285 00bc D0E0      		ldi r29,hhi8(4000)
 286 00be 28EE      		ldi r18,lo8(1000)
 287 00c0 33E0      		ldi r19,hi8(1000)
 288               	.L30:
 289               	.LBB6:
 290               	.LBB7:
 291               	.LBB8:
 292               	.LBB9:
 294               	.Ltext3:
 296               	.LM27:
 297 00c2 CD01      		movw r24,r26
 298               	/* #APP */
 299 00c4 0197      		1: sbiw r24,1
 300 00c6 F1F7      		brne 1b
 301               	/* #NOAPP */
 302               	.LBE9:
 303               	.LBE8:
 304               	.LBE7:
 305               	.LBE6:
 307               	.Ltext4:
  69:TC0counter.c  **** 	for(i=0;i<1001;i++)
 309               	.LM28:
 310 00c8 2150      		subi r18,lo8(-(-1))
 311 00ca 3040      		sbci r19,hi8(-(-1))
 312 00cc 37FF      		sbrs r19,7
 313 00ce F9CF      		rjmp .L30
  70:TC0counter.c  **** 	_delay_ms(2);               //显示延时
  71:TC0counter.c  **** 	PORTC=0xff;                      //数码管熄灭,进入计数器状态               
 315               	.LM29:
 316 00d0 8FEF      		ldi r24,lo8(-1)
 317 00d2 85BB      		out 53-0x20,r24
  72:TC0counter.c  **** 	TCCR0=0x06;
 319               	.LM30:
 320 00d4 86E0      		ldi r24,lo8(6)
 321 00d6 83BF      		out 83-0x20,r24
  73:TC0counter.c  **** 	TCNT0=CNT;
 323               	.LM31:
 324 00d8 8091 0000 		lds r24,CNT
 325 00dc 82BF      		out 82-0x20,r24
  74:TC0counter.c  **** 	while( (PIND&0x01)==0)
  75:TC0counter.c  **** 	{     
  76:TC0counter.c  **** 		uint j;
  77:TC0counter.c  **** 		if(CNT!=9999)
  78:TC0counter.c  **** 		{
  79:TC0counter.c  **** 			CNT=CNT+1;
  80:TC0counter.c  **** 			TCNT0=CNT;
  81:TC0counter.c  **** 			Process(TCNT0,Data);          //计数值处理
  82:TC0counter.c  **** 			Display(Data); 				 //动态扫描显示 
 327               	.LM32:
 328 00de 8099      		sbic 48-0x20,0
 329 00e0 1CC0      		rjmp .L38
 330               	.L34:
 331               	.LBB10:
 333               	.LM33:
 334 00e2 8091 0000 		lds r24,CNT
 335 00e6 9091 0000 		lds r25,(CNT)+1
 336 00ea 27E2      		ldi r18,hi8(9999)
 337 00ec 8F30      		cpi r24,lo8(9999)
 338 00ee 9207      		cpc r25,r18
 339 00f0 91F0      		breq .L31
 341               	.LM34:
 342 00f2 0196      		adiw r24,1
 343 00f4 9093 0000 		sts (CNT)+1,r25
 344 00f8 8093 0000 		sts CNT,r24
 346               	.LM35:
 347 00fc 8091 0000 		lds r24,CNT
 348 0100 82BF      		out 82-0x20,r24
 350               	.LM36:
 351 0102 82B7      		in r24,82-0x20
 352 0104 60E0      		ldi r22,lo8(Data)
 353 0106 70E0      		ldi r23,hi8(Data)
 354 0108 9927      		clr r25
 355 010a 0E94 0000 		call Process
 357               	.LM37:
 358 010e 80E0      		ldi r24,lo8(Data)
 359 0110 90E0      		ldi r25,hi8(Data)
 360 0112 0E94 0000 		call Display
 361               	.L31:
 362               	.LBE10:
 363 0116 809B      		sbis 48-0x20,0
 364 0118 E4CF      		rjmp .L34
 365               	.L38:
  83:TC0counter.c  **** 		}	
  84:TC0counter.c  **** 	}
  85:TC0counter.c  **** 	Display(Data);
 367               	.LM38:
 368 011a 80E0      		ldi r24,lo8(Data)
 369 011c 90E0      		ldi r25,hi8(Data)
 370 011e 0E94 0000 		call Display
  86:TC0counter.c  **** 	return 0;
  87:TC0counter.c  **** }
 372               	.LM39:
 373 0122 80E0      		ldi r24,lo8(0)
 374 0124 90E0      		ldi r25,hi8(0)
 375               	/* epilogue: frame size=0 */
 376 0126 0C94 0000 		jmp exit
 377               	/* epilogue end (size=2) */
 378               	/* function main size 69 (63) */
 386               	.Lscope3:
 387               		.comm Key_Up,1,1
 388               		.comm Key_Down,1,1
 394               		.text
 396               	Letext:
 397               	/* File "TC0counter.c": code  153 = 0x0099 ( 136), prologues   8, epilogues   9 */
DEFINED SYMBOLS
                            *ABS*:00000000 TC0counter.c
                            *ABS*:0000003f __SREG__
                            *ABS*:0000003e __SP_H__
                            *ABS*:0000003d __SP_L__
                            *ABS*:00000000 __tmp_reg__
                            *ABS*:00000001 __zero_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc4cbaaa.s:58     .bss:00000000 CNT
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc4cbaaa.s:64     .bss:00000002 Data
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc4cbaaa.s:70     .data:00000000 Table
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc4cbaaa.s:86     .text:00000000 Display
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc4cbaaa.s:159    .text:00000030 Process
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc4cbaaa.s:230    .text:00000094 Init_IO
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc4cbaaa.s:263    .text:000000a4 main
                            *COM*:00000001 Key_Up
                            *COM*:00000001 Key_Down
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc4cbaaa.s:396    .text:0000012a Letext

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__udivmodhi4
__stack
exit

⌨️ 快捷键说明

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