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

📄 level2.lst

📁 此程序为利用mage8 AVR 和EM4094实现读取TYPE B类型卡的C程序、读卡稳定、这个项目我们做了好久、非常不错的程序、很适合做这方面产品的朋友们参考
💻 LST
📖 第 1 页 / 共 4 页
字号:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s 			page 1


   1               		.file	"level2.c"
   2               		.arch atmega8
   3               	__SREG__ = 0x3f
   4               	__SP_H__ = 0x3e
   5               	__SP_L__ = 0x3d
   6               	__tmp_reg__ = 0
   7               	__zero_reg__ = 1
   8               		.global __do_copy_data
   9               		.global __do_clear_bss
  10               		.stabs	"E:\\PROJECT_GCC\\ISO14443-B_OK/",100,0,0,.Ltext0
  11               		.stabs	"level2.c",100,0,0,.Ltext0
  12               		.text
  13               	.Ltext0:
  14               		.stabs	"gcc2_compiled.",60,0,0,0
  15               		.stabs	"int:t(0,1)=r(0,1);-32768;32767;",128,0,0,0
  16               		.stabs	"char:t(0,2)=@s8;r(0,2);0;255;",128,0,0,0
  17               		.stabs	"long int:t(0,3)=@s32;r(0,3);0020000000000;0017777777777;",128,0,0,0
  18               		.stabs	"unsigned int:t(0,4)=r(0,4);0000000000000;0000000177777;",128,0,0,0
  19               		.stabs	"long unsigned int:t(0,5)=@s32;r(0,5);0000000000000;0037777777777;",128,0,0,0
  20               		.stabs	"long long int:t(0,6)=@s64;r(0,6);01000000000000000000000;0777777777777777777777;",128,0,0,
  21               		.stabs	"long long unsigned int:t(0,7)=@s64;r(0,7);0000000000000;01777777777777777777777;",128,0,0,
  22               		.stabs	"short int:t(0,8)=r(0,8);-32768;32767;",128,0,0,0
  23               		.stabs	"short unsigned int:t(0,9)=r(0,9);0000000000000;0000000177777;",128,0,0,0
  24               		.stabs	"signed char:t(0,10)=@s8;r(0,10);-128;127;",128,0,0,0
  25               		.stabs	"unsigned char:t(0,11)=@s8;r(0,11);0;255;",128,0,0,0
  26               		.stabs	"float:t(0,12)=r(0,1);4;0;",128,0,0,0
  27               		.stabs	"double:t(0,13)=r(0,1);4;0;",128,0,0,0
  28               		.stabs	"long double:t(0,14)=r(0,1);4;0;",128,0,0,0
  29               		.stabs	"complex int:t(0,15)=s4real:(0,1),0,16;imag:(0,1),16,16;;",128,0,0,0
  30               		.stabs	"complex float:t(0,16)=R3;8;0;",128,0,0,0
  31               		.stabs	"complex double:t(0,17)=R3;8;0;",128,0,0,0
  32               		.stabs	"complex long double:t(0,18)=R3;8;0;",128,0,0,0
  33               		.stabs	"__builtin_va_list:t(0,19)=*(0,20)=(0,20)",128,0,0,0
  34               		.stabs	"_Bool:t(0,21)=@s8;-16;",128,0,0,0
  35               		.stabs	"level2.c",130,0,0,0
  36               		.stabs	"C:/WinAVR/avr/include/avr/io.h",130,0,0,0
  37               		.stabs	"C:/WinAVR/avr/include/avr/sfr_defs.h",130,0,0,0
  38               		.stabs	"C:/WinAVR/avr/include/inttypes.h",130,0,0,0
  39               		.stabs	"int8_t:t(4,1)=(0,10)",128,0,67,0
  40               		.stabs	"uint8_t:t(4,2)=(0,11)",128,0,72,0
  41               		.stabs	"int16_t:t(4,3)=(0,1)",128,0,90,0
  42               		.stabs	"uint16_t:t(4,4)=(0,4)",128,0,95,0
  43               		.stabs	"int32_t:t(4,5)=(0,3)",128,0,106,0
  44               		.stabs	"uint32_t:t(4,6)=(0,5)",128,0,111,0
  45               		.stabs	"int64_t:t(4,7)=(0,6)",128,0,124,0
  46               		.stabs	"uint64_t:t(4,8)=(0,7)",128,0,129,0
  47               		.stabs	"intptr_t:t(4,9)=(4,3)",128,0,141,0
  48               		.stabs	"uintptr_t:t(4,10)=(4,4)",128,0,146,0
  49               		.stabn	162,0,0,0
  50               		.stabn	162,0,0,0
  51               		.stabs	"C:/WinAVR/avr/include/avr/iom8.h",130,0,0,0
  52               		.stabn	162,0,0,0
  53               		.stabs	"C:/WinAVR/avr/include/avr/portpins.h",130,0,0,0
  54               		.stabn	162,0,0,0
  55               		.stabn	162,0,0,0
  56               		.stabs	"C:/WinAVR/avr/include/avr/interrupt.h",130,0,0,0
  57               		.stabn	162,0,0,0
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s 			page 2


  58               		.stabs	"C:/WinAVR/avr/include/avr/signal.h",130,0,0,0
  59               		.stabn	162,0,0,0
  60               		.stabs	"level4.h",130,0,0,0
  61               		.stabn	162,0,0,0
  62               		.stabs	"level3.h",130,0,0,0
  63               		.stabn	162,0,0,0
  64               		.stabs	"level2.h",130,0,0,0
  65               		.stabn	162,0,0,0
  66               		.stabs	"level1.h",130,0,0,0
  67               		.stabn	162,0,0,0
  68               		.stabs	"__vector_8:F(0,20)",36,0,48,__vector_8
  69               	.global	__vector_8
  70               		.type	__vector_8, @function
  71               	__vector_8:
   1:level2.c      **** 
   2:level2.c      **** #include <avr/io.h>
   3:level2.c      **** #include <inttypes.h>
   4:level2.c      **** #include <avr/interrupt.h>
   5:level2.c      **** #include <avr/signal.h>
   6:level2.c      **** #include "level4.h"
   7:level2.c      **** #include "level3.h"
   8:level2.c      **** #include "level2.h"
   9:level2.c      **** #include "level1.h"
  10:level2.c      **** 
  11:level2.c      **** //--------------------------------------------------------------
  12:level2.c      **** //global variables
  13:level2.c      **** 
  14:level2.c      **** uint8_t bufferClean;                         //flag for pre-cleaning
  15:level2.c      **** uint8_t * forward_ptr;                       //ptr for forward message preparation
  16:level2.c      **** uint8_t data_buffer[ CAPTURE_SIZE ];           //array of forwarded bits XOR clean response data
  17:level2.c      **** 
  18:level2.c      **** //--------------------------------------------------------------
  19:level2.c      **** //local variables
  20:level2.c      **** 
  21:level2.c      **** #define SPI_DELAY 5                          //dummy cycles of WaitSPI 
  22:level2.c      **** 
  23:level2.c      **** uint8_t * fwd_write_ptr;                     //forwardlink bit pointer
  24:level2.c      **** 
  25:level2.c      **** 
  26:level2.c      **** //aliases
  27:level2.c      **** #define fwd_bit_sz captured_byte
  28:level2.c      **** #define fwd_byte_bit_cnt captured_valid
  29:level2.c      **** #define fwd_byte captured_bit_count
  30:level2.c      **** 
  31:level2.c      **** //----------------------------------------------------------------
  32:level2.c      **** //Local functions
  33:level2.c      **** void ClearCaptureBuffers( void );
  34:level2.c      **** uint16_t CRC( uint8_t *data , uint8_t len );
  35:level2.c      **** uint8_t ExtractTypeBData( uint8_t size );
  36:level2.c      **** uint8_t Prepare_Data( uint8_t data , uint8_t msg_size );
  37:level2.c      **** uint8_t Prepare_EOF( uint8_t msg_size );
  38:level2.c      **** uint8_t Prepare_SOF( void );
  39:level2.c      **** void SendForward( uint8_t fwd_bit_count );
  40:level2.c      **** void ShiftFwdData( uint8_t data , uint8_t cnt );
  41:level2.c      **** void WaitSPI( void );
  42:level2.c      **** void WriteSPI( uint16_t low , uint16_t hi );
  43:level2.c      **** 
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s 			page 3


  44:level2.c      **** // ==================================================================
  45:level2.c      **** // Forward link interrupt routine (implements a final state machine)
  46:level2.c      **** 
  47:level2.c      **** SIGNAL ( SIG_OVERFLOW1 ) 
  48:level2.c      **** {
  72               		.stabn 68,0,48,.LM1-__vector_8
  73               	.LM1:
  74               	/* prologue: frame size=0 */
  75 0000 1F92      		push __zero_reg__
  76 0002 0F92      		push __tmp_reg__
  77 0004 0FB6      		in __tmp_reg__,__SREG__
  78 0006 0F92      		push __tmp_reg__
  79 0008 1124      		clr __zero_reg__
  80 000a 8F93      		push r24
  81 000c 9F93      		push r25
  82 000e EF93      		push r30
  83 0010 FF93      		push r31
  84               	/* prologue end (size=9) */
  49:level2.c      ****     if ( fwd_bit_sz-- == 0 ) 
  85               		.stabn 68,0,49,.LM2-__vector_8
  86               	.LM2:
  87 0012 6A94      		dec r6
  88 0014 8FEF      		ldi r24,lo8(-1)
  89 0016 6816      		cp r6,r24
  90 0018 F1F0      		breq .L7
  50:level2.c      ****     {                  //prepare next bit modulation
  51:level2.c      ****         TCCR1B = 0;                            //no clock T1
  52:level2.c      ****         cbi( TIMSK , TOIE1 );                   //stop 
  53:level2.c      ****         cbi( TIFR , TOV1 );                     //clear pending int
  54:level2.c      ****         return;
  55:level2.c      ****     }
  56:level2.c      ****     if ( forward_link_type == 0x01 )  //type B forwardlink (PCD -> PICC),
  91               		.stabn 68,0,56,.LM3-__vector_8
  92               	.LM3:
  93 001a 8091 0000 		lds r24,forward_link_type
  94 001e 8130      		cpi r24,lo8(1)
  95 0020 09F5      		brne .L1
  57:level2.c      ****     {    
  58:level2.c      ****         TCNT1 = fwd_B_timing;
  96               		.stabn 68,0,58,.LM4-__vector_8
  97               	.LM4:
  98 0022 8091 0000 		lds r24,fwd_B_timing
  99 0026 9091 0000 		lds r25,(fwd_B_timing)+1
 100 002a 9DBD      		out (76)+1-0x20,r25
 101 002c 8CBD      		out 76-0x20,r24
  59:level2.c      **** 
  60:level2.c      ****         if ( fwd_byte & 1 ) 
 102               		.stabn 68,0,60,.LM5-__vector_8
 103               	.LM5:
 104 002e 90FE      		sbrs r9,0
 105 0030 10C0      		rjmp .L4
  61:level2.c      ****         	  cbi( PORTC , MOD_PIN ); 
 106               		.stabn 68,0,61,.LM6-__vector_8
 107               	.LM6:
 108 0032 A998      		cbi 53-0x20,1
 109               	.L5:
  62:level2.c      ****         else 
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s 			page 4


  63:level2.c      ****         	  sbi( PORTC , MOD_PIN );
  64:level2.c      ****     
  65:level2.c      ****         fwd_byte >>= 1; 
 110               		.stabn 68,0,65,.LM7-__vector_8
 111               	.LM7:
 112 0034 9694      		lsr r9
  66:level2.c      **** 
  67:level2.c      ****         if ( --fwd_byte_bit_cnt == 0 ) 
 113               		.stabn 68,0,67,.LM8-__vector_8
 114               	.LM8:
 115 0036 7A94      		dec r7
 116 0038 A9F4      		brne .L1
  68:level2.c      ****         {
  69:level2.c      ****             fwd_byte_bit_cnt = 8;
 117               		.stabn 68,0,69,.LM9-__vector_8
 118               	.LM9:
 119 003a 88E0      		ldi r24,lo8(8)
 120 003c 782E      		mov r7,r24
  70:level2.c      ****             fwd_byte = *fwd_write_ptr++;
 121               		.stabn 68,0,70,.LM10-__vector_8
 122               	.LM10:
 123 003e E091 0000 		lds r30,fwd_write_ptr
 124 0042 F091 0000 		lds r31,(fwd_write_ptr)+1
 125 0046 9190      		ld r9,Z+
 126 0048 F093 0000 		sts (fwd_write_ptr)+1,r31
 127 004c E093 0000 		sts fwd_write_ptr,r30
 128 0050 09C0      		rjmp .L1
 129               	.L4:
 130               		.stabn 68,0,63,.LM11-__vector_8
 131               	.LM11:
 132 0052 A99A      		sbi 53-0x20,1
 133 0054 EFCF      		rjmp .L5
 134               		.stabn 68,0,51,.LM12-__vector_8
 135               	.LM12:
 136               	.L7:
 137 0056 1EBC      		out 78-0x20,__zero_reg__
 138               		.stabn 68,0,52,.LM13-__vector_8
 139               	.LM13:
 140 0058 89B7      		in r24,89-0x20
 141 005a 8B7F      		andi r24,lo8(-5)
 142 005c 89BF      		out 89-0x20,r24
 143               		.stabn 68,0,53,.LM14-__vector_8
 144               	.LM14:
 145 005e 88B7      		in r24,88-0x20
 146 0060 8B7F      		andi r24,lo8(-5)
 147 0062 88BF      		out 88-0x20,r24
 148               		.stabn 68,0,54,.LM15-__vector_8
 149               	.LM15:
  71:level2.c      ****         }
  72:level2.c      ****     } 
  73:level2.c      **** }
 150               		.stabn 68,0,73,.LM16-__vector_8
 151               	.LM16:
 152               	.L1:
 153               	/* epilogue: frame size=0 */
 154 0064 FF91      		pop r31
 155 0066 EF91      		pop r30
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s 			page 5


 156 0068 9F91      		pop r25
 157 006a 8F91      		pop r24
 158 006c 0F90      		pop __tmp_reg__
 159 006e 0FBE      		out __SREG__,__tmp_reg__
 160 0070 0F90      		pop __tmp_reg__
 161 0072 1F90      		pop __zero_reg__
 162 0074 1895      		reti
 163               	/* epilogue end (size=9) */
 164               	/* function __vector_8 size 60 (42) */
 165               		.size	__vector_8, .-__vector_8
 166               	.Lscope0:
 167               		.stabs	"",36,0,0,.Lscope0-__vector_8
 168               		.stabs	"SendForward:F(0,20)",36,0,82,SendForward
 169               		.stabs	"fwd_bit_count:P(4,2)",64,0,81,18
 170               	.global	SendForward
 171               		.type	SendForward, @function
 172               	SendForward:
  74:level2.c      **** 
  75:level2.c      **** 
  76:level2.c      **** // ==================================================================
  77:level2.c      **** // Forward Link setup function
  78:level2.c      **** // Requires: forwarLink_data filled with valid bits (1 bit per byte)
  79:level2.c      **** //           fwd_bit_count set with number of bits to be sent
  80:level2.c      **** 
  81:level2.c      **** void SendForward( uint8_t fwd_bit_count ) 
  82:level2.c      **** {
 173               		.stabn 68,0,82,.LM17-SendForward
 174               	.LM17:
 175               	/* prologue: frame size=0 */
 176               	/* prologue end (size=0) */
 177 0076 282F      		mov r18,r24
  83:level2.c      ****     fwd_write_ptr = data_buffer;
  84:level2.c      ****     fwd_byte = *fwd_write_ptr++;
 178               		.stabn 68,0,84,.LM18-SendForward
 179               	.LM18:
 180               	.LBB2:
 181 0078 9090 0000 		lds r9,data_buffer
 182 007c 80E0      		ldi r24,lo8(data_buffer+1)
 183 007e 90E0      		ldi r25,hi8(data_buffer+1)
 184 0080 9093 0000 		sts (fwd_write_ptr)+1,r25
 185 0084 8093 0000 		sts fwd_write_ptr,r24
  85:level2.c      ****     fwd_byte_bit_cnt = 8;
 186               		.stabn 68,0,85,.LM19-SendForward
 187               	.LM19:
 188 0088 98E0      		ldi r25,lo8(8)
 189 008a 792E      		mov r7,r25
  86:level2.c      ****     fwd_bit_sz = fwd_bit_count;
 190               		.stabn 68,0,86,.LM20-SendForward
 191               	.LM20:
 192 008c 622E      		mov r6,r18
  87:level2.c      ****     uint16_t i;
  88:level2.c      ****     //type B
  89:level2.c      **** 
  90:level2.c      ****     for ( i = 0 ; i < 200 ; i++ ) 
 193               		.stabn 68,0,90,.LM21-SendForward
 194               	.LM21:
 195 008e 80E0      		ldi r24,lo8(0)
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s 			page 6


 196 0090 90E0      		ldi r25,hi8(0)
 197               	.L13:
  91:level2.c      ****     {
  92:level2.c      ****         sbi( PORTC , MOD_PIN );                     //mod pulse
 198               		.stabn 68,0,92,.LM22-SendForward
 199               	.LM22:
 200 0092 A99A      		sbi 53-0x20,1
 201               		.stabn 68,0,90,.LM23-SendForward
 202               	.LM23:
 203 0094 0196      		adiw r24,1
 204 0096 883C      		cpi r24,200
 205 0098 9105      		cpc r25,__zero_reg__
 206 009a D8F3      		brlo .L13
  93:level2.c      ****     }
  94:level2.c      ****     TCNT1 = -316;                            //minimum startup pulse length
 207               		.stabn 68,0,94,.LM24-SendForward
 208               	.LM24:
 209 009c 84EC      		ldi r24,lo8(-316)
 210 009e 9EEF      		ldi r25,hi8(-316)
 211 00a0 9DBD      		out (76)+1-0x20,r25
 212 00a2 8CBD      		out 76-0x20,r24
  95:level2.c      ****     cbi( PORTC , MOD_PIN );                   //notmod pulse
 213               		.stabn 68,0,95,.LM25-SendForward
 214               	.LM25:
 215 00a4 A998      		cbi 53-0x20,1
  96:level2.c      **** 
  97:level2.c      ****     sbi( TIMSK , TOIE1 );

⌨️ 快捷键说明

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