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

📄 main.lst

📁 此程序为利用mage8 AVR 和EM4094实现读取ISO15693类型卡的C程序、读卡稳定、这个项目我们做了好久、非常不错的程序、很适合做这方面产品的朋友们参考
💻 LST
📖 第 1 页 / 共 5 页
字号:
  85:main.c        **** uint8_t bit_pos;                      //bit position in demodulation
  86:main.c        **** 
  87:main.c        **** uint8_t edge;                         //bit_phase FSK
  88:main.c        **** uint8_t last_valid;                   //last valid value for invalid sequence compression
  89:main.c        **** uint8_t last_z;                       //FSK last pulse number
  90:main.c        **** 
  91:main.c        **** uint16_t old_capture;                 //one subcarrier variable
  92:main.c        **** uint16_t previous_delay;              //noise delay storage variable
  93:main.c        **** 
  94:main.c        **** uint8_t pulsesPerBit2;
  95:main.c        **** uint8_t pulsesPerBit3;
  96:main.c        **** 
  97:main.c        **** #define TOLERANCE (3)
  98:main.c        **** 
  99:main.c        **** // ==================================================================
 100:main.c        **** // function declarations
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccARbaaa.s 			page 6


 101:main.c        **** void avr_ini( void );
 102:main.c        **** void Beep( uint8_t times );
 103:main.c        **** void Beep_Long( void );
 104:main.c        **** void Capture( uint8_t style );
 105:main.c        **** uint8_t Check_EEPROM( void );
 106:main.c        **** void Delayms( uint16_t count );
 107:main.c        **** void Delayus( uint16_t count );
 108:main.c        **** int main( void );
 109:main.c        **** void Reset_To_Default( void );
 110:main.c        **** void Parse_Command( uint8_t cmd , uint8_t param );
 111:main.c        **** void store_bit( uint8_t b , uint8_t v );
 112:main.c        **** void Wait( uint16_t period );
 113:main.c        **** void WatchDog_Feed( void );
 114:main.c        **** 
 115:main.c        **** // ==================================================================
 116:main.c        **** 
 117:main.c        **** void avr_ini( void )
 118:main.c        **** {
 186               		.stabn 68,0,118,.LM1-avr_ini
 187               	.LM1:
 188               	/* prologue: frame size=0 */
 189 0000 1F93      		push r17
 190               	/* prologue end (size=1) */
 119:main.c        **** 
 120:main.c        ****    // --------------------------------------------------------------- 
 121:main.c        ****    // UART initialization                                             
 122:main.c        ****    // --------------------------------------------------------------- 
 123:main.c        **** 
 124:main.c        ****    UARTIni( );          // level4 uart init routine
 191               		.stabn 68,0,124,.LM2-avr_ini
 192               	.LM2:
 193 0002 00D0      		rcall UARTIni
 125:main.c        **** 
 126:main.c        ****    // --------------------------------------------------------------- 
 127:main.c        ****    // 16-bit Timer/Counter1 initialization                            
 128:main.c        ****    // --------------------------------------------------------------- 
 129:main.c        **** 
 130:main.c        ****    TCCR1A = 0;         // no compare otuput, no PWM mode ...  
 194               		.stabn 68,0,130,.LM3-avr_ini
 195               	.LM3:
 196 0004 1FBC      		out 79-0x20,__zero_reg__
 131:main.c        ****    TCCR1B = 0;         // stopped on startup
 197               		.stabn 68,0,131,.LM4-avr_ini
 198               	.LM4:
 199 0006 1EBC      		out 78-0x20,__zero_reg__
 132:main.c        **** 
 133:main.c        ****    // --------------------------------------------------------------- 
 134:main.c        ****    // I/O Ports initialization                                        
 135:main.c        ****    // --------------------------------------------------------------- 
 136:main.c        **** /*
 137:main.c        ****    PORTB = 0;
 138:main.c        ****    PORTC = (1 << DCLK_PIN) | (0 << MOD_PIN);    //set SPI active == EM4094 normal function blocked
 139:main.c        ****    PORTD = 0;                                   //    notmodulation == startup antenna on
 140:main.c        ****                                                 //    LED On
 141:main.c        **** 
 142:main.c        ****    DDRB = 0x02;        // PORTB.0,2-7 as input, PORTB.1 = SDA = output
 143:main.c        ****    DDRC = 0x0F;        // PORTC.(3-0) = (SCK, LED, DCLK, DIN=MOD) = output, rest = input
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccARbaaa.s 			page 7


 144:main.c        **** #ifdef DEBUG
 145:main.c        ****    DDRD = 0x44;        // PORTD.(7,6,2) = (SSN, DBG_TRANS, DBG_FORWARD) = output, rest = input, SSN
 146:main.c        **** #else
 147:main.c        ****    DDRD = 0x00;        // PORTD.(7,6,2) = (SSN, DBG_TRANS, DBG_FORWARD) = output, rest = input, SSN
 148:main.c        **** #endif
 149:main.c        **** */
 150:main.c        ****     DDRB  = 0x06;
 200               		.stabn 68,0,150,.LM5-avr_ini
 201               	.LM5:
 202 0008 86E0      		ldi r24,lo8(6)
 203 000a 87BB      		out 55-0x20,r24
 151:main.c        ****     DDRC  = 0x37;
 204               		.stabn 68,0,151,.LM6-avr_ini
 205               	.LM6:
 206 000c 87E3      		ldi r24,lo8(55)
 207 000e 84BB      		out 52-0x20,r24
 152:main.c        ****     DDRD  = 0xC2;
 208               		.stabn 68,0,152,.LM7-avr_ini
 209               	.LM7:
 210 0010 82EC      		ldi r24,lo8(-62)
 211 0012 81BB      		out 49-0x20,r24
 153:main.c        ****     
 154:main.c        ****     PORTB = 0x00;  //如果weigan0和weigan1不置低,则wd0和wd1第一次输出会有问题;
 212               		.stabn 68,0,154,.LM8-avr_ini
 213               	.LM8:
 214 0014 18BA      		out 56-0x20,__zero_reg__
 155:main.c        ****     PORTC = 0x01;
 215               		.stabn 68,0,155,.LM9-avr_ini
 216               	.LM9:
 217 0016 81E0      		ldi r24,lo8(1)
 218 0018 85BB      		out 53-0x20,r24
 156:main.c        ****     PORTD = 0xC0; 
 219               		.stabn 68,0,156,.LM10-avr_ini
 220               	.LM10:
 221 001a 80EC      		ldi r24,lo8(-64)
 222 001c 82BB      		out 50-0x20,r24
 157:main.c        ****                                            
 158:main.c        ****     // --------------------------------------------------------------- 
 159:main.c        ****     // Watch Dog Setup
 160:main.c        ****     // --------------------------------------------------------------- 
 161:main.c        ****     cbi( MCUCSR , WDRF );  //clear watchdog reset flag
 223               		.stabn 68,0,161,.LM11-avr_ini
 224               	.LM11:
 225 001e 84B7      		in r24,84-0x20
 226 0020 877F      		andi r24,lo8(-9)
 227 0022 84BF      		out 84-0x20,r24
 162:main.c        ****     wdt_enable( 0x07 );
 228               		.stabn 68,0,162,.LM12-avr_ini
 229               	.LM12:
 230 0024 88E1      		ldi r24,lo8(24)
 231 0026 90E0      		ldi r25,hi8(24)
 232 0028 2FE0      		ldi r18,lo8(15)
 233               	/* #APP */
 234 002a 0FB6      		in __tmp_reg__,__SREG__
 235 002c F894      		cli
 236 002e A895      		wdr
 237 0030 81BD      		out 33,r24
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccARbaaa.s 			page 8


 238 0032 0FBE      		out __SREG__,__tmp_reg__
 239 0034 21BD      		out 33,r18
 163:main.c        ****     
 164:main.c        **** 
 165:main.c        ****     while( Check_EEPROM( ) == 0x00 )
 240               		.stabn 68,0,165,.LM13-avr_ini
 241               	.LM13:
 242               	/* #NOAPP */
 243 0036 01C0      		rjmp .L2
 244               	.L5:
 166:main.c        ****         Reset_To_Default( );
 245               		.stabn 68,0,166,.LM14-avr_ini
 246               	.LM14:
 247 0038 58D3      		rcall Reset_To_Default
 248               	.L2:
 249 003a FCD2      		rcall Check_EEPROM
 250 003c 8823      		tst r24
 251 003e E1F3      		breq .L5
 167:main.c        ****         
 168:main.c        ****     // --------------------------------------------------------------- 
 169:main.c        ****     // General Interrupt Enable                                        
 170:main.c        ****     // --------------------------------------------------------------- 
 171:main.c        **** 
 172:main.c        ****     MCUCR = ( ( 1 << ISC11 ) | ( 1 << ISC10 ) );          //INT1 triggered on rising edge
 252               		.stabn 68,0,172,.LM15-avr_ini
 253               	.LM15:
 254 0040 8CE0      		ldi r24,lo8(12)
 255 0042 85BF      		out 85-0x20,r24
 173:main.c        ****     GICR = 0;                                   //INT0 & INT1 disabled
 256               		.stabn 68,0,173,.LM16-avr_ini
 257               	.LM16:
 258 0044 1BBE      		out 91-0x20,__zero_reg__
 174:main.c        **** 
 175:main.c        ****     watchdog_feed_flag = 0 ;  //feed dog sign,0 for not feed dog , other value for has feed dog;
 259               		.stabn 68,0,175,.LM17-avr_ini
 260               	.LM17:
 261 0046 1092 0000 		sts watchdog_feed_flag,__zero_reg__
 176:main.c        **** 
 177:main.c        **** //    weigan_format = 1 ;     //1--Weigan26 , 2--Weigan34 , 3--Weigan36 , 4--Weigan44 ,5--9600bps ;
 178:main.c        **** 	  if( eeprom_rb( &WEIGAN_FORMAT ) == eeprom_rb( &WEIGAN_FORMAT_CHK ) )
 262               		.stabn 68,0,178,.LM18-avr_ini
 263               	.LM18:
 264 004a 80E0      		ldi r24,lo8(WEIGAN_FORMAT)
 265 004c 90E0      		ldi r25,hi8(WEIGAN_FORMAT)
 266 004e 00D0      		rcall eeprom_read_byte
 267 0050 182F      		mov r17,r24
 268 0052 80E0      		ldi r24,lo8(WEIGAN_FORMAT_CHK)
 269 0054 90E0      		ldi r25,hi8(WEIGAN_FORMAT_CHK)
 270 0056 00D0      		rcall eeprom_read_byte
 271 0058 1817      		cp r17,r24
 272 005a 21F4      		brne .L6
 179:main.c        **** 	  {	
 180:main.c        **** 	      weigan_format = eeprom_rb( &WEIGAN_FORMAT );
 273               		.stabn 68,0,180,.LM19-avr_ini
 274               	.LM19:
 275 005c 80E0      		ldi r24,lo8(WEIGAN_FORMAT)
 276 005e 90E0      		ldi r25,hi8(WEIGAN_FORMAT)
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccARbaaa.s 			page 9


 277 0060 00D0      		rcall eeprom_read_byte
 278 0062 01C0      		rjmp .L14
 279               	.L6:
 181:main.c        **** 	  }
 182:main.c        **** 	  else
 183:main.c        **** 	  	  weigan_format = 0x01; 
 280               		.stabn 68,0,183,.LM20-avr_ini
 281               	.LM20:
 282 0064 81E0      		ldi r24,lo8(1)
 283               	.L14:
 284 0066 8093 0000 		sts weigan_format,r24
 184:main.c        **** 	    	  
 185:main.c        **** 	  if( eeprom_rb( &ALARM_LEVEL ) == eeprom_rb( &ALARM_LEVEL_CHK ) )   
 285               		.stabn 68,0,185,.LM21-avr_ini
 286               	.LM21:
 287 006a 80E0      		ldi r24,lo8(ALARM_LEVEL)
 288 006c 90E0      		ldi r25,hi8(ALARM_LEVEL)
 289 006e 00D0      		rcall eeprom_read_byte
 290 0070 182F      		mov r17,r24
 291 0072 80E0      		ldi r24,lo8(ALARM_LEVEL_CHK)
 292 0074 90E0      		ldi r25,hi8(ALARM_LEVEL_CHK)
 293 0076 00D0      		rcall eeprom_read_byte
 294 0078 1817      		cp r17,r24
 295 007a 21F4      		brne .L8
 186:main.c        **** 	  	  alarm_level = eeprom_rb( &ALARM_LEVEL );
 296               		.stabn 68,0,186,.LM22-avr_ini
 297               	.LM22:
 298 007c 80E0      		ldi r24,lo8(ALARM_LEVEL)
 299 007e 90E0      		ldi r25,hi8(ALARM_LEVEL)
 300 0080 00D0      		rcall eeprom_read_byte
 301 0082 01C0      		rjmp .L15
 302               	.L8:
 187:main.c        ****     else
 188:main.c        ****     	  alarm_level = 0x01;
 303               		.stabn 68,0,188,.LM23-avr_ini
 304               	.LM23:
 305 0084 81E0      		ldi r24,lo8(1)
 306               	.L15:
 307 0086 8093 0000 		sts alarm_level,r24
 189:main.c        **** 
 190:main.c        **** 	  if( eeprom_rb( &ALARM_TIME ) == eeprom_rb( &ALARM_TIME_CHK ) )   
 308               		.stabn 68,0,190,.LM24-avr_ini
 309               	.LM24:
 310 008a 80E0      		ldi r24,lo8(ALARM_TIME)
 311 008c 90E0      		ldi r25,hi8(ALARM_TIME)
 312 008e 00D0      		rcall eeprom_read_byte
 313 0090 182F      		mov r17,r24
 314 0092 80E0      		ldi r24,lo8(ALARM_TIME_CHK)
 315 0094 90E0      		ldi r25,hi8(ALARM_TIME_CHK)
 316 0096 00D0      		rcall eeprom_read_byte
 317 0098 1817      		cp r17,r24
 318 009a 21F4      		brne .L10
 191:main.c        **** 	  	  alarm_time = eeprom_rb( &ALARM_TIME );   
 319               		.stabn 68,0,191,.LM25-avr_ini
 320               	.LM25:
 321 009c 80E0      		ldi r24,lo8(ALARM_TIME)
 322 009e 90E0      		ldi r25,hi8(ALARM_TIME)
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccARbaaa.s 			page 10


 323 00a0 00D0      		rcall eeprom_read_byte
 324 00a2 01C0      		rjmp .L16
 325               	.L10:
 192:main.c        **** 	  else
 193:main.c        **** 	  	  alarm_time = 0x05;	
 326               		.stabn 68,0,193,.LM26-avr_ini
 327               	.LM26:
 328 00a4 85E0      		ldi r24,lo8(5)
 329               	.L16:
 330 00a6 8093 0000 		sts alarm_time,r24
 194:main.c        **** 	  	  
 195:main.c        **** 	  if( eeprom_rb( &ALARM_ENABLE ) == eeprom_rb( &ALARM_ENABLE_CHK ) )   
 331               		.stabn 68,0,195,.LM27-avr_ini
 332               	.LM27:
 333 00aa 80E0      		ldi r24,lo8(ALARM_ENABLE)
 334 00ac 90E0      		ldi r25,hi8(ALARM_ENABLE)
 335 00ae 00D0      		rcall eeprom_read_byte
 336 00b0 182F      		mov r17,r24
 337 00b2 80E0      		ldi r24,lo8(ALARM_ENABLE_CHK)
 338 00b4 90E0      		ldi r25,hi8(ALARM_ENABLE_CHK)
 339 00b6 00D0      		rcall eeprom_read_byte
 340 00b8 1817      		cp r17,r24
 341 00ba 21F4      		brne .L12
 196:main.c        **** 	  	  alarm_enable = eeprom_rb( &ALARM_ENABLE );   
 342               		.stabn 68,0,196,.LM28-avr_ini

⌨️ 快捷键说明

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