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

📄 level2.lst

📁 此程序为利用mage8 AVR 和EM4094实现读取ISO15693类型卡的C程序、读卡稳定、这个项目我们做了好久、非常不错的程序、很适合做这方面产品的朋友们参考
💻 LST
📖 第 1 页 / 共 5 页
字号:
 632               		.stabn 68,0,230,.LM82-WriteSPI
 633               	.LM82:
 634 026c D595      		asr r29
 635 026e C795      		ror r28
 231:level2.c      ****     if(bitcnt == 16)
 636               		.stabn 68,0,231,.LM83-WriteSPI
 637               	.LM83:
 638 0270 1031      		cpi r17,lo8(16)
 639 0272 09F4      		brne .L62
 232:level2.c      ****       data = hi;
 640               		.stabn 68,0,232,.LM84-WriteSPI
 641               	.LM84:
 642 0274 E701      		movw r28,r14
 643               	.L62:
 233:level2.c      ****   
 234:level2.c      ****     sbi(PORTC, DCLK_PIN);
 644               		.stabn 68,0,234,.LM85-WriteSPI
 645               	.LM85:
 646 0276 A89A      		sbi 53-0x20,0
 235:level2.c      ****     WaitSPI();
 647               		.stabn 68,0,235,.LM86-WriteSPI
 648               	.LM86:
 649 0278 DADF      		rcall WaitSPI
 650 027a 812F      		mov r24,r17
 651 027c 1150      		subi r17,lo8(-(-1))
 652 027e 8823      		tst r24
 653 0280 69F7      		brne .L63
 236:level2.c      ****   }
 237:level2.c      **** 
 238:level2.c      ****   cbi(PORTC, DCLK_PIN);              //for the first time, DCLK is '1', for the next, enable DIN
 654               		.stabn 68,0,238,.LM87-WriteSPI
 655               	.LM87:
 656 0282 A898      		cbi 53-0x20,0
 239:level2.c      ****   WaitSPI();
 657               		.stabn 68,0,239,.LM88-WriteSPI
 658               	.LM88:
 659 0284 D4DF      		rcall WaitSPI
 240:level2.c      ****   cbi(PORTC, MOD_PIN);
 660               		.stabn 68,0,240,.LM89-WriteSPI
 661               	.LM89:
 662 0286 A998      		cbi 53-0x20,1
 241:level2.c      **** }
 663               		.stabn 68,0,241,.LM90-WriteSPI
 664               	.LM90:
 665               	.LBE6:
 666               	/* epilogue: frame size=0 */
 667 0288 DF91      		pop r29
 668 028a CF91      		pop r28
 669 028c 1F91      		pop r17
 670 028e FF90      		pop r15
 671 0290 EF90      		pop r14
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccU5baaa.s 			page 17


 672 0292 0895      		ret
 673               	/* epilogue end (size=6) */
 674               	/* function WriteSPI size 42 (31) */
 675               		.size	WriteSPI, .-WriteSPI
 676               		.stabs	"data:r(4,3)",64,0,211,28
 677               		.stabs	"bitcnt:r(4,2)",64,0,212,17
 678               		.stabn	192,0,0,.LBB6-WriteSPI
 679               		.stabn	224,0,0,.LBE6-WriteSPI
 680               	.Lscope5:
 681               		.stabs	"",36,0,0,.Lscope5-WriteSPI
 682               		.stabs	"CRC:F(4,4)",36,0,246,CRC
 683               		.stabs	"data:P(1,1)=*(4,2)",64,0,245,30
 684               		.stabs	"len:P(4,2)",64,0,245,22
 685               	.global	CRC
 686               		.type	CRC, @function
 687               	CRC:
 242:level2.c      **** 
 243:level2.c      **** // ==================================================================
 244:level2.c      **** 
 245:level2.c      **** uint16_t CRC( uint8_t * data , uint8_t len )  
 246:level2.c      **** {
 688               		.stabn 68,0,246,.LM91-CRC
 689               	.LM91:
 690               	/* prologue: frame size=0 */
 691               	/* prologue end (size=0) */
 692 0294 FC01      		movw r30,r24
 247:level2.c      ****     uint16_t crc = 0xFFFF;          //CRC preset
 693               		.stabn 68,0,247,.LM92-CRC
 694               	.LM92:
 695               	.LBB7:
 696 0296 2FEF      		ldi r18,lo8(-1)
 697 0298 3FEF      		ldi r19,hi8(-1)
 248:level2.c      ****     uint8_t i , j , feedback; 
 249:level2.c      **** #define crc_poly 0x8408         //CRC polynom
 250:level2.c      **** 
 251:level2.c      ****     for ( i = 0 ; i < len ; i++ ) 
 698               		.stabn 68,0,251,.LM93-CRC
 699               	.LM93:
 700 029a 50E0      		ldi r21,lo8(0)
 701 029c 5617      		cp r21,r22
 702 029e A8F4      		brsh .L79
 703               	.L77:
 252:level2.c      ****     {
 253:level2.c      ****         crc ^= *data++;
 704               		.stabn 68,0,253,.LM94-CRC
 705               	.LM94:
 706 02a0 8191      		ld r24,Z+
 707 02a2 9927      		clr r25
 708 02a4 2827      		eor r18,r24
 709 02a6 3927      		eor r19,r25
 254:level2.c      ****         for ( j = 0 ; j < 8 ; j++ ) 
 710               		.stabn 68,0,254,.LM95-CRC
 711               	.LM95:
 712 02a8 40E0      		ldi r20,lo8(0)
 713               	.L76:
 255:level2.c      ****         {
 256:level2.c      ****             feedback = crc & 1; 
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccU5baaa.s 			page 18


 714               		.stabn 68,0,256,.LM96-CRC
 715               	.LM96:
 716 02aa 822F      		mov r24,r18
 717 02ac 8170      		andi r24,lo8(1)
 257:level2.c      ****             crc >>= 1;
 718               		.stabn 68,0,257,.LM97-CRC
 719               	.LM97:
 720 02ae 3695      		lsr r19
 721 02b0 2795      		ror r18
 258:level2.c      ****             if ( feedback )
 722               		.stabn 68,0,258,.LM98-CRC
 723               	.LM98:
 724 02b2 8823      		tst r24
 725 02b4 21F0      		breq .L73
 259:level2.c      ****                 crc ^= crc_poly;
 726               		.stabn 68,0,259,.LM99-CRC
 727               	.LM99:
 728 02b6 88E0      		ldi r24,lo8(-31736)
 729 02b8 94E8      		ldi r25,hi8(-31736)
 730 02ba 2827      		eor r18,r24
 731 02bc 3927      		eor r19,r25
 732               		.stabn 68,0,254,.LM100-CRC
 733               	.LM100:
 734               	.L73:
 735 02be 4F5F      		subi r20,lo8(-(1))
 736 02c0 4830      		cpi r20,lo8(8)
 737 02c2 98F3      		brlo .L76
 738               		.stabn 68,0,251,.LM101-CRC
 739               	.LM101:
 740 02c4 5F5F      		subi r21,lo8(-(1))
 741 02c6 5617      		cp r21,r22
 742 02c8 58F3      		brlo .L77
 743               	.L79:
 260:level2.c      ****         }
 261:level2.c      ****     }
 262:level2.c      ****     return ~crc;
 744               		.stabn 68,0,262,.LM102-CRC
 745               	.LM102:
 746 02ca 2095      		com r18
 747 02cc 3095      		com r19
 263:level2.c      **** }
 748               		.stabn 68,0,263,.LM103-CRC
 749               	.LM103:
 750               	.LBE7:
 751 02ce C901      		movw r24,r18
 752               	/* epilogue: frame size=0 */
 753 02d0 0895      		ret
 754               	/* epilogue end (size=1) */
 755               	/* function CRC size 31 (30) */
 756               		.size	CRC, .-CRC
 757               		.stabs	"crc:r(4,4)",64,0,247,18
 758               		.stabs	"i:r(4,2)",64,0,248,21
 759               		.stabs	"j:r(4,2)",64,0,248,20
 760               		.stabs	"feedback:r(4,2)",64,0,248,24
 761               		.stabn	192,0,0,.LBB7-CRC
 762               		.stabn	224,0,0,.LBE7-CRC
 763               	.Lscope6:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccU5baaa.s 			page 19


 764               		.stabs	"",36,0,0,.Lscope6-CRC
 765               		.stabs	"SearchValidBit:F(4,2)",36,0,274,SearchValidBit
 766               		.stabs	"start:P(4,2)",64,0,273,20
 767               		.stabs	"end:P(4,2)",64,0,273,22
 768               	.global	SearchValidBit
 769               		.type	SearchValidBit, @function
 770               	SearchValidBit:
 264:level2.c      **** 
 265:level2.c      **** 
 266:level2.c      **** // ==================================================================
 267:level2.c      **** // Search 1st valid bit ('1' from SOF)
 268:level2.c      **** //   maximum size bits to be searched from start position to end position
 269:level2.c      **** //
 270:level2.c      **** //  ASK data usually starts at bit position 0 or 1 of captured_data
 271:level2.c      **** //  FSK data usually starts at 4th bit position 
 272:level2.c      **** 
 273:level2.c      **** uint8_t SearchValidBit( uint8_t start , uint8_t end ) 
 274:level2.c      **** {
 771               		.stabn 68,0,274,.LM104-SearchValidBit
 772               	.LM104:
 773               	/* prologue: frame size=0 */
 774               	/* prologue end (size=0) */
 775 02d2 482F      		mov r20,r24
 275:level2.c      ****     uint8_t bitcnt = start % 8;
 776               		.stabn 68,0,275,.LM105-SearchValidBit
 777               	.LM105:
 778 02d4 582F      		mov r21,r24
 779               	.LBB8:
 780 02d6 5770      		andi r21,lo8(7)
 276:level2.c      ****     uint8_t byte = start / 8;
 781               		.stabn 68,0,276,.LM106-SearchValidBit
 782               	.LM106:
 783 02d8 8695      		lsr r24
 784 02da 8695      		lsr r24
 785 02dc 8695      		lsr r24
 277:level2.c      ****     uint8_t valid;
 278:level2.c      ****     uint8_t *ptr = capture.capture_valid + start / 8;
 786               		.stabn 68,0,278,.LM107-SearchValidBit
 787               	.LM107:
 788 02de E82F      		mov r30,r24
 789 02e0 FF27      		clr r31
 790 02e2 DF01      		movw r26,r30
 791 02e4 A050      		subi r26,lo8(-(capture+128))
 792 02e6 B040      		sbci r27,hi8(-(capture+128))
 279:level2.c      **** 
 280:level2.c      ****     if ( ( decode_number & 1 ) == 0 ) //ASK specific
 793               		.stabn 68,0,280,.LM108-SearchValidBit
 794               	.LM108:
 795 02e8 8091 0000 		lds r24,decode_number
 796 02ec 80FD      		sbrc r24,0
 797 02ee 19C0      		rjmp .L83
 281:level2.c      ****     {              
 282:level2.c      ****         while ( start < end ) 
 798               		.stabn 68,0,282,.LM109-SearchValidBit
 799               	.LM109:
 800 02f0 4617      		cp r20,r22
 801 02f2 98F5      		brsh .L90
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccU5baaa.s 			page 20


 802               	.L89:
 283:level2.c      ****         {     
 284:level2.c      ****             valid = ( ( *ptr ) >> ( 7 - bitcnt ) ) & 1;
 803               		.stabn 68,0,284,.LM110-SearchValidBit
 804               	.LM110:
 805 02f4 8C91      		ld r24,X
 806 02f6 282F      		mov r18,r24
 807 02f8 3327      		clr r19
 808 02fa 87E0      		ldi r24,lo8(7)
 809 02fc 90E0      		ldi r25,hi8(7)
 810 02fe 851B      		sub r24,r21
 811 0300 9109      		sbc r25,__zero_reg__
 812 0302 02C0      		rjmp 2f
 813 0304 3595      	1:	asr r19
 814 0306 2795      		ror r18
 815 0308 8A95      	2:	dec r24
 816 030a E2F7      		brpl 1b
 285:level2.c      ****      
 286:level2.c      ****             if ( valid == 0 ) 
 817               		.stabn 68,0,286,.LM111-SearchValidBit
 818               	.LM111:
 819 030c 20FF      		sbrs r18,0
 820 030e 22C0      		rjmp .L97
 287:level2.c      ****             	  return start;  //return 1st valid bit position
 288:level2.c      **** 
 289:level2.c      ****             if ( ++bitcnt > 7 ) 
 821               		.stabn 68,0,289,.LM112-SearchValidBit
 822               	.LM112:
 823 0310 5F5F      		subi r21,lo8(-(1))
 824 0312 5830      		cpi r21,lo8(8)
 825 0314 10F0      		brlo .L88
 290:level2.c      ****             {
 291:level2.c      ****                 bitcnt = 0;
 826               		.stabn 68,0,291,.LM113-SearchValidBit
 827               	.LM113:
 828 0316 50E0      		ldi r21,lo8(0)
 292:level2.c      ****                 ptr++;
 829               		.stabn 68,0,292,.LM114-SearchValidBit
 830               	.LM114:
 831 0318 1196      		adiw r26,1
 832               	.L88:
 293:level2.c      ****             }
 294:level2.c      ****             start++;
 833               		.stabn 68,0,294,.LM115-SearchValidBit
 834               	.LM115:
 835 031a 4F5F      		subi r20,lo8(-(1))
 836 031c 4617      		cp r20,r22
 837 031e 50F3      		brlo .L89
 838 0320 1CC0      		rjmp .L90
 839               	.L83:
 295:level2.c      ****         }
 296:level2.c      ****     } 
 297:level2.c      ****     else 
 298:level2.c      ****     {                                    //FSK specific
 299:level2.c      ****         valid = capture.capture_data[ byte ];
 840               		.stabn 68,0,299,.LM116-SearchValidBit
 841               	.LM116:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccU5baaa.s 			page 21


 842 0322 E050      		subi r30,lo8(-(capture))
 843 0324 F040      		sbci r31,hi8(-(capture))
 844 0326 9081      		ld r25,Z
 300:level2.c      ****     
 301:level2.c      ****         byte = valid & 0xF0;
 845               		.stabn 68,0,301,.LM117-SearchValidBit
 846               	.LM117:
 847 0328 892F      		mov r24,r25
 848 032a 807F      		andi r24,lo8(-16)

⌨️ 快捷键说明

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