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

📄 main.lst

📁 此程序为利用mage8 AVR 和EM4094实现读取TYPE B类型卡的C程序、读卡稳定、这个项目我们做了好久、非常不错的程序、很适合做这方面产品的朋友们参考
💻 LST
📖 第 1 页 / 共 5 页
字号:
 369 00be 90E0      		ldi r25,hi8(TYPE_B_SETTING)
 370 00c0 00D0      		rcall eeprom_read_byte
 371 00c2 10C0      		rjmp .L20
 372               		.stabn 68,0,159,.LM27-AVR_Init
 373               	.LM27:
 374               	.L25:
 375 00c4 80E0      		ldi r24,lo8(ALARM_ENABLE)
 376 00c6 90E0      		ldi r25,hi8(ALARM_ENABLE)
 377 00c8 00D0      		rcall eeprom_read_byte
 378 00ca EBCF      		rjmp .L19
 379               		.stabn 68,0,154,.LM28-AVR_Init
 380               	.LM28:
 381               	.L24:
 382 00cc 80E0      		ldi r24,lo8(ALARM_TIME)
 383 00ce 90E0      		ldi r25,hi8(ALARM_TIME)
 384 00d0 00D0      		rcall eeprom_read_byte
 385 00d2 DBCF      		rjmp .L18
 386               		.stabn 68,0,149,.LM29-AVR_Init
 387               	.LM29:
 388               	.L23:
 389 00d4 80E0      		ldi r24,lo8(ALARM_LEVEL)
 390 00d6 90E0      		ldi r25,hi8(ALARM_LEVEL)
 391 00d8 00D0      		rcall eeprom_read_byte
 392 00da CBCF      		rjmp .L17
 393               		.stabn 68,0,143,.LM30-AVR_Init
 394               	.LM30:
 395               	.L22:
 396 00dc 80E0      		ldi r24,lo8(WEIGAN_FORMAT)
 397 00de 90E0      		ldi r25,hi8(WEIGAN_FORMAT)
 398 00e0 00D0      		rcall eeprom_read_byte
 399 00e2 BBCF      		rjmp .L16
 400               	.L20:
 401 00e4 8093 0000 		sts type_b_setting,r24
 167:main.c        **** 	  	    	  	  	  	  	   
 168:main.c        ****     // --------------------------------------------------------------- 
 169:main.c        ****     // General Interrupt Enable                                        
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cciWbaaa.s 			page 11


 170:main.c        ****     // --------------------------------------------------------------- 
 171:main.c        **** 
 172:main.c        ****     MCUCR = ( ( 1 << ISC11 ) | ( 1 << ISC10 ) );          //INT1 triggered on rising edge
 402               		.stabn 68,0,172,.LM31-AVR_Init
 403               	.LM31:
 404 00e8 8CE0      		ldi r24,lo8(12)
 405 00ea 85BF      		out 85-0x20,r24
 173:main.c        ****     GICR = 0;                                   //INT0 & INT1 disabled
 406               		.stabn 68,0,173,.LM32-AVR_Init
 407               	.LM32:
 408 00ec 1BBE      		out 91-0x20,__zero_reg__
 174:main.c        ****     
 175:main.c        ****     
 176:main.c        ****     Beep( 2 );
 409               		.stabn 68,0,176,.LM33-AVR_Init
 410               	.LM33:
 411 00ee 82E0      		ldi r24,lo8(2)
 412 00f0 75D2      		rcall Beep
 177:main.c        ****     
 178:main.c        ****     Set_GREEN_LED( );
 413               		.stabn 68,0,178,.LM34-AVR_Init
 414               	.LM34:
 415 00f2 9698      		cbi 50-0x20,6
 179:main.c        ****     Delayms( 300 );
 416               		.stabn 68,0,179,.LM35-AVR_Init
 417               	.LM35:
 418 00f4 8CE2      		ldi r24,lo8(300)
 419 00f6 91E0      		ldi r25,hi8(300)
 420 00f8 3ED2      		rcall Delayms
 180:main.c        ****     Set_RED_LED( ); 
 421               		.stabn 68,0,180,.LM36-AVR_Init
 422               	.LM36:
 423 00fa 969A      		sbi 50-0x20,6
 181:main.c        ****     
 182:main.c        ****     sei( );                                      // General Interrupt Enable                    
 424               		.stabn 68,0,182,.LM37-AVR_Init
 425               	.LM37:
 426               	/* #APP */
 427 00fc 7894      		sei
 183:main.c        **** }
 428               		.stabn 68,0,183,.LM38-AVR_Init
 429               	.LM38:
 430               	/* #NOAPP */
 431               	/* epilogue: frame size=0 */
 432 00fe 1F91      		pop r17
 433 0100 0895      		ret
 434               	/* epilogue end (size=2) */
 435               	/* function AVR_Init size 136 (133) */
 436               		.size	AVR_Init, .-AVR_Init
 437               	.Lscope0:
 438               		.stabs	"",36,0,0,.Lscope0-AVR_Init
 439               		.stabs	"UARTIni:F(0,20)",36,0,192,UARTIni
 440               	.global	UARTIni
 441               		.type	UARTIni, @function
 442               	UARTIni:
 184:main.c        **** 
 185:main.c        **** // ********************************************************************************************
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cciWbaaa.s 			page 12


 186:main.c        **** // Description : UART initialize routinue.
 187:main.c        **** // Return value: None.   
 188:main.c        **** // parameter   : None.  
 189:main.c        **** // ********************************************************************************************
 190:main.c        **** 
 191:main.c        **** void UARTIni( void ) 
 192:main.c        **** {
 443               		.stabn 68,0,192,.LM39-UARTIni
 444               	.LM39:
 445               	/* prologue: frame size=0 */
 446               	/* prologue end (size=0) */
 193:main.c        ****     // UCSRA is not necessary to set up, using initial valuses         
 194:main.c        ****     // no double transmission speed, no multi-processor mode           
 195:main.c        ****     //UCSRA: RXC , TXC , UDRE , FE , DOR , PE , U2X , MPCM ;
 196:main.c        ****     //UCSRB: RXCIE, TXCIE, UDRIE, RXEN, TXEN, UCSZ2, RXB8,TXB8 ;
 197:main.c        **** //    UCSRB  = ( 1 << RXCIE ) | ( 0 << UDRIE ) | ( 1 << RXEN ) | ( 1 << TXEN ); 
 198:main.c        ****     UCSRB  = ( 1 << RXCIE ) | ( 0 << TXCIE ) | ( 1 << RXEN ) | ( 1 << TXEN );  
 447               		.stabn 68,0,198,.LM40-UARTIni
 448               	.LM40:
 449 0102 88E9      		ldi r24,lo8(-104)
 450 0104 8AB9      		out 42-0x20,r24
 199:main.c        ****                        // set up : RXCIE, UDRIE, RXEN, TXEN           
 200:main.c        ****                        // (interrupt enable from receiver,            
 201:main.c        ****                        // UART receiver enable, UART transmit enable) 
 202:main.c        ****     // UCSRC: URSEL, UMSEL, UPM1, UPM0, USBS, UCSZ1, UCSZ0, UCPOL ;
 203:main.c        ****     UCSRC = ( 1 << URSEL ) | ( 1 << UCSZ1 ) | ( 1 << UCSZ0 ); 
 451               		.stabn 68,0,203,.LM41-UARTIni
 452               	.LM41:
 453 0106 86E8      		ldi r24,lo8(-122)
 454 0108 80BD      		out 64-0x20,r24
 204:main.c        ****                        // asynchronous operation, 8 data bits,        
 205:main.c        ****                        // no parity, 1 stop bit                       
 206:main.c        **** //    UCSRC = ( 1 << URSEL ) | ( 1 << UPM1 ) | ( 1 << UPM0 ) | ( 1 << UCSZ1 ) | ( 1 << UCSZ0 );
 207:main.c        ****                        // asynchronous operation, 8 data bits, odd parity, 1 stop bit;
 208:main.c        ****     UBRRL = 103;        // baud rate - see UBRR register setting table 
 455               		.stabn 68,0,208,.LM42-UARTIni
 456               	.LM42:
 457 010a 87E6      		ldi r24,lo8(103)
 458 010c 89B9      		out 41-0x20,r24
 209:main.c        ****                        //             in AVR ATmega8 specification    
 210:main.c        ****                        // UBRRH - using initial values                
 211:main.c        ****                        // UBRRL - 25 for 38k4Bd and frequency f=16 MHz 
 212:main.c        ****                        // (using SINGLE transmission speed)   
 213:main.c        **** //    UBRRL = 51;        // baud rate - 19200;                          
 214:main.c        **** 
 215:main.c        ****     rx_number = 0;
 459               		.stabn 68,0,215,.LM43-UARTIni
 460               	.LM43:
 461 010e 1092 0000 		sts rx_number,__zero_reg__
 216:main.c        ****     tx_number = 0;
 462               		.stabn 68,0,216,.LM44-UARTIni
 463               	.LM44:
 464 0112 1092 0000 		sts tx_number,__zero_reg__
 217:main.c        ****     valid_data_flag = 0;         //This sign indicate if there is a valid command received;
 465               		.stabn 68,0,217,.LM45-UARTIni
 466               	.LM45:
 467 0116 1092 0000 		sts valid_data_flag,__zero_reg__
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cciWbaaa.s 			page 13


 218:main.c        **** //    uart_valid_data_num = 0;
 219:main.c        **** }
 468               		.stabn 68,0,219,.LM46-UARTIni
 469               	.LM46:
 470               	/* epilogue: frame size=0 */
 471 011a 0895      		ret
 472               	/* epilogue end (size=1) */
 473               	/* function UARTIni size 13 (12) */
 474               		.size	UARTIni, .-UARTIni
 475               	.Lscope1:
 476               		.stabs	"",36,0,0,.Lscope1-UARTIni
 477               		.stabs	"main:F(0,1)",36,0,228,main
 478               	.global	main
 479               		.type	main, @function
 480               	main:
 220:main.c        **** 
 221:main.c        **** 
 222:main.c        **** 
 223:main.c        **** 
 224:main.c        **** // ==================================================================
 225:main.c        **** // ==================================================================
 226:main.c        **** // ==================================================================
 227:main.c        **** int main(void)
 228:main.c        **** {
 481               		.stabn 68,0,228,.LM47-main
 482               	.LM47:
 483               	/* prologue: frame size=0 */
 484 011c C0E0      		ldi r28,lo8(__stack - 0)
 485 011e D0E0      		ldi r29,hi8(__stack - 0)
 486 0120 DEBF      		out __SP_H__,r29
 487 0122 CDBF      		out __SP_L__,r28
 488               	/* prologue end (size=4) */
 229:main.c        ****     watchdog_reset = bit_is_set( MCUCSR , WDRF );     //capture watchdog resets
 489               		.stabn 68,0,229,.LM48-main
 490               	.LM48:
 491 0124 84B7      		in r24,84-0x20
 492 0126 8870      		andi r24,lo8(8)
 493 0128 8093 0000 		sts watchdog_reset,r24
 230:main.c        **** 
 231:main.c        ****     AVR_Init( );			                               // initialization
 494               		.stabn 68,0,231,.LM49-main
 495               	.LM49:
 496 012c 69DF      		rcall AVR_Init
 232:main.c        **** 
 233:main.c        ****     Main_Receiver( );
 497               		.stabn 68,0,233,.LM50-main
 498               	.LM50:
 499 012e 03D0      		rcall Main_Receiver
 234:main.c        **** 
 235:main.c        ****     return( 0 );
 236:main.c        **** }
 500               		.stabn 68,0,236,.LM51-main
 501               	.LM51:
 502 0130 80E0      		ldi r24,lo8(0)
 503 0132 90E0      		ldi r25,hi8(0)
 504               	/* epilogue: frame size=0 */
 505 0134 00C0      		rjmp exit
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cciWbaaa.s 			page 14


 506               	/* epilogue end (size=1) */
 507               	/* function main size 13 (8) */
 508               		.size	main, .-main
 509               	.Lscope2:
 510               		.stabs	"",36,0,0,.Lscope2-main
 511               		.stabs	"Main_Receiver:F(0,20)",36,0,242,Main_Receiver
 512               	.global	Main_Receiver
 513               		.type	Main_Receiver, @function
 514               	Main_Receiver:
 237:main.c        **** //--------------------------------------------------------------
 238:main.c        **** // main loop routine
 239:main.c        **** //--------------------------------------------------------------
 240:main.c        **** 
 241:main.c        **** void Main_Receiver( void ) 
 242:main.c        **** {
 515               		.stabn 68,0,242,.LM52-Main_Receiver
 516               	.LM52:
 517               	/* prologue: frame size=0 */
 518 0136 1F93      		push r17
 519 0138 CF93      		push r28
 520               	/* prologue end (size=2) */
 243:main.c        **** 	
 244:main.c        **** //    uint8_t i;
 245:main.c        **** 
 246:main.c        ****     bufferClean = 1;                     //on startup, make buffer not clean
 521               		.stabn 68,0,246,.LM53-Main_Receiver
 522               	.LM53:
 523               	.LBB2:
 524 013a 81E0      		ldi r24,lo8(1)
 525 013c 8093 0000 		sts bufferClean,r24
 247:main.c        **** 
 248:main.c        ****     forward_link_type = 0x01;            //default value, 1=type B, 2=type A
 526               		.stabn 68,0,248,.LM54-Main_Receiver
 527               	.LM54:
 528 0140 8093 0000 		sts forward_link_type,r24
 249:main.c        ****     fwd_B_timing = -111;
 529               		.stabn 68,0,249,.LM55-Main_Receiver
 530               	.LM55:
 531 0144 81E9      		ldi r24,lo8(-111)
 532 0146 9FEF      		ldi r25,hi8(-111)
 533 0148 9093 0000 		sts (fwd_B_timing)+1,r25
 534 014c 8093 0000 		sts fwd_B_timing,r24
 250:main.c        **** 
 251:main.c        ****     counter1set = ( 1 << ICNC1 ) | ( 1 << CS10 );
 535               		.stabn 68,0,251,.LM56-Main_Receiver
 536               	.LM56:
 537 0150 81E8      		ldi r24,lo8(-127)
 538 0152 8093 0000 		sts counter1set,r24
 252:main.c        **** 
 253:main.c        ****     WriteSPI( write_4094_low , write_4094_hi );
 539               		.stabn 68,0,253,.LM57-Main_Receiver
 540               	.LM57:
 541 0156 6091 0000 		lds r22,write_4094_hi
 542 015a 7091 0000 		lds r23,(write_4094_hi)+1
 543 015e 8091 0000 		lds r24,write_4094_low
 544 0162 9091 0000 		lds r25,(write_4094_low)+1
 545 0166 00D0      		rcall WriteSPI
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cciWbaaa.s 			page 15


 254:main.c        ****     Wait( 4000 );
 546               		.stabn 68,0,254,.LM58-Main_Receiver
 547               	.LM58:

⌨️ 快捷键说明

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