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

📄 level2.lst

📁 此程序为利用mage8 AVR 和EM4094实现读取TYPE B类型卡的C程序、读卡稳定、这个项目我们做了好久、非常不错的程序、很适合做这方面产品的朋友们参考
💻 LST
📖 第 1 页 / 共 4 页
字号:
 216               		.stabn 68,0,97,.LM26-SendForward
 217               	.LM26:
 218 00a6 89B7      		in r24,89-0x20
 219 00a8 8460      		ori r24,lo8(4)
 220 00aa 89BF      		out 89-0x20,r24
  98:level2.c      ****     TCCR1B = 1;                              //internal clock T1, RUN!
 221               		.stabn 68,0,98,.LM27-SendForward
 222               	.LM27:
 223 00ac 81E0      		ldi r24,lo8(1)
 224 00ae 8EBD      		out 78-0x20,r24
  99:level2.c      **** 
 100:level2.c      ****     // waiting for clearing TOIE1 => command sending
 101:level2.c      ****     while ( bit_is_set( TIMSK , TOIE1 ) != 0 )
 225               		.stabn 68,0,101,.LM28-SendForward
 226               	.LM28:
 227               	.L14:
 228 00b0 89B7      		in r24,89-0x20
 229 00b2 9927      		clr r25
 230 00b4 9C01      		movw r18,r24
 231 00b6 2470      		andi r18,lo8(4)
 232 00b8 3070      		andi r19,hi8(4)
 233 00ba 82FD      		sbrc r24,2
 234 00bc F9CF      		rjmp .L14
 102:level2.c      ****     { }
 103:level2.c      **** 
 104:level2.c      **** //  if (forward_link_type == 0x01) {
 105:level2.c      ****     for ( i = 0 ; i < 200 ; i++ ) 
 235               		.stabn 68,0,105,.LM29-SendForward
 236               	.LM29:
 237 00be C901      		movw r24,r18
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s 			page 7


 238               	.L21:
 106:level2.c      ****     {
 107:level2.c      ****         sbi( PORTC , MOD_PIN );                 //mod EOF pulse
 239               		.stabn 68,0,107,.LM30-SendForward
 240               	.LM30:
 241 00c0 A99A      		sbi 53-0x20,1
 242               		.stabn 68,0,105,.LM31-SendForward
 243               	.LM31:
 244 00c2 0196      		adiw r24,1
 245 00c4 883C      		cpi r24,200
 246 00c6 9105      		cpc r25,__zero_reg__
 247 00c8 D8F3      		brlo .L21
 108:level2.c      ****     }
 109:level2.c      **** //  }
 110:level2.c      ****     cbi( PORTC , MOD_PIN );                   //notmod pulse
 248               		.stabn 68,0,110,.LM32-SendForward
 249               	.LM32:
 250 00ca A998      		cbi 53-0x20,1
 111:level2.c      **** }
 251               		.stabn 68,0,111,.LM33-SendForward
 252               	.LM33:
 253               	.LBE2:
 254               	/* epilogue: frame size=0 */
 255 00cc 0895      		ret
 256               	/* epilogue end (size=1) */
 257               	/* function SendForward size 44 (43) */
 258               		.size	SendForward, .-SendForward
 259               		.stabs	"i:r(4,4)",64,0,87,24
 260               		.stabn	192,0,0,.LBB2-SendForward
 261               		.stabn	224,0,0,.LBE2-SendForward
 262               	.Lscope1:
 263               		.stabs	"",36,0,0,.Lscope1-SendForward
 264               		.stabs	"ShiftFwdData:F(0,20)",36,0,120,ShiftFwdData
 265               		.stabs	"data:P(4,2)",64,0,119,19
 266               		.stabs	"cnt:P(4,2)",64,0,119,22
 267               	.global	ShiftFwdData
 268               		.type	ShiftFwdData, @function
 269               	ShiftFwdData:
 112:level2.c      **** 
 113:level2.c      **** 
 114:level2.c      **** 
 115:level2.c      **** 
 116:level2.c      **** // ==================================================================
 117:level2.c      **** // shift fwd data
 118:level2.c      **** 
 119:level2.c      **** void ShiftFwdData( uint8_t data , uint8_t cnt ) 
 120:level2.c      **** {
 270               		.stabn 68,0,120,.LM34-ShiftFwdData
 271               	.LM34:
 272               	/* prologue: frame size=0 */
 273               	/* prologue end (size=0) */
 274 00ce 382F      		mov r19,r24
 121:level2.c      ****     uint8_t i;
 122:level2.c      ****     for ( i = 0 ; i < cnt ; i++ ) 
 275               		.stabn 68,0,122,.LM35-ShiftFwdData
 276               	.LM35:
 277               	.LBB3:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s 			page 8


 278 00d0 40E0      		ldi r20,lo8(0)
 279 00d2 4617      		cp r20,r22
 280 00d4 08F5      		brsh .L34
 281               	.L32:
 123:level2.c      ****     {
 124:level2.c      ****         fwd_byte |= ( data & 1 ) << fwd_byte_bit_cnt++;
 282               		.stabn 68,0,124,.LM36-ShiftFwdData
 283               	.LM36:
 284 00d6 832F      		mov r24,r19
 285 00d8 9927      		clr r25
 286 00da 8170      		andi r24,lo8(1)
 287 00dc 9070      		andi r25,hi8(1)
 288 00de 072C      		mov r0,r7
 289 00e0 02C0      		rjmp 2f
 290 00e2 880F      	1:	lsl r24
 291 00e4 991F      		rol r25
 292 00e6 0A94      	2:	dec r0
 293 00e8 E2F7      		brpl 1b
 294 00ea 8929      		or r24,r9
 295 00ec 982E      		mov r9,r24
 296 00ee 7394      		inc r7
 125:level2.c      ****         data >>= 1;
 297               		.stabn 68,0,125,.LM37-ShiftFwdData
 298               	.LM37:
 299 00f0 3695      		lsr r19
 126:level2.c      ****         if ( fwd_byte_bit_cnt == 8 ) 
 300               		.stabn 68,0,126,.LM38-ShiftFwdData
 301               	.LM38:
 302 00f2 98E0      		ldi r25,lo8(8)
 303 00f4 7916      		cp r7,r25
 304 00f6 21F0      		breq .L35
 305               		.stabn 68,0,122,.LM39-ShiftFwdData
 306               	.LM39:
 307               	.L29:
 308 00f8 4F5F      		subi r20,lo8(-(1))
 309 00fa 4617      		cp r20,r22
 310 00fc 60F3      		brlo .L32
 311 00fe 0CC0      		rjmp .L34
 127:level2.c      ****         {
 128:level2.c      ****             *forward_ptr++ = fwd_byte;
 312               		.stabn 68,0,128,.LM40-ShiftFwdData
 313               	.LM40:
 314               	.L35:
 315 0100 E091 0000 		lds r30,forward_ptr
 316 0104 F091 0000 		lds r31,(forward_ptr)+1
 317 0108 8193      		st Z+,r24
 318 010a F093 0000 		sts (forward_ptr)+1,r31
 319 010e E093 0000 		sts forward_ptr,r30
 129:level2.c      ****             fwd_byte_bit_cnt = 0;
 320               		.stabn 68,0,129,.LM41-ShiftFwdData
 321               	.LM41:
 322 0112 7724      		clr r7
 130:level2.c      ****             fwd_byte = 0;
 323               		.stabn 68,0,130,.LM42-ShiftFwdData
 324               	.LM42:
 325 0114 972C      		mov r9,r7
 326 0116 F0CF      		rjmp .L29
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s 			page 9


 327               	.L34:
 131:level2.c      ****         }
 132:level2.c      ****     }
 133:level2.c      ****     *forward_ptr = fwd_byte;             //store in all cases
 328               		.stabn 68,0,133,.LM43-ShiftFwdData
 329               	.LM43:
 330 0118 E091 0000 		lds r30,forward_ptr
 331 011c F091 0000 		lds r31,(forward_ptr)+1
 332 0120 9082      		st Z,r9
 134:level2.c      **** }
 333               		.stabn 68,0,134,.LM44-ShiftFwdData
 334               	.LM44:
 335               	.LBE3:
 336               	/* epilogue: frame size=0 */
 337 0122 0895      		ret
 338               	/* epilogue end (size=1) */
 339               	/* function ShiftFwdData size 43 (42) */
 340               		.size	ShiftFwdData, .-ShiftFwdData
 341               		.stabs	"i:r(4,2)",64,0,121,20
 342               		.stabn	192,0,0,.LBB3-ShiftFwdData
 343               		.stabn	224,0,0,.LBE3-ShiftFwdData
 344               	.Lscope2:
 345               		.stabs	"",36,0,0,.Lscope2-ShiftFwdData
 346               		.stabs	"Prepare_SOF:F(4,2)",36,0,141,Prepare_SOF
 347               	.global	Prepare_SOF
 348               		.type	Prepare_SOF, @function
 349               	Prepare_SOF:
 135:level2.c      **** 
 136:level2.c      **** 
 137:level2.c      **** // ==================================================================
 138:level2.c      **** // prepares SOF
 139:level2.c      **** 
 140:level2.c      **** uint8_t Prepare_SOF( void ) 
 141:level2.c      **** {
 350               		.stabn 68,0,141,.LM45-Prepare_SOF
 351               	.LM45:
 352               	/* prologue: frame size=0 */
 353               	/* prologue end (size=0) */
 142:level2.c      ****     forward_ptr = data_buffer;
 354               		.stabn 68,0,142,.LM46-Prepare_SOF
 355               	.LM46:
 356 0124 80E0      		ldi r24,lo8(data_buffer)
 357 0126 90E0      		ldi r25,hi8(data_buffer)
 358 0128 9093 0000 		sts (forward_ptr)+1,r25
 359 012c 8093 0000 		sts forward_ptr,r24
 143:level2.c      ****     fwd_byte = 0;
 360               		.stabn 68,0,143,.LM47-Prepare_SOF
 361               	.LM47:
 362 0130 9924      		clr r9
 144:level2.c      ****     fwd_byte_bit_cnt = 0;
 363               		.stabn 68,0,144,.LM48-Prepare_SOF
 364               	.LM48:
 365 0132 792C      		mov r7,r9
 145:level2.c      **** 
 146:level2.c      ****     return 0;                               //return number of emited bits
 147:level2.c      **** }
 366               		.stabn 68,0,147,.LM49-Prepare_SOF
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s 			page 10


 367               	.LM49:
 368 0134 80E0      		ldi r24,lo8(0)
 369 0136 90E0      		ldi r25,hi8(0)
 370               	/* epilogue: frame size=0 */
 371 0138 0895      		ret
 372               	/* epilogue end (size=1) */
 373               	/* function Prepare_SOF size 11 (10) */
 374               		.size	Prepare_SOF, .-Prepare_SOF
 375               	.Lscope3:
 376               		.stabs	"",36,0,0,.Lscope3-Prepare_SOF
 377               		.stabs	"Prepare_Data:F(4,2)",36,0,153,Prepare_Data
 378               		.stabs	"data:P(4,2)",64,0,152,17
 379               		.stabs	"msg_size:P(4,2)",64,0,152,22
 380               	.global	Prepare_Data
 381               		.type	Prepare_Data, @function
 382               	Prepare_Data:
 148:level2.c      **** 
 149:level2.c      **** // ==================================================================
 150:level2.c      **** // prepares data bits for sending
 151:level2.c      **** 
 152:level2.c      **** uint8_t Prepare_Data( uint8_t data , uint8_t msg_size ) 
 153:level2.c      **** {
 383               		.stabn 68,0,153,.LM50-Prepare_Data
 384               	.LM50:
 385               	/* prologue: frame size=0 */
 386 013a 1F93      		push r17
 387               	/* prologue end (size=1) */
 388 013c 182F      		mov r17,r24
 154:level2.c      ****     //Type B
 155:level2.c      ****     ShiftFwdData( 0 , 1 );
 389               		.stabn 68,0,155,.LM51-Prepare_Data
 390               	.LM51:
 391 013e 61E0      		ldi r22,lo8(1)
 392 0140 80E0      		ldi r24,lo8(0)
 393 0142 C5DF      		rcall ShiftFwdData
 156:level2.c      **** 
 157:level2.c      ****     ShiftFwdData( data , 8 );
 394               		.stabn 68,0,157,.LM52-Prepare_Data
 395               	.LM52:
 396 0144 68E0      		ldi r22,lo8(8)
 397 0146 812F      		mov r24,r17
 398 0148 C2DF      		rcall ShiftFwdData
 158:level2.c      **** 
 159:level2.c      ****     ShiftFwdData( 3 , 2 );
 399               		.stabn 68,0,159,.LM53-Prepare_Data
 400               	.LM53:
 401 014a 62E0      		ldi r22,lo8(2)
 402 014c 83E0      		ldi r24,lo8(3)
 403 014e BFDF      		rcall ShiftFwdData
 160:level2.c      ****     return 11;                             //return number of emited bits
 161:level2.c      **** 
 162:level2.c      **** }
 404               		.stabn 68,0,162,.LM54-Prepare_Data
 405               	.LM54:
 406 0150 8BE0      		ldi r24,lo8(11)
 407 0152 90E0      		ldi r25,hi8(11)
 408               	/* epilogue: frame size=0 */
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s 			page 11


 409 0154 1F91      		pop r17
 410 0156 0895      		ret
 411               	/* epilogue end (size=2) */
 412               	/* function Prepare_Data size 15 (12) */
 413               		.size	Prepare_Data, .-Prepare_Data
 414               	.Lscope4:
 415               		.stabs	"",36,0,0,.Lscope4-Prepare_Data
 416               		.stabs	"Prepare_EOF:F(4,2)",36,0,168,Prepare_EOF
 417               		.stabs	"msg_size:P(4,2)",64,0,167,24
 418               	.global	Prepare_EOF
 419               		.type	Prepare_EOF, @function
 420               	Prepare_EOF:
 163:level2.c      **** 
 164:level2.c      **** // ==================================================================
 165:level2.c      **** // prepares EOF
 166:level2.c      **** 
 167:level2.c      **** uint8_t Prepare_EOF( uint8_t msg_size ) 
 168:level2.c      **** {
 421               		.stabn 68,0,168,.LM55-Prepare_EOF
 422               	.LM55:
 423               	/* prologue: frame size=0 */
 424               	/* prologue end (size=0) */
 169:level2.c      ****     return 0;
 170:level2.c      **** }
 425               		.stabn 68,0,170,.LM56-Prepare_EOF
 426               	.LM56:
 427 0158 80E0      		ldi r24,lo8(0)
 428 015a 90E0      		ldi r25,hi8(0)
 429               	/* epilogue: frame size=0 */
 430 015c 0895      		ret
 431               	/* epilogue end (size=1) */
 432               	/* function Prepare_EOF size 3 (2) */
 433               		.size	Prepare_EOF, .-Prepare_EOF
 434               	.Lscope5:
 435               		.stabs	"",36,0,0,.Lscope5-Prepare_EOF
 436               		.stabs	"ClearCaptureBuffers:F(0,20)",36,0,175,ClearCaptureBuffers
 437               	.global	ClearCaptureBuffers
 438               		.type	ClearCaptureBuffers, @function
 439               	ClearCaptureBuffers:
 171:level2.c      **** 
 172:level2.c      **** // ==================================================================
 173:level2.c      **** 
 174:level2.c      **** void ClearCaptureBuffers( void ) 
 175:level2.c      **** {
 440               		.stabn 68,0,175,.LM57-ClearCaptureBuffers
 441               	.LM57:
 442               	/* prologue: frame size=0 */
 443               	/* prologue end (size=0) */
 176:level2.c      ****     uint8_t i;
 177:level2.c      ****     for( i = 0 ; i < 200 ; i++ )
 444               		.stabn 68,0,177,.LM58-ClearCaptureBuffers
 445               	.LM58:
 446               	.LBB4:
 447 015e 80E0      		ldi r24,lo8(0)
 448 0160 E0E0      		ldi r30,lo8(raw_data)
 449 0162 F0E0      		ldi r31,hi8(raw_data)
 450               	.L44:

⌨️ 快捷键说明

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