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

📄 main.lst

📁 基于AVR单片机的程近期电话交换机源程序,可实现一拖四(一外线,四内线).
💻 LST
📖 第 1 页 / 共 5 页
字号:
 232               	.LM10:
 233 0026 80E2      		ldi r24,lo8(32)
 234 0028 85BB      		out 53-0x20,r24
  73:main.c        ****  DDRC  = 0x30;
 236               	.LM11:
 237 002a 80E3      		ldi r24,lo8(48)
 238 002c 84BB      		out 52-0x20,r24
  74:main.c        ****  PORTD = 0x00;
 240               	.LM12:
 241 002e 12BA      		out 50-0x20,__zero_reg__
  75:main.c        ****  DDRD  = 0x01;
 243               	.LM13:
 244 0030 81E0      		ldi r24,lo8(1)
 245 0032 81BB      		out 49-0x20,r24
  76:main.c        ****  
  77:main.c        ****  MCUCR = 0x0E;		//INT1 raising edg cause intterupt, INT0 falling edg
 247               	.LM14:
 248 0034 8EE0      		ldi r24,lo8(14)
 249 0036 85BF      		out 85-0x20,r24
  78:main.c        ****  GICR  = 0xC0;		//enable INT1,INT0
 251               	.LM15:
 252 0038 90EC      		ldi r25,lo8(-64)
 253 003a 9BBF      		out 91-0x20,r25
  79:main.c        ****  
  80:main.c        ****  ADCSRA= 0xED;		//enabel ADC, enable interrupt, ADCck=fck/128
 255               	.LM16:
 256 003c 8DEE      		ldi r24,lo8(-19)
 257 003e 86B9      		out 38-0x20,r24
  81:main.c        ****  ADMUX = 0xc0;		//CH0
 259               	.LM17:
 260 0040 97B9      		out 39-0x20,r25
  82:main.c        ****  
  83:main.c        ****  TCCR2 = 0x0f;
 262               	.LM18:
 263 0042 8FE0      		ldi r24,lo8(15)
 264 0044 85BD      		out 69-0x20,r24
  84:main.c        ****  OCR2  = 77;		//timer for 10mS
 266               	.LM19:
 267 0046 8DE4      		ldi r24,lo8(77)
 268 0048 83BD      		out 67-0x20,r24
  85:main.c        ****  TIMSK = 0x80;		//enable intterrupt 
 270               	.LM20:
 271 004a 80E8      		ldi r24,lo8(-128)
 272 004c 89BF      		out 89-0x20,r24
  86:main.c        ****  
  87:main.c        ****   
  88:main.c        ****  UCSRB = 0x00; 		//serial port setting
 274               	.LM21:
 275 004e 1AB8      		out 42-0x20,__zero_reg__
  89:main.c        ****  UCSRA = 0x00;
 277               	.LM22:
 278 0050 1BB8      		out 43-0x20,__zero_reg__
  90:main.c        ****  UCSRC = 0x80 | 0x06;
 280               	.LM23:
 281 0052 86E8      		ldi r24,lo8(-122)
 282 0054 80BD      		out 64-0x20,r24
  91:main.c        ****  UBRRL = 51; 		//set baud rate lo		   baud rate=9600, fck=8.00MHz
 284               	.LM24:
 285 0056 83E3      		ldi r24,lo8(51)
 286 0058 89B9      		out 41-0x20,r24
  92:main.c        ****  UBRRH = 0x00; 		//set baud rate hi
 288               	.LM25:
 289 005a 10BC      		out 64-0x20,__zero_reg__
  93:main.c        ****  UCSRB = 0x08;      //enable to sent receive and 8 bits per bits//*/
 291               	.LM26:
 292 005c 88E0      		ldi r24,lo8(8)
 293 005e 8AB9      		out 42-0x20,r24
  94:main.c        ****  
  95:main.c        ****  sei();  
 295               	.LM27:
 296               	/* #APP */
 297 0060 7894      		sei
 298               	/* #NOAPP */
 299               	/* epilogue: frame size=0 */
 300 0062 0895      		ret
 301               	/* epilogue end (size=1) */
 302               	/* function s_ini size 38 (37) */
 304               	.Lscope1:
 306               	.global	__vector_14
 308               	__vector_14:
  96:main.c        **** }
  97:main.c        **** 
  98:main.c        **** SIGNAL(SIG_ADC)		//adc interrupt
  99:main.c        **** {
 310               	.LM28:
 311               	/* prologue: frame size=0 */
 312 0064 1F92      		push __zero_reg__
 313 0066 0F92      		push __tmp_reg__
 314 0068 0FB6      		in __tmp_reg__,__SREG__
 315 006a 0F92      		push __tmp_reg__
 316 006c 1124      		clr __zero_reg__
 317 006e 2F93      		push r18
 318 0070 3F93      		push r19
 319 0072 5F93      		push r21
 320 0074 6F93      		push r22
 321 0076 7F93      		push r23
 322 0078 8F93      		push r24
 323 007a 9F93      		push r25
 324 007c AF93      		push r26
 325 007e BF93      		push r27
 326               	/* prologue end (size=14) */
 100:main.c        ****  uint tmp;
 101:main.c        ****  if(((ringtime<395)&&(ringtime>375))||((ringtime<270)&&(ringtime>250))
 328               	.LM29:
 329 0080 8091 0000 		lds r24,ringtime
 330 0084 9091 0000 		lds r25,(ringtime)+1
 331 0088 8B58      		subi r24,lo8(395)
 332 008a 9140      		sbci r25,hi8(395)
 333 008c 38F4      		brsh .L13
 335               	.LM30:
 336 008e 8091 0000 		lds r24,ringtime
 337 0092 9091 0000 		lds r25,(ringtime)+1
 338 0096 8857      		subi r24,lo8(376)
 339 0098 9140      		sbci r25,hi8(376)
 340 009a 50F5      		brsh .L12
 341               	.L13:
 342 009c 8091 0000 		lds r24,ringtime
 343 00a0 9091 0000 		lds r25,(ringtime)+1
 344 00a4 8E50      		subi r24,lo8(270)
 345 00a6 9140      		sbci r25,hi8(270)
 346 00a8 38F4      		brsh .L14
 347 00aa 8091 0000 		lds r24,ringtime
 348 00ae 9091 0000 		lds r25,(ringtime)+1
 349 00b2 8B3F      		cpi r24,251
 350 00b4 9105      		cpc r25,__zero_reg__
 351 00b6 E0F4      		brsh .L12
 352               	.L14:
 353 00b8 8091 0000 		lds r24,ringtime
 354 00bc 9091 0000 		lds r25,(ringtime)+1
 355 00c0 8139      		cpi r24,145
 356 00c2 9105      		cpc r25,__zero_reg__
 357 00c4 38F4      		brsh .L15
 358 00c6 8091 0000 		lds r24,ringtime
 359 00ca 9091 0000 		lds r25,(ringtime)+1
 360 00ce 8E37      		cpi r24,126
 361 00d0 9105      		cpc r25,__zero_reg__
 362 00d2 70F4      		brsh .L12
 363               	.L15:
 364 00d4 8091 0000 		lds r24,ringtime
 365 00d8 9091 0000 		lds r25,(ringtime)+1
 366 00dc 4497      		sbiw r24,20
 367 00de 08F0      		brlo .+2
 368 00e0 8DC0      		rjmp .L11
 369 00e2 8091 0000 		lds r24,ringtime
 370 00e6 9091 0000 		lds r25,(ringtime)+1
 371 00ea 892B      		or r24,r25
 372 00ec 09F4      		brne .+2
 373 00ee 86C0      		rjmp .L11
 374               	.L12:
 102:main.c        **** 	||((ringtime<145)&&(ringtime>125)) || ((ringtime<20)&&(ringtime>0)))	//铃响期间不进行摘机检测
 103:main.c        ****    {
 104:main.c        ****     adadd+=ADC;		//
 376               	.LM31:
 377 00f0 8091 0000 		lds r24,adadd
 378 00f4 9091 0000 		lds r25,(adadd)+1
 379 00f8 24B1      		in r18,36-0x20
 380 00fa 35B1      		in r19,(36)+1-0x20
 381 00fc 820F      		add r24,r18
 382 00fe 931F      		adc r25,r19
 383 0100 9093 0000 		sts (adadd)+1,r25
 384 0104 8093 0000 		sts adadd,r24
 105:main.c        ****     adcou--;
 386               	.LM32:
 387 0108 8091 0000 		lds r24,adcou
 388 010c 8150      		subi r24,lo8(-(-1))
 389 010e 8093 0000 		sts adcou,r24
 106:main.c        **** 	
 107:main.c        ****     if(adcou==0)		//完成ADC0,切换到ADC3
 391               	.LM33:
 392 0112 2091 0000 		lds r18,adcou
 393 0116 2223      		tst r18
 394 0118 B1F4      		brne .L16
 108:main.c        ****       {
 109:main.c        ****        adcou=240;
 396               	.LM34:
 397 011a 80EF      		ldi r24,lo8(-16)
 398 011c 8093 0000 		sts adcou,r24
 110:main.c        **** 	 
 111:main.c        ****        ADMUX=0xC3;
 400               	.LM35:
 401 0120 83EC      		ldi r24,lo8(-61)
 402 0122 87B9      		out 39-0x20,r24
 112:main.c        **** 	    if((adadd/50)>GATE)	//取结果
 404               	.LM36:
 405 0124 8091 0000 		lds r24,adadd
 406 0128 9091 0000 		lds r25,(adadd)+1
 407 012c 62E3      		ldi r22,lo8(50)
 408 012e 70E0      		ldi r23,hi8(50)
 409 0130 00D0      		rcall __udivmodhi4
 410 0132 6531      		cpi r22,21
 411 0134 7105      		cpc r23,__zero_reg__
 412 0136 20F0      		brlo .L17
 113:main.c        **** 	       hu[3]=1;
 414               	.LM37:
 415 0138 81E0      		ldi r24,lo8(1)
 416 013a 8093 0000 		sts hu+3,r24
 417 013e 60C0      		rjmp .L10
 418               	.L17:
 114:main.c        **** 	    else
 115:main.c        **** 	       hu[3]=0;
 420               	.LM38:
 421 0140 2093 0000 		sts hu+3,r18
 422 0144 5DC0      		rjmp .L10
 423               	.L16:
 116:main.c        **** 	   }
 117:main.c        ****     else if(adcou==230)	//开始记录ADC3
 425               	.LM39:
 426 0146 8091 0000 		lds r24,adcou
 427 014a 863E      		cpi r24,lo8(-26)
 428 014c 09F4      		brne .+2
 429 014e 51C0      		rjmp .L40
 118:main.c        ****        {
 119:main.c        **** 	    adadd=0;
 120:main.c        **** 	   }
 121:main.c        ****      else if(adcou==180)	//完成ADC3,切换到ADC2
 431               	.LM40:
 432 0150 8091 0000 		lds r24,adcou
 433 0154 843B      		cpi r24,lo8(-76)
 434 0156 99F4      		brne .L22
 122:main.c        ****        {
 123:main.c        **** 	    ADMUX=0xc2;
 436               	.LM41:
 437 0158 82EC      		ldi r24,lo8(-62)
 438 015a 87B9      		out 39-0x20,r24
 124:main.c        **** 	    if((adadd/50)>GATE)	//取结果
 440               	.LM42:
 441 015c 8091 0000 		lds r24,adadd
 442 0160 9091 0000 		lds r25,(adadd)+1
 443 0164 62E3      		ldi r22,lo8(50)
 444 0166 70E0      		ldi r23,hi8(50)
 445 0168 00D0      		rcall __udivmodhi4
 446 016a 6531      		cpi r22,21
 447 016c 7105      		cpc r23,__zero_reg__
 448 016e 20F0      		brlo .L23
 125:main.c        **** 	       hu[0]=1;
 450               	.LM43:
 451 0170 81E0      		ldi r24,lo8(1)
 452 0172 8093 0000 		sts hu,r24
 453 0176 44C0      		rjmp .L10
 454               	.L23:
 126:main.c        **** 	    else 
 127:main.c        **** 	       hu[0]=0;	    
 456               	.LM44:
 457 0178 1092 0000 		sts hu,__zero_reg__
 458 017c 41C0      		rjmp .L10
 459               	.L22:
 128:main.c        **** 	   }
 129:main.c        ****      else if(adcou==170)	//开始记录ADC2
 461               	.LM45:
 462 017e 8091 0000 		lds r24,adcou
 463 0182 8A3A      		cpi r24,lo8(-86)
 464 0184 B1F1      		breq .L40
 130:main.c        ****       {
 131:main.c        **** 	    adadd=0;
 132:main.c        **** 	   }
 133:main.c        ****      else if(adcou==120)	//完成ADC2, 切换到ADC1
 466               	.LM46:
 467 0186 8091 0000 		lds r24,adcou
 468 018a 8837      		cpi r24,lo8(120)
 469 018c 99F4      		brne .L28
 134:main.c        ****       {
 135:main.c        **** 	   ADMUX=0xc1;
 471               	.LM47:
 472 018e 81EC      		ldi r24,lo8(-63)
 473 0190 87B9      		out 39-0x20,r24
 136:main.c        **** 	   if((adadd/50)>GATE)		//取结果
 475               	.LM48:
 476 0192 8091 0000 		lds r24,adadd
 477 0196 9091 0000 		lds r25,(adadd)+1
 478 019a 62E3      		ldi r22,lo8(50)
 479 019c 70E0      		ldi r23,hi8(50)
 480 019e 00D0      		rcall __udivmodhi4
 481 01a0 6531      		cpi r22,21
 482 01a2 7105      		cpc r23,__zero_reg__
 483 01a4 20F0      		brlo .L29
 137:main.c        **** 	       hu[1]=1;
 485               	.LM49:
 486 01a6 81E0      		ldi r24,lo8(1)
 487 01a8 8093 0000 		sts hu+1,r24
 488 01ac 29C0      		rjmp .L10
 489               	.L29:
 138:main.c        ****        else 
 139:main.c        ****           hu[1]=0; 
 491               	.LM50:
 492 01ae 1092 0000 		sts hu+1,__zero_reg__
 493 01b2 26C0      		rjmp .L10
 494               	.L28:
 140:main.c        **** 	   }
 141:main.c        ****      else if(adcou==110)	//开始记录ADC1
 496               	.LM51:
 497 01b4 8091 0000 		lds r24,adcou
 498 01b8 8E36      		cpi r24,lo8(110)
 499 01ba D9F0      		breq .L40
 142:main.c        ****        {
 143:main.c        **** 	    adadd=0;
 144:main.c        **** 	   }
 145:main.c        ****      else if(adcou==60)	//完成ADC1, 切换到ADC0
 501               	.LM52:
 502 01bc 8091 0000 		lds r24,adcou
 503 01c0 8C33      		cpi r24,lo8(60)
 504 01c2 99F4      		brne .L34
 146:main.c        ****        {
 147:main.c        **** 	    ADMUX=0xc0;
 506               	.LM53:
 507 01c4 80EC      		ldi r24,lo8(-64)
 508 01c6 87B9      		out 39-0x20,r24
 148:main.c        **** 	    if((adadd/50)>GATE)
 510               	.LM54:
 511 01c8 8091 0000 		lds r24,adadd

⌨️ 快捷键说明

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