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

📄 level4.lst

📁 此程序为利用mage8 AVR 和EM4094实现读取TYPE B类型卡的C程序、读卡稳定、这个项目我们做了好久、非常不错的程序、很适合做这方面产品的朋友们参考
💻 LST
📖 第 1 页 / 共 5 页
字号:
 177               		.stabn 68,0,107,.LM17-__vector_11
 178               	.LM17:
 179 0084 2A3A      		cpi r18,lo8(-86)
 180 0086 81F4      		brne .L1
 181               		.stabn 68,0,109,.LM18-__vector_11
 182               	.LM18:
 183 0088 85E5      		ldi r24,lo8(85)
 184 008a 8093 0000 		sts valid_data_flag,r24
 185               		.stabn 68,0,111,.LM19-__vector_11
 186               	.LM19:
 187 008e 0CC0      		rjmp .L1
 188               	.L18:
 189               		.stabn 68,0,91,.LM20-__vector_11
 190               	.LM20:
 191 0090 2093 0000 		sts uart_in_param,r18
 192               		.stabn 68,0,92,.LM21-__vector_11
 193               	.LM21:
 194 0094 85E0      		ldi r24,lo8(5)
 195 0096 DCCF      		rjmp .L28
 196               	.L20:
 197               		.stabn 68,0,97,.LM22-__vector_11
 198               	.LM22:
 199 0098 2535      		cpi r18,lo8(85)
 200 009a B1F6      		brne .L21
 201               		.stabn 68,0,98,.LM23-__vector_11
 202               	.LM23:
 203 009c 86E0      		ldi r24,lo8(6)
 204 009e D8CF      		rjmp .L28
 205               	.L15:
 206               		.stabn 68,0,81,.LM24-__vector_11
 207               	.LM24:
 208 00a0 2093 0000 		sts uart_in_command,r18
 209               		.stabn 68,0,82,.LM25-__vector_11
 210               	.LM25:
 211 00a4 84E0      		ldi r24,lo8(4)
 212 00a6 D4CF      		rjmp .L28
 114:level4.c      ****         	  break;	        	          	  
 115:level4.c      ****     }
 116:level4.c      **** }
 213               		.stabn 68,0,116,.LM26-__vector_11
 214               	.LM26:
 215               	.L1:
 216               	.LBE2:
 217               	/* epilogue: frame size=0 */
 218 00a8 9F91      		pop r25
 219 00aa 8F91      		pop r24
 220 00ac 3F91      		pop r19
 221 00ae 2F91      		pop r18
 222 00b0 0F90      		pop __tmp_reg__
 223 00b2 0FBE      		out __SREG__,__tmp_reg__
 224 00b4 0F90      		pop __tmp_reg__
 225 00b6 1F90      		pop __zero_reg__
 226 00b8 1895      		reti
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s 			page 7


 227               	/* epilogue end (size=9) */
 228               	/* function __vector_11 size 94 (76) */
 229               		.size	__vector_11, .-__vector_11
 230               		.stabs	"temp:r(4,2)",64,0,42,18
 231               		.stabn	192,0,0,.LBB2-__vector_11
 232               		.stabn	224,0,0,.LBE2-__vector_11
 233               	.Lscope0:
 234               		.stabs	"",36,0,0,.Lscope0-__vector_11
 235               		.stabs	"SendByte:F(0,20)",36,0,127,SendByte
 236               		.stabs	"byte:P(4,2)",64,0,126,24
 237               	.global	SendByte
 238               		.type	SendByte, @function
 239               	SendByte:
 117:level4.c      **** 
 118:level4.c      **** 
 119:level4.c      **** 
 120:level4.c      **** // ********************************************************************************************
 121:level4.c      **** // Description : Send one byte through UART.
 122:level4.c      **** // Return value: None.   
 123:level4.c      **** // parameter   : byte -- the byte to be sent.
 124:level4.c      **** // ********************************************************************************************
 125:level4.c      ****  
 126:level4.c      **** void SendByte( uint8_t byte ) 
 127:level4.c      **** {
 240               		.stabn 68,0,127,.LM27-SendByte
 241               	.LM27:
 242               	/* prologue: frame size=0 */
 243               	/* prologue end (size=0) */
 128:level4.c      **** 	  sbi( PORTC , TEN_485 );
 244               		.stabn 68,0,128,.LM28-SendByte
 245               	.LM28:
 246 00ba AD9A      		sbi 53-0x20,5
 129:level4.c      **** 	  UDR = byte;
 247               		.stabn 68,0,129,.LM29-SendByte
 248               	.LM29:
 249 00bc 8CB9      		out 44-0x20,r24
 130:level4.c      ****     while ( !( UCSRA & ( 1 << UDRE ) ) )
 250               		.stabn 68,0,130,.LM30-SendByte
 251               	.LM30:
 252               	.L32:
 253 00be 5D9B      		sbis 43-0x20,5
 254 00c0 FECF      		rjmp .L32
 131:level4.c      ****     { }
 132:level4.c      ****     Delayus( 1000 );
 255               		.stabn 68,0,132,.LM31-SendByte
 256               	.LM31:
 257 00c2 88EE      		ldi r24,lo8(1000)
 258 00c4 93E0      		ldi r25,hi8(1000)
 259 00c6 00D0      		rcall Delayus
 133:level4.c      ****     cbi( PORTC , TEN_485 );     
 260               		.stabn 68,0,133,.LM32-SendByte
 261               	.LM32:
 262 00c8 AD98      		cbi 53-0x20,5
 134:level4.c      **** }
 263               		.stabn 68,0,134,.LM33-SendByte
 264               	.LM33:
 265               	/* epilogue: frame size=0 */
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s 			page 8


 266 00ca 0895      		ret
 267               	/* epilogue end (size=1) */
 268               	/* function SendByte size 9 (8) */
 269               		.size	SendByte, .-SendByte
 270               	.Lscope1:
 271               		.stabs	"",36,0,0,.Lscope1-SendByte
 272               		.stabs	"Send_Weigan26:F(0,20)",36,0,159,Send_Weigan26
 273               		.stabs	"data:P(1,1)=*(4,2)",64,0,158,16
 274               	.global	Send_Weigan26
 275               		.type	Send_Weigan26, @function
 276               	Send_Weigan26:
 135:level4.c      **** 
 136:level4.c      **** //weigan26
 137:level4.c      **** //E CCCC CCCC CCCC                    CCCC CCCC CCCC O
 138:level4.c      **** 
 139:level4.c      **** //weigan34 
 140:level4.c      **** //E CCCC CCCC CCCC CCCC          CCCC CCCC CCCC CCCC O
 141:level4.c      **** 
 142:level4.c      **** //weigan36
 143:level4.c      **** //O CCCC CCCC CCCC CCCC C       CCC CCCC CCCC CCCC IIE
 144:level4.c      **** //I is '0';
 145:level4.c      **** 
 146:level4.c      **** //weigan44
 147:level4.c      **** //CCCC CCCC CCCC CCCC CCCC
 148:level4.c      **** //CCCC CCCC CCCC CCCC CCCC XXXX
 149:level4.c      **** //XXXX is the value of XOR of first 10 CCCC;
 150:level4.c      **** 
 151:level4.c      **** 
 152:level4.c      **** // ********************************************************************************************
 153:level4.c      **** // Description : Send weigan26 model and encode according to weigan26 protocol.
 154:level4.c      **** // Return value: None.   
 155:level4.c      **** // parameter   : * data -- the point of the data to be encoded.
 156:level4.c      **** // ********************************************************************************************
 157:level4.c      **** 
 158:level4.c      **** void Send_Weigan26( uint8_t * data )
 159:level4.c      **** {
 277               		.stabn 68,0,159,.LM34-Send_Weigan26
 278               	.LM34:
 279               	/* prologue: frame size=0 */
 280 00cc DF92      		push r13
 281 00ce EF92      		push r14
 282 00d0 FF92      		push r15
 283 00d2 0F93      		push r16
 284 00d4 1F93      		push r17
 285 00d6 CF93      		push r28
 286               	/* prologue end (size=6) */
 287 00d8 8C01      		movw r16,r24
 160:level4.c      **** 	  uint8_t i , weigan26_even_data , weigan26_odd_data , parity_bit , bit_cnt;
 161:level4.c      **** 	  parity_bit = 0;               //If use even parity check , this bit must be 0;
 288               		.stabn 68,0,161,.LM35-Send_Weigan26
 289               	.LM35:
 290               	.LBB3:
 291 00da DD24      		clr r13
 162:level4.c      **** 	  for ( i = 8 ; i < 20 ; i++ )
 292               		.stabn 68,0,162,.LM36-Send_Weigan26
 293               	.LM36:
 294 00dc C8E0      		ldi r28,lo8(8)
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s 			page 9


 295 00de 47E0      		ldi r20,lo8(7)
 296 00e0 50E0      		ldi r21,hi8(7)
 297               	.L40:
 163:level4.c      **** 	  {
 164:level4.c      **** 	  	  bit_cnt = i % 8 ;
 298               		.stabn 68,0,164,.LM37-Send_Weigan26
 299               	.LM37:
 300 00e2 2C2F      		mov r18,r28
 301 00e4 2770      		andi r18,lo8(7)
 165:level4.c      **** 	  	  parity_bit ^= ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01; 
 302               		.stabn 68,0,165,.LM38-Send_Weigan26
 303               	.LM38:
 304 00e6 8C2F      		mov r24,r28
 305 00e8 8695      		lsr r24
 306 00ea 8695      		lsr r24
 307 00ec 8695      		lsr r24
 308 00ee F801      		movw r30,r16
 309 00f0 E80F      		add r30,r24
 310 00f2 F11D      		adc r31,__zero_reg__
 311 00f4 8081      		ld r24,Z
 312 00f6 9927      		clr r25
 313 00f8 BA01      		movw r22,r20
 314 00fa 621B      		sub r22,r18
 315 00fc 7109      		sbc r23,__zero_reg__
 316 00fe 02C0      		rjmp 2f
 317 0100 9595      	1:	asr r25
 318 0102 8795      		ror r24
 319 0104 6A95      	2:	dec r22
 320 0106 E2F7      		brpl 1b
 321 0108 8170      		andi r24,lo8(1)
 322 010a D826      		eor r13,r24
 323               		.stabn 68,0,162,.LM39-Send_Weigan26
 324               	.LM39:
 325 010c CF5F      		subi r28,lo8(-(1))
 326 010e C431      		cpi r28,lo8(20)
 327 0110 40F3      		brlo .L40
 328 0112 C4E1      		ldi r28,lo8(20)
 166:level4.c      **** 	  }
 167:level4.c      **** 	  wdt_reset( );
 329               		.stabn 68,0,167,.LM40-Send_Weigan26
 330               	.LM40:
 331               	/* #APP */
 332 0114 A895      		wdr
 168:level4.c      **** 	  weigan26_even_data = parity_bit ;
 333               		.stabn 68,0,168,.LM41-Send_Weigan26
 334               	.LM41:
 335               	/* #NOAPP */
 336 0116 6D2D      		mov r22,r13
 169:level4.c      **** 	  parity_bit = 1;               //If use odd parity check , this bit must be 1 ;
 337               		.stabn 68,0,169,.LM42-Send_Weigan26
 338               	.LM42:
 339 0118 91E0      		ldi r25,lo8(1)
 340 011a D92E      		mov r13,r25
 170:level4.c      **** 	  for ( i = 20 ; i < 32 ; i++ )
 341               		.stabn 68,0,170,.LM43-Send_Weigan26
 342               	.LM43:
 343 011c 47E0      		ldi r20,lo8(7)
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s 			page 10


 344 011e 50E0      		ldi r21,hi8(7)
 345               	.L45:
 171:level4.c      **** 	  {
 172:level4.c      **** 	      bit_cnt = i % 8;
 346               		.stabn 68,0,172,.LM44-Send_Weigan26
 347               	.LM44:
 348 0120 2C2F      		mov r18,r28
 349 0122 2770      		andi r18,lo8(7)
 173:level4.c      **** 	      parity_bit ^= ( data[ i / 8 ]	>> ( 7 - bit_cnt ) ) & 0x01;
 350               		.stabn 68,0,173,.LM45-Send_Weigan26
 351               	.LM45:
 352 0124 8C2F      		mov r24,r28
 353 0126 8695      		lsr r24
 354 0128 8695      		lsr r24
 355 012a 8695      		lsr r24
 356 012c F801      		movw r30,r16
 357 012e E80F      		add r30,r24
 358 0130 F11D      		adc r31,__zero_reg__
 359 0132 8081      		ld r24,Z
 360 0134 9927      		clr r25
 361 0136 FA01      		movw r30,r20
 362 0138 E21B      		sub r30,r18
 363 013a F109      		sbc r31,__zero_reg__
 364 013c 02C0      		rjmp 2f
 365 013e 9595      	1:	asr r25
 366 0140 8795      		ror r24
 367 0142 EA95      	2:	dec r30
 368 0144 E2F7      		brpl 1b
 369 0146 8170      		andi r24,lo8(1)
 370 0148 D826      		eor r13,r24
 371               		.stabn 68,0,170,.LM46-Send_Weigan26
 372               	.LM46:
 373 014a CF5F      		subi r28,lo8(-(1))
 374 014c C032      		cpi r28,lo8(32)
 375 014e 40F3      		brlo .L45
 174:level4.c      **** 	  }
 175:level4.c      **** 	  wdt_reset( );
 376               		.stabn 68,0,175,.LM47-Send_Weigan26
 377               	.LM47:
 378               	/* #APP */
 379 0150 A895      		wdr
 176:level4.c      **** 	  weigan26_odd_data = parity_bit;
 177:level4.c      **** 	  if ( weigan26_even_data )                   //Send E bit;                     
 380               		.stabn 68,0,177,.LM48-Send_Weigan26
 381               	.LM48:
 382               	/* #NOAPP */
 383 0152 6623      		tst r22
 384 0154 31F1      		breq .L46
 178:level4.c      **** 	  	  Send_Weigan1();
 385               		.stabn 68,0,178,.LM49-Send_Weigan26
 386               	.LM49:
 387 0156 6CD1      		rcall Send_Weigan1
 388               	.L47:
 179:level4.c      **** 	  else
 180:level4.c      **** 	  	  Send_Weigan0();
 181:level4.c      **** 	  for ( i = 8 ; i < 32 ; i++ )                //Send CCCC CCCC CCCC CCCC CCCC CCCC;
 389               		.stabn 68,0,181,.LM50-Send_Weigan26
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s 			page 11


 390               	.LM50:
 391 0158 C8E0      		ldi r28,lo8(8)
 392 015a 87E0      		ldi r24,lo8(7)
 393 015c E82E      		mov r14,r24
 394 015e F12C      		mov r15,__zero_reg__
 395               	.L54:
 182:level4.c      **** 	  {
 183:level4.c      **** 	      bit_cnt = i % 8 ;
 396               		.stabn 68,0,183,.LM51-Send_Weigan26
 397               	.LM51:
 398 0160 2C2F      		mov r18,r28

⌨️ 快捷键说明

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