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

📄 level4.lst

📁 此程序为利用mage8 AVR 和EM4094实现读取TYPE A类型卡的C程序、读卡稳定、这个项目我们做了好久、非常不错的程序、很适合做这方面产品的朋友们参考
💻 LST
📖 第 1 页 / 共 5 页
字号:
 171               		.stabn 68,0,69,.LM14-__vector_11
 172               	.LM14:
 173 0068 2A3A      		cpi r18,lo8(-86)
 174 006a 71F7      		brne .L21
 175               		.stabn 68,0,70,.LM15-__vector_11
 176               	.LM15:
 177 006c 82E0      		ldi r24,lo8(2)
 178 006e F0CF      		rjmp .L28
 179               	.L27:
 180 0070 8530      		cpi r24,5
 181 0072 9105      		cpc r25,__zero_reg__
 182 0074 89F0      		breq .L20
 183 0076 8530      		cpi r24,5
 184 0078 9105      		cpc r25,__zero_reg__
 185 007a 54F0      		brlt .L18
 186 007c 0697      		sbiw r24,6
 187 007e 69F7      		brne .L25
 188               		.stabn 68,0,112,.LM16-__vector_11
 189               	.LM16:
 190 0080 3093 0000 		sts rx_number,r19
 191               		.stabn 68,0,113,.LM17-__vector_11
 192               	.LM17:
 193 0084 2A3A      		cpi r18,lo8(-86)
 194 0086 81F4      		brne .L1
 195               		.stabn 68,0,115,.LM18-__vector_11
 196               	.LM18:
 197 0088 85E5      		ldi r24,lo8(85)
 198 008a 8093 0000 		sts valid_data_flag,r24
 199               		.stabn 68,0,117,.LM19-__vector_11
 200               	.LM19:
 201 008e 0CC0      		rjmp .L1
 202               	.L18:
 203               		.stabn 68,0,97,.LM20-__vector_11
 204               	.LM20:
 205 0090 2093 0000 		sts uart_in_param,r18
 206               		.stabn 68,0,98,.LM21-__vector_11
 207               	.LM21:
 208 0094 85E0      		ldi r24,lo8(5)
 209 0096 DCCF      		rjmp .L28
 210               	.L20:
 211               		.stabn 68,0,103,.LM22-__vector_11
 212               	.LM22:
 213 0098 2535      		cpi r18,lo8(85)
 214 009a B1F6      		brne .L21
 215               		.stabn 68,0,104,.LM23-__vector_11
 216               	.LM23:
 217 009c 86E0      		ldi r24,lo8(6)
 218 009e D8CF      		rjmp .L28
 219               	.L15:
 220               		.stabn 68,0,87,.LM24-__vector_11
 221               	.LM24:
 222 00a0 2093 0000 		sts uart_in_command,r18
 223               		.stabn 68,0,88,.LM25-__vector_11
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccVbaaa.s 			page 7


 224               	.LM25:
 225 00a4 84E0      		ldi r24,lo8(4)
 226 00a6 D4CF      		rjmp .L28
 120:level4.c      ****         	  break;	        	          	  
 121:level4.c      ****     }
 122:level4.c      **** }
 227               		.stabn 68,0,122,.LM26-__vector_11
 228               	.LM26:
 229               	.L1:
 230               	.LBE2:
 231               	/* epilogue: frame size=0 */
 232 00a8 9F91      		pop r25
 233 00aa 8F91      		pop r24
 234 00ac 3F91      		pop r19
 235 00ae 2F91      		pop r18
 236 00b0 0F90      		pop __tmp_reg__
 237 00b2 0FBE      		out __SREG__,__tmp_reg__
 238 00b4 0F90      		pop __tmp_reg__
 239 00b6 1F90      		pop __zero_reg__
 240 00b8 1895      		reti
 241               	/* epilogue end (size=9) */
 242               	/* function __vector_11 size 94 (76) */
 243               		.size	__vector_11, .-__vector_11
 244               		.stabs	"temp:r(4,2)",64,0,48,18
 245               		.stabn	192,0,0,.LBB2-__vector_11
 246               		.stabn	224,0,0,.LBE2-__vector_11
 247               	.Lscope0:
 248               		.stabs	"",36,0,0,.Lscope0-__vector_11
 249               		.stabs	"SendByte:F(0,20)",36,0,132,SendByte
 250               		.stabs	"byte:P(4,2)",64,0,131,24
 251               	.global	SendByte
 252               		.type	SendByte, @function
 253               	SendByte:
 123:level4.c      **** 
 124:level4.c      **** 
 125:level4.c      **** // ********************************************************************************************
 126:level4.c      **** // Description : Send one byte through UART.
 127:level4.c      **** // Return value: None.   
 128:level4.c      **** // parameter   : byte -- the byte to be sent.
 129:level4.c      **** // ********************************************************************************************
 130:level4.c      ****  
 131:level4.c      **** void SendByte( uint8_t byte ) 
 132:level4.c      **** {
 254               		.stabn 68,0,132,.LM27-SendByte
 255               	.LM27:
 256               	/* prologue: frame size=0 */
 257               	/* prologue end (size=0) */
 133:level4.c      **** 	  sbi( PORTC , TEN_485 );
 258               		.stabn 68,0,133,.LM28-SendByte
 259               	.LM28:
 260 00ba AD9A      		sbi 53-0x20,5
 134:level4.c      **** 	  UDR = byte;
 261               		.stabn 68,0,134,.LM29-SendByte
 262               	.LM29:
 263 00bc 8CB9      		out 44-0x20,r24
 135:level4.c      ****     while ( !( UCSRA & ( 1 << UDRE ) ) )
 264               		.stabn 68,0,135,.LM30-SendByte
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccVbaaa.s 			page 8


 265               	.LM30:
 266               	.L32:
 267 00be 5D9B      		sbis 43-0x20,5
 268 00c0 FECF      		rjmp .L32
 136:level4.c      ****     { }
 137:level4.c      ****     Delayus( 900 );
 269               		.stabn 68,0,137,.LM31-SendByte
 270               	.LM31:
 271 00c2 84E8      		ldi r24,lo8(900)
 272 00c4 93E0      		ldi r25,hi8(900)
 273 00c6 00D0      		rcall Delayus
 138:level4.c      ****     cbi( PORTC , TEN_485 );     
 274               		.stabn 68,0,138,.LM32-SendByte
 275               	.LM32:
 276 00c8 AD98      		cbi 53-0x20,5
 139:level4.c      **** }
 277               		.stabn 68,0,139,.LM33-SendByte
 278               	.LM33:
 279               	/* epilogue: frame size=0 */
 280 00ca 0895      		ret
 281               	/* epilogue end (size=1) */
 282               	/* function SendByte size 9 (8) */
 283               		.size	SendByte, .-SendByte
 284               	.Lscope1:
 285               		.stabs	"",36,0,0,.Lscope1-SendByte
 286               		.stabs	"Send_Weigan26:F(0,20)",36,0,150,Send_Weigan26
 287               		.stabs	"data:P(1,1)=*(4,2)",64,0,149,16
 288               	.global	Send_Weigan26
 289               		.type	Send_Weigan26, @function
 290               	Send_Weigan26:
 140:level4.c      **** 
 141:level4.c      **** 
 142:level4.c      **** 
 143:level4.c      **** // ********************************************************************************************
 144:level4.c      **** // Description : Send weigan26 model and encode according to weigan26 protocol.
 145:level4.c      **** // Return value: None.   
 146:level4.c      **** // parameter   : * data -- the point of the data to be encoded.
 147:level4.c      **** // ********************************************************************************************
 148:level4.c      **** 
 149:level4.c      **** void Send_Weigan26( uint8_t * data )
 150:level4.c      **** {
 291               		.stabn 68,0,150,.LM34-Send_Weigan26
 292               	.LM34:
 293               	/* prologue: frame size=0 */
 294 00cc DF92      		push r13
 295 00ce EF92      		push r14
 296 00d0 FF92      		push r15
 297 00d2 0F93      		push r16
 298 00d4 1F93      		push r17
 299 00d6 CF93      		push r28
 300               	/* prologue end (size=6) */
 301 00d8 8C01      		movw r16,r24
 151:level4.c      **** 	  uint8_t i , weigan26_even_data , weigan26_odd_data , parity_bit , bit_cnt;
 152:level4.c      **** 	  parity_bit = 0;               //If use even parity check , this bit must be 0;
 302               		.stabn 68,0,152,.LM35-Send_Weigan26
 303               	.LM35:
 304               	.LBB3:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccVbaaa.s 			page 9


 305 00da DD24      		clr r13
 153:level4.c      **** 	  for ( i = 8 ; i < 20 ; i++ )
 306               		.stabn 68,0,153,.LM36-Send_Weigan26
 307               	.LM36:
 308 00dc C8E0      		ldi r28,lo8(8)
 309 00de 47E0      		ldi r20,lo8(7)
 310 00e0 50E0      		ldi r21,hi8(7)
 311               	.L40:
 154:level4.c      **** 	  {
 155:level4.c      **** 	  	  bit_cnt = i % 8 ;
 312               		.stabn 68,0,155,.LM37-Send_Weigan26
 313               	.LM37:
 314 00e2 2C2F      		mov r18,r28
 315 00e4 2770      		andi r18,lo8(7)
 156:level4.c      **** 	  	  parity_bit ^= ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01; 
 316               		.stabn 68,0,156,.LM38-Send_Weigan26
 317               	.LM38:
 318 00e6 8C2F      		mov r24,r28
 319 00e8 8695      		lsr r24
 320 00ea 8695      		lsr r24
 321 00ec 8695      		lsr r24
 322 00ee F801      		movw r30,r16
 323 00f0 E80F      		add r30,r24
 324 00f2 F11D      		adc r31,__zero_reg__
 325 00f4 8081      		ld r24,Z
 326 00f6 9927      		clr r25
 327 00f8 BA01      		movw r22,r20
 328 00fa 621B      		sub r22,r18
 329 00fc 7109      		sbc r23,__zero_reg__
 330 00fe 02C0      		rjmp 2f
 331 0100 9595      	1:	asr r25
 332 0102 8795      		ror r24
 333 0104 6A95      	2:	dec r22
 334 0106 E2F7      		brpl 1b
 335 0108 8170      		andi r24,lo8(1)
 336 010a D826      		eor r13,r24
 337               		.stabn 68,0,153,.LM39-Send_Weigan26
 338               	.LM39:
 339 010c CF5F      		subi r28,lo8(-(1))
 340 010e C431      		cpi r28,lo8(20)
 341 0110 40F3      		brlo .L40
 342 0112 C4E1      		ldi r28,lo8(20)
 157:level4.c      **** 	  }
 158:level4.c      **** 	  wdt_reset( );
 343               		.stabn 68,0,158,.LM40-Send_Weigan26
 344               	.LM40:
 345               	/* #APP */
 346 0114 A895      		wdr
 159:level4.c      **** #ifdef WDT
 160:level4.c      ****     WatchDog_Feed( );
 347               		.stabn 68,0,160,.LM41-Send_Weigan26
 348               	.LM41:
 349               	/* #NOAPP */
 350 0116 00D0      		rcall WatchDog_Feed
 161:level4.c      **** #endif
 162:level4.c      **** 	  weigan26_even_data = parity_bit ;
 351               		.stabn 68,0,162,.LM42-Send_Weigan26
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccVbaaa.s 			page 10


 352               	.LM42:
 353 0118 FD2C      		mov r15,r13
 163:level4.c      **** 	  parity_bit = 1;               //If use odd parity check , this bit must be 1 ;
 354               		.stabn 68,0,163,.LM43-Send_Weigan26
 355               	.LM43:
 356 011a 91E0      		ldi r25,lo8(1)
 357 011c D92E      		mov r13,r25
 164:level4.c      **** 	  for ( i = 20 ; i < 32 ; i++ )
 358               		.stabn 68,0,164,.LM44-Send_Weigan26
 359               	.LM44:
 360 011e 47E0      		ldi r20,lo8(7)
 361 0120 50E0      		ldi r21,hi8(7)
 362               	.L45:
 165:level4.c      **** 	  {
 166:level4.c      **** 	      bit_cnt = i % 8;
 363               		.stabn 68,0,166,.LM45-Send_Weigan26
 364               	.LM45:
 365 0122 2C2F      		mov r18,r28
 366 0124 2770      		andi r18,lo8(7)
 167:level4.c      **** 	      parity_bit ^= ( data[ i / 8 ]	>> ( 7 - bit_cnt ) ) & 0x01;
 367               		.stabn 68,0,167,.LM46-Send_Weigan26
 368               	.LM46:
 369 0126 8C2F      		mov r24,r28
 370 0128 8695      		lsr r24
 371 012a 8695      		lsr r24
 372 012c 8695      		lsr r24
 373 012e F801      		movw r30,r16
 374 0130 E80F      		add r30,r24
 375 0132 F11D      		adc r31,__zero_reg__
 376 0134 8081      		ld r24,Z
 377 0136 9927      		clr r25
 378 0138 BA01      		movw r22,r20
 379 013a 621B      		sub r22,r18
 380 013c 7109      		sbc r23,__zero_reg__
 381 013e 02C0      		rjmp 2f
 382 0140 9595      	1:	asr r25
 383 0142 8795      		ror r24
 384 0144 6A95      	2:	dec r22
 385 0146 E2F7      		brpl 1b
 386 0148 8170      		andi r24,lo8(1)
 387 014a D826      		eor r13,r24
 388               		.stabn 68,0,164,.LM47-Send_Weigan26
 389               	.LM47:
 390 014c CF5F      		subi r28,lo8(-(1))
 391 014e C032      		cpi r28,lo8(32)
 392 0150 40F3      		brlo .L45
 168:level4.c      **** 	  }
 169:level4.c      **** 	  wdt_reset( );
 393               		.stabn 68,0,169,.LM48-Send_Weigan26
 394               	.LM48:
 395               	/* #APP */
 396 0152 A895      		wdr
 170:level4.c      **** #ifdef WDT
 171:level4.c      ****     WatchDog_Feed( );
 397               		.stabn 68,0,171,.LM49-Send_Weigan26
 398               	.LM49:
 399               	/* #NOAPP */
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccVbaaa.s 			page 11


 400 0154 00D0      		rcall WatchDog_Feed
 172:level4.c      **** #endif
 173:level4.c      **** 	  weigan26_odd_data = parity_bit;
 174:level4.c      **** 	  if ( weigan26_even_data )                   //Send E bit;                     
 401               		.stabn 68,0,174,.LM50-Send_Weigan26
 402               	.LM50:
 403 0156 FF20      		tst r15
 404 0158 31F1      		breq .L46
 175:level4.c      **** 	  	  Send_Weigan1();
 405               		.stabn 68,0,175,.LM51-Send_Weigan26
 406               	.LM51:

⌨️ 快捷键说明

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