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

📄 level3.lst

📁 此程序为利用mage8 AVR 和EM4094实现读取TYPE A类型卡的C程序、读卡稳定、这个项目我们做了好久、非常不错的程序、很适合做这方面产品的朋友们参考
💻 LST
📖 第 1 页 / 共 5 页
字号:
 771               		.stabs	"i:r(4,2)",64,0,334,28
 772               		.stabn	192,0,0,.LBB8-ScaleTime
 773               		.stabn	224,0,0,.LBE8-ScaleTime
 774               	.Lscope6:
 775               		.stabs	"",36,0,0,.Lscope6-ScaleTime
 776               		.stabs	"__vector_4:F(0,20)",36,0,350,__vector_4
 777               	.global	__vector_4
 778               		.type	__vector_4, @function
 779               	__vector_4:
 343:level3.c      **** 
 344:level3.c      **** // ==================================================================
 345:level3.c      **** // ==================================================================
 346:level3.c      **** // INTERRUPT ROUTINES
 347:level3.c      **** // ==================================================================
 348:level3.c      **** 
 349:level3.c      **** SIGNAL ( SIG_OVERFLOW2 )
 350:level3.c      **** {
 780               		.stabn 68,0,350,.LM117-__vector_4
 781               	.LM117:
 782               	/* prologue: frame size=0 */
 783 02dc 1F92      		push __zero_reg__
 784 02de 0F92      		push __tmp_reg__
 785 02e0 0FB6      		in __tmp_reg__,__SREG__
 786 02e2 0F92      		push __tmp_reg__
 787 02e4 1124      		clr __zero_reg__
 788               	/* prologue end (size=5) */
 351:level3.c      **** /*
 352:level3.c      ****     wdt_reset( );
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmgaaaa.s 			page 21


 353:level3.c      **** #ifdef WDT
 354:level3.c      ****         WatchDog_Feed( );
 355:level3.c      **** #endif
 356:level3.c      **** */
 357:level3.c      ****     TIMSK = 0;                                    //finished, disable all
 789               		.stabn 68,0,357,.LM118-__vector_4
 790               	.LM118:
 791 02e6 19BE      		out 89-0x20,__zero_reg__
 358:level3.c      **** }
 792               		.stabn 68,0,358,.LM119-__vector_4
 793               	.LM119:
 794               	/* epilogue: frame size=0 */
 795 02e8 0F90      		pop __tmp_reg__
 796 02ea 0FBE      		out __SREG__,__tmp_reg__
 797 02ec 0F90      		pop __tmp_reg__
 798 02ee 1F90      		pop __zero_reg__
 799 02f0 1895      		reti
 800               	/* epilogue end (size=5) */
 801               	/* function __vector_4 size 11 (1) */
 802               		.size	__vector_4, .-__vector_4
 803               	.Lscope7:
 804               		.stabs	"",36,0,0,.Lscope7-__vector_4
 805               		.stabs	"store_bit:F(0,20)",36,0,367,store_bit
 806               		.stabs	"b:P(4,2)",64,0,366,24
 807               		.stabs	"v:P(4,2)",64,0,366,25
 808               	.global	store_bit
 809               		.type	store_bit, @function
 810               	store_bit:
 359:level3.c      **** // ==================================================================
 360:level3.c      **** // R E C E I V E R   C O D E
 361:level3.c      **** // ==================================================================
 362:level3.c      **** 
 363:level3.c      **** // ---------------------------------------------------------------
 364:level3.c      **** // store bit into capture buffer bytes
 365:level3.c      **** 
 366:level3.c      **** void store_bit( uint8_t b , uint8_t v ) 
 367:level3.c      **** {
 811               		.stabn 68,0,367,.LM120-store_bit
 812               	.LM120:
 813               	/* prologue: frame size=0 */
 814               	/* prologue end (size=0) */
 368:level3.c      ****     captured_byte  = ( captured_byte  * 2 ) + b;
 815               		.stabn 68,0,368,.LM121-store_bit
 816               	.LM121:
 817 02f2 262D      		mov r18,r6
 818 02f4 220F      		lsl r18
 819 02f6 280F      		add r18,r24
 820 02f8 622E      		mov r6,r18
 369:level3.c      ****     captured_valid = ( captured_valid * 2 ) + v;
 821               		.stabn 68,0,369,.LM122-store_bit
 822               	.LM122:
 823 02fa 872D      		mov r24,r7
 824 02fc 880F      		lsl r24
 825 02fe 860F      		add r24,r22
 826 0300 782E      		mov r7,r24
 370:level3.c      **** 
 371:level3.c      ****     if ( captured_bit_count == 7 ) 
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmgaaaa.s 			page 22


 827               		.stabn 68,0,371,.LM123-store_bit
 828               	.LM123:
 829 0302 97E0      		ldi r25,lo8(7)
 830 0304 9916      		cp r9,r25
 831 0306 11F0      		breq .L73
 372:level3.c      ****     {
 373:level3.c      ****         captured_bit_count = 0;
 374:level3.c      **** 
 375:level3.c      ****         if ( capture_cnt < CAPTURE_SIZE ) 
 376:level3.c      ****         {
 377:level3.c      ****             capture.decoded_data.capture_data[ capture_cnt ]    = captured_byte;
 378:level3.c      ****             capture.decoded_data.capture_valid[ capture_cnt++ ] = captured_valid;
 379:level3.c      ****         } 
 380:level3.c      ****         else 
 381:level3.c      ****         {
 382:level3.c      ****             TIMSK = 0;                                    //finished, disable all
 383:level3.c      ****         }
 384:level3.c      **** 
 385:level3.c      ****     } 
 386:level3.c      ****     else 
 387:level3.c      ****     {
 388:level3.c      ****         captured_bit_count++;
 832               		.stabn 68,0,388,.LM124-store_bit
 833               	.LM124:
 834 0308 9394      		inc r9
 389:level3.c      ****     }
 390:level3.c      **** }
 835               		.stabn 68,0,390,.LM125-store_bit
 836               	.LM125:
 837 030a 0895      		ret
 838               		.stabn 68,0,373,.LM126-store_bit
 839               	.LM126:
 840               	.L73:
 841 030c 9924      		clr r9
 842               		.stabn 68,0,375,.LM127-store_bit
 843               	.LM127:
 844 030e 87FC      		sbrc r8,7
 845 0310 0AC0      		rjmp .L70
 846               		.stabn 68,0,377,.LM128-store_bit
 847               	.LM128:
 848 0312 E82D      		mov r30,r8
 849 0314 FF27      		clr r31
 850 0316 E050      		subi r30,lo8(-(capture))
 851 0318 F040      		sbci r31,hi8(-(capture))
 852 031a 2083      		st Z,r18
 853               		.stabn 68,0,378,.LM129-store_bit
 854               	.LM129:
 855 031c E058      		subi r30,lo8(-(128))
 856 031e FF4F      		sbci r31,hi8(-(128))
 857 0320 8083      		st Z,r24
 858 0322 8394      		inc r8
 859               		.stabn 68,0,390,.LM130-store_bit
 860               	.LM130:
 861 0324 0895      		ret
 862               	.L70:
 863               		.stabn 68,0,382,.LM131-store_bit
 864               	.LM131:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmgaaaa.s 			page 23


 865 0326 19BE      		out 89-0x20,__zero_reg__
 866               		.stabn 68,0,390,.LM132-store_bit
 867               	.LM132:
 868 0328 0895      		ret
 869               	/* epilogue: frame size=0 */
 870 032a 0895      		ret
 871               	/* epilogue end (size=1) */
 872               	/* function store_bit size 29 (28) */
 873               		.size	store_bit, .-store_bit
 874               	.Lscope8:
 875               		.stabs	"",36,0,0,.Lscope8-store_bit
 876               		.stabs	"store_pulse:F(0,20)",36,0,398,store_pulse
 877               		.stabs	"b:P(4,2)",64,0,397,25
 878               	.global	store_pulse
 879               		.type	store_pulse, @function
 880               	store_pulse:
 391:level3.c      **** 
 392:level3.c      **** // ---------------------------------------------------------------
 393:level3.c      **** // debug routine stores the captured pulse lengths
 394:level3.c      **** // - note: too much data variables is probably detected by $(OBJTOOL)
 395:level3.c      **** // -       warning only
 396:level3.c      **** 
 397:level3.c      **** void store_pulse( uint8_t b )
 398:level3.c      **** {
 881               		.stabn 68,0,398,.LM133-store_pulse
 882               	.LM133:
 883               	/* prologue: frame size=0 */
 884               	/* prologue end (size=0) */
 885 032c 982F      		mov r25,r24
 399:level3.c      ****     if ( raw_cnt == SHORT_RAW_SIZE )                        //reserve for message header
 886               		.stabn 68,0,399,.LM134-store_pulse
 887               	.LM134:
 888 032e 80E8      		ldi r24,lo8(-128)
 889 0330 B816      		cp r11,r24
 890 0332 39F0      		breq .L77
 400:level3.c      ****         TIMSK = 0;                                          //disable all
 401:level3.c      ****     else
 402:level3.c      ****         capture.raw_data[ raw_cnt++ ] = b;
 891               		.stabn 68,0,402,.LM135-store_pulse
 892               	.LM135:
 893 0334 EB2D      		mov r30,r11
 894 0336 FF27      		clr r31
 895 0338 E050      		subi r30,lo8(-(capture+256))
 896 033a F040      		sbci r31,hi8(-(capture+256))
 897 033c 9083      		st Z,r25
 898 033e B394      		inc r11
 403:level3.c      **** }
 899               		.stabn 68,0,403,.LM136-store_pulse
 900               	.LM136:
 901 0340 0895      		ret
 902               		.stabn 68,0,400,.LM137-store_pulse
 903               	.LM137:
 904               	.L77:
 905 0342 19BE      		out 89-0x20,__zero_reg__
 906               		.stabn 68,0,403,.LM138-store_pulse
 907               	.LM138:
 908 0344 0895      		ret
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmgaaaa.s 			page 24


 909               	/* epilogue: frame size=0 */
 910 0346 0895      		ret
 911               	/* epilogue end (size=1) */
 912               	/* function store_pulse size 14 (13) */
 913               		.size	store_pulse, .-store_pulse
 914               	.Lscope9:
 915               		.stabs	"",36,0,0,.Lscope9-store_pulse
 916               		.stabs	"type_A_polling:F(0,20)",36,0,410,type_A_polling
 917               	.global	type_A_polling
 918               		.type	type_A_polling, @function
 919               	type_A_polling:
 404:level3.c      **** 
 405:level3.c      **** 
 406:level3.c      **** 
 407:level3.c      **** // ==================================================================
 408:level3.c      **** 
 409:level3.c      **** void type_A_polling( void ) 
 410:level3.c      **** {
 920               		.stabn 68,0,410,.LM139-type_A_polling
 921               	.LM139:
 922               	/* prologue: frame size=0 */
 923 0348 CF92      		push r12
 924 034a DF92      		push r13
 925 034c EF92      		push r14
 926 034e FF92      		push r15
 927 0350 0F93      		push r16
 928 0352 1F93      		push r17
 929 0354 CF93      		push r28
 930 0356 DF93      		push r29
 931               	/* prologue end (size=8) */
 411:level3.c      ****     //do not use local register variables
 412:level3.c      **** 
 413:level3.c      ****     uint8_t z = 0;
 414:level3.c      ****     uint16_t capt , last_capture;
 415:level3.c      ****     uint16_t icr;
 416:level3.c      ****     uint8_t x , j;  
 417:level3.c      ****     uint8_t *sptr = &capture.raw_data[ RAW_DATA_A_OFFSET ];
 932               		.stabn 68,0,417,.LM140-type_A_polling
 933               	.LM140:
 934               	.LBB9:
 935 0358 00E0      		ldi r16,lo8(capture+288)
 936 035a 10E0      		ldi r17,hi8(capture+288)
 418:level3.c      ****     uint16_t prev_capture , pulses = 0;
 937               		.stabn 68,0,418,.LM141-type_A_polling
 938               	.LM141:
 939 035c 40E0      		ldi r20,lo8(0)
 940 035e 50E0      		ldi r21,hi8(0)
 419:level3.c      ****     j = 0;
 941               		.stabn 68,0,419,.LM142-type_A_polling
 942               	.LM142:
 943 0360 CC24      		clr r12
 420:level3.c      ****     raw_cnt = RAW_DATA_A_OFFSET;
 944               		.stabn 68,0,420,.LM143-type_A_polling
 945               	.LM143:
 946 0362 70E2      		ldi r23,lo8(32)
 947 0364 B72E      		mov r11,r23
 421:level3.c      ****     last_capture = TCNT1;
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmgaaaa.s 			page 25


 948               		.stabn 68,0,421,.LM144-type_A_polling
 949               	.LM144:
 950 0366 CCB5      		in r28,76-0x20
 951 0368 DDB5      		in r29,(76)+1-0x20
 422:level3.c      ****     ICR1 = last_capture;
 952               		.stabn 68,0,422,.LM145-type_A_polling
 953               	.LM145:
 954 036a D7BD      		out (70)+1-0x20,r29
 955 036c C6BD      		out 70-0x20,r28
 423:level3.c      ****     prev_capture = last_capture;
 956               		.stabn 68,0,423,.LM146-type_A_polling
 957               	.LM146:
 958 036e 7E01      		movw r14,r28
 424:level3.c      **** 
 425:level3.c      ****     //WARNING! This code is very sensitive to latency
 426:level3.c      ****     while ( bit_is_set( TIMSK , TOIE2 ) )     //wait until done
 959               		.stabn 68,0,426,.LM147-type_A_polling
 960     

⌨️ 快捷键说明

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