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

📄 main.lst

📁 此程序为利用mage8 AVR 和EM4094实现读取ISO15693类型卡的C程序、读卡稳定、这个项目我们做了好久、非常不错的程序、很适合做这方面产品的朋友们参考
💻 LST
📖 第 1 页 / 共 5 页
字号:
 746 02ca CF93      		push r28
 747               	/* prologue end (size=2) */
 748 02cc 182F      		mov r17,r24
 335:main.c        ****     uint8_t last_cnt;
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccARbaaa.s 			page 20


 336:main.c        ****     TCCR0 = 0;                                //disable Counter0
 749               		.stabn 68,0,336,.LM84-Capture
 750               	.LM84:
 751               	.LBB3:
 752 02ce 13BE      		out 83-0x20,__zero_reg__
 337:main.c        ****     TCCR1B = 0;                               //disable Counter1
 753               		.stabn 68,0,337,.LM85-Capture
 754               	.LM85:
 755 02d0 1EBC      		out 78-0x20,__zero_reg__
 338:main.c        **** 
 339:main.c        ****     pulsesPerBit2 = 2 * pulsesPerBit;
 756               		.stabn 68,0,339,.LM86-Capture
 757               	.LM86:
 758 02d2 2091 0000 		lds r18,pulsesPerBit
 759 02d6 822F      		mov r24,r18
 760 02d8 9927      		clr r25
 761 02da 880F      		add r24,r24
 762 02dc 991F      		adc r25,r25
 763 02de 8093 0000 		sts pulsesPerBit2,r24
 340:main.c        ****     pulsesPerBit3 = 3 * pulsesPerBit;
 764               		.stabn 68,0,340,.LM87-Capture
 765               	.LM87:
 766 02e2 C3E0      		ldi r28,lo8(3)
 767 02e4 2C9F      		mul r18,r28
 768 02e6 C001      		movw r24,r0
 769 02e8 1124      		clr r1
 770 02ea 8093 0000 		sts pulsesPerBit3,r24
 341:main.c        **** 
 342:main.c        ****     if ( !bufferClean ) 
 771               		.stabn 68,0,342,.LM88-Capture
 772               	.LM88:
 773 02ee 8091 0000 		lds r24,bufferClean
 774 02f2 8823      		tst r24
 775 02f4 09F4      		brne .L49
 343:main.c        ****     	  ClearCaptureBuffers( );
 776               		.stabn 68,0,343,.LM89-Capture
 777               	.LM89:
 778 02f6 00D0      		rcall ClearCaptureBuffers
 779               	.L49:
 344:main.c        ****     bufferClean = 0;
 780               		.stabn 68,0,344,.LM90-Capture
 781               	.LM90:
 782 02f8 1092 0000 		sts bufferClean,__zero_reg__
 345:main.c        ****     previous_delay = 0;
 783               		.stabn 68,0,345,.LM91-Capture
 784               	.LM91:
 785 02fc 1092 0000 		sts (previous_delay)+1,__zero_reg__
 786 0300 1092 0000 		sts previous_delay,__zero_reg__
 346:main.c        ****     captured_bit_count = 0;                   //reset some values
 787               		.stabn 68,0,346,.LM92-Capture
 788               	.LM92:
 789 0304 9924      		clr r9
 347:main.c        ****     capture_cnt = 0;
 790               		.stabn 68,0,347,.LM93-Capture
 791               	.LM93:
 792 0306 892C      		mov r8,r9
 348:main.c        ****     bit_pos = 1;
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccARbaaa.s 			page 21


 793               		.stabn 68,0,348,.LM94-Capture
 794               	.LM94:
 795 0308 81E0      		ldi r24,lo8(1)
 796 030a 8093 0000 		sts bit_pos,r24
 349:main.c        ****     sof = 0;
 797               		.stabn 68,0,349,.LM95-Capture
 798               	.LM95:
 799 030e 9092 0000 		sts sof,r9
 350:main.c        ****     last_valid = 0;
 800               		.stabn 68,0,350,.LM96-Capture
 801               	.LM96:
 802 0312 9092 0000 		sts last_valid,r9
 351:main.c        ****     last_capture = TCNT1;                     
 803               		.stabn 68,0,351,.LM97-Capture
 804               	.LM97:
 805 0316 8CB5      		in r24,76-0x20
 806 0318 9DB5      		in r25,(76)+1-0x20
 807 031a 9093 0000 		sts (last_capture)+1,r25
 808 031e 8093 0000 		sts last_capture,r24
 352:main.c        ****     old_capture = TCNT1;
 809               		.stabn 68,0,352,.LM98-Capture
 810               	.LM98:
 811 0322 8CB5      		in r24,76-0x20
 812 0324 9DB5      		in r25,(76)+1-0x20
 813 0326 9093 0000 		sts (old_capture)+1,r25
 814 032a 8093 0000 		sts old_capture,r24
 353:main.c        **** 
 354:main.c        ****     currentMaxTimeHi = ~maxCaptureTimeHi;     //set hi byte of maximum capture timer2 timeout
 815               		.stabn 68,0,354,.LM99-Capture
 816               	.LM99:
 817 032e 8091 0000 		lds r24,maxCaptureTimeHi
 818 0332 A82E      		mov r10,r24
 819 0334 A094      		com r10
 355:main.c        ****     TCNT2 = ~maxCaptureTimeLow;               //set low byte timer2 timeout
 820               		.stabn 68,0,355,.LM100-Capture
 821               	.LM100:
 822 0336 8091 0000 		lds r24,maxCaptureTimeLow
 823 033a 8095      		com r24
 824 033c 84BD      		out 68-0x20,r24
 356:main.c        ****     TCNT0 = 0;                                //clear timer0
 825               		.stabn 68,0,356,.LM101-Capture
 826               	.LM101:
 827 033e 92BE      		out 82-0x20,r9
 357:main.c        ****     TIFR = TIFR | ( 1 << ICF1 ) | ( 1 << TOV1 ) | ( 1 << OCF2 ) | ( 1 << TOV2 );      //clear pendi
 828               		.stabn 68,0,357,.LM102-Capture
 829               	.LM102:
 830 0340 88B7      		in r24,88-0x20
 831 0342 846E      		ori r24,lo8(-28)
 832 0344 88BF      		out 88-0x20,r24
 358:main.c        **** 
 359:main.c        ****     sbi( TIMSK , TOIE2 );                      //enable timer2 overflow for both
 833               		.stabn 68,0,359,.LM103-Capture
 834               	.LM103:
 835 0346 89B7      		in r24,89-0x20
 836 0348 8064      		ori r24,lo8(64)
 837 034a 89BF      		out 89-0x20,r24
 360:main.c        **** 
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccARbaaa.s 			page 22


 361:main.c        ****     if ( style != 5 ) 
 838               		.stabn 68,0,361,.LM104-Capture
 839               	.LM104:
 840 034c 1530      		cpi r17,lo8(5)
 841 034e 69F0      		breq .L50
 362:main.c        ****     {
 363:main.c        ****         if ( ( decode_number & 1 ) == 0 ) 
 842               		.stabn 68,0,363,.LM105-Capture
 843               	.LM105:
 844 0350 8091 0000 		lds r24,decode_number
 845 0354 80FD      		sbrc r24,0
 846 0356 03C0      		rjmp .L51
 364:main.c        ****         {
 365:main.c        ****             sbi( TIMSK , TICIE1 );                 //enable timer1 capture for ASK only
 847               		.stabn 68,0,365,.LM106-Capture
 848               	.LM106:
 849 0358 89B7      		in r24,89-0x20
 850 035a 8062      		ori r24,lo8(32)
 851 035c 89BF      		out 89-0x20,r24
 852               	.L51:
 366:main.c        ****         }
 367:main.c        ****         TCCR0 = ( 1 << CS02 ) | ( 1 << CS01 );            //external clock source, falling edge,T0 
 853               		.stabn 68,0,367,.LM107-Capture
 854               	.LM107:
 855 035e 86E0      		ldi r24,lo8(6)
 856 0360 83BF      		out 83-0x20,r24
 368:main.c        ****         TCCR1B = ( 1 << ICNC1 ) | ( 1 << CS10 );          //noise canceler, clk_io clock, falling e
 857               		.stabn 68,0,368,.LM108-Capture
 858               	.LM108:
 859 0362 81E8      		ldi r24,lo8(-127)
 860 0364 8EBD      		out 78-0x20,r24
 369:main.c        ****         TCCR2 = ( 1 << CS21 ) | ( 1 << CS20 );            //run! at clk/32
 861               		.stabn 68,0,369,.LM109-Capture
 862               	.LM109:
 863 0366 C5BD      		out 69-0x20,r28
 864 0368 04C0      		rjmp .L52
 865               	.L50:
 370:main.c        ****     } 
 371:main.c        ****     else 
 372:main.c        ****     {
 373:main.c        ****         TCCR1B = ( 1 << ICNC1 ) | ( 1 << ICES1 ) | ( 1 << CS11 );  //noise canceler, clk/8 clock, s
 866               		.stabn 68,0,373,.LM110-Capture
 867               	.LM110:
 868 036a 82EC      		ldi r24,lo8(-62)
 869 036c 8EBD      		out 78-0x20,r24
 374:main.c        ****         TCCR2 = ( 1 << CS22 );                      //run! at clk/64 
 870               		.stabn 68,0,374,.LM111-Capture
 871               	.LM111:
 872 036e 84E0      		ldi r24,lo8(4)
 873 0370 85BD      		out 69-0x20,r24
 874               	.L52:
 375:main.c        ****     }
 376:main.c        ****     if ( style == 5 ) 
 875               		.stabn 68,0,376,.LM112-Capture
 876               	.LM112:
 877 0372 1530      		cpi r17,lo8(5)
 878 0374 39F0      		breq .L54
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccARbaaa.s 			page 23


 377:main.c        ****     {
 378:main.c        **** //        EM4006_polling( );
 379:main.c        ****     } 
 380:main.c        ****     else if( ( decode_number & 1 ) == 0 ) 
 879               		.stabn 68,0,380,.LM113-Capture
 880               	.LM113:
 881 0376 8091 0000 		lds r24,decode_number
 882 037a 80FD      		sbrc r24,0
 883 037c 03C0      		rjmp .L54
 381:main.c        ****     {
 382:main.c        ****         while ( TIMSK & ( 1 << TOIE2 ) )            //wait until done for ASK
 884               		.stabn 68,0,382,.LM114-Capture
 885               	.LM114:
 886               	.L56:
 887 037e 09B6      		in __tmp_reg__,89-0x20
 888 0380 06FC      		sbrc __tmp_reg__,6
 889 0382 FDCF      		rjmp .L56
 890               	.L54:
 383:main.c        ****         {}
 384:main.c        ****     } 
 385:main.c        ****     else 
 386:main.c        ****     {
 387:main.c        **** //        dual_subcarrier_polling();              //do polling until done for FSK
 388:main.c        ****     }
 389:main.c        **** 
 390:main.c        ****     TCCR0 = 0;                                //stop all
 891               		.stabn 68,0,390,.LM115-Capture
 892               	.LM115:
 893 0384 13BE      		out 83-0x20,__zero_reg__
 391:main.c        ****     TCCR1B = 0;
 894               		.stabn 68,0,391,.LM116-Capture
 895               	.LM116:
 896 0386 1EBC      		out 78-0x20,__zero_reg__
 392:main.c        ****     TCCR2 = 0;
 897               		.stabn 68,0,392,.LM117-Capture
 898               	.LM117:
 899 0388 15BC      		out 69-0x20,__zero_reg__
 393:main.c        ****     TIMSK = TIMSK & ( 0xFF ^ ( ( 1 << TICIE1 ) | ( 1 << TOIE2 ) ) ); //disable timer1 capture, time
 900               		.stabn 68,0,393,.LM118-Capture
 901               	.LM118:
 902 038a 89B7      		in r24,89-0x20
 903 038c 8F79      		andi r24,lo8(-97)
 904 038e 89BF      		out 89-0x20,r24
 394:main.c        ****     TIFR = TIFR | ( 1 << ICF1 ) | ( 1 << TOV1 ) | ( 1 << OCF2 ) | ( 1 << TOV2 );      //clear pendi
 905               		.stabn 68,0,394,.LM119-Capture
 906               	.LM119:
 907 0390 88B7      		in r24,88-0x20
 908 0392 846E      		ori r24,lo8(-28)
 909 0394 88BF      		out 88-0x20,r24
 395:main.c        **** 
 396:main.c        ****     last_cnt = TCNT0;  
 910               		.stabn 68,0,396,.LM120-Capture
 911               	.LM120:
 912 0396 C2B7      		in r28,82-0x20
 397:main.c        ****     if ( debug_mode != 1 ) 
 913               		.stabn 68,0,397,.LM121-Capture
 914               	.LM121:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccARbaaa.s 			page 24


 915 0398 8091 0000 		lds r24,debug_mode
 916 039c 8130      		cpi r24,lo8(1)
 917 039e 39F0      		breq .L65
 398:main.c        ****     {
 399:main.c        ****         while ( captured_bit_count != 0 )           //flush captured bits
 918               		.stabn 68,0,399,.LM122-Capture
 919               	.LM122:
 920 03a0 9920      		tst r9
 921 03a2 29F0      		breq .L65
 922               	.L64:
 400:main.c        ****             store_bit( 0 , 1 );
 923               		.stabn 68,0,400,.LM123-Capture
 924               	.LM123:
 925 03a4 61E0      		ldi r22,lo8(1)
 926 03a6 80E0      		ldi r24,lo8(0)
 927 03a8 9ADE      		rcall store_bit
 928 03aa 9920      		tst r9
 929 03ac D9F7      		brne .L64
 930               	.L65:
 401:main.c        ****     } 
 402:main.c        ****     else 
 403:main.c        ****     {    
 404:main.c        ****     }
 405:main.c        **** 
 406:main.c        ****     if ( ( style != 5 ) && ( decode_number & 1 ) == 0 ) //ASK EOF resolution
 931               		.stabn 68,0,406,.LM124-Capture
 932               	.LM124:
 933 03ae 1530      		cpi r17,lo8(5)
 934 03b0 E9F0      		breq .L48
 935 03b2 8091 0000 		lds r24,decode_number
 936 03b6 80FD      		sbrc r24,0
 937 03b8 19C0      		rjmp .L48
 407:main.c

⌨️ 快捷键说明

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