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

📄 main.lst

📁 此程序为利用mage8 AVR 和EM4094实现读取TYPE B类型卡的C程序、读卡稳定、这个项目我们做了好久、非常不错的程序、很适合做这方面产品的朋友们参考
💻 LST
📖 第 1 页 / 共 5 页
字号:
  53:main.c        **** 
  54:main.c        **** uint8_t ID_CHK __attribute__((section(".eeprom")))              = 0x01;
  55:main.c        **** uint8_t SERIAL_NUMBER_CHK __attribute__((section(".eeprom")))   = 0xFF;
  56:main.c        **** uint8_t WEIGAN_FORMAT_CHK __attribute__((section(".eeprom")))   = 0x01;
  57:main.c        **** uint8_t AUTH_CODE_CHK __attribute__((section(".eeprom")))       = 0x00;
  58:main.c        **** uint8_t EEPROM_CHECK_CHK __attribute__((section(".eeprom")))    = 0x00;
  59:main.c        **** uint8_t RESET_DEFAULT_CHK __attribute__((section(".eeprom")))   = 0x00;
  60:main.c        **** uint8_t ALARM_LEVEL_CHK __attribute__((section(".eeprom")))     = 0x01;
  61:main.c        **** uint8_t ALARM_TIME_CHK __attribute__((section(".eeprom")))      = 0x05;
  62:main.c        **** uint8_t ALARM_ENABLE_CHK __attribute__((section(".eeprom")))    = 0x01;
  63:main.c        **** uint8_t TYPE_B_SETTING_CHK __attribute__((section(".eeprom")))  = 0x01;
  64:main.c        **** 
  65:main.c        **** 
  66:main.c        **** uint8_t weigan_data[ 5 ] ;//= { 0x23 , 0x34 , 0x45 , 0x56 ,0x67 };
  67:main.c        **** uint8_t history_weigan_data[ 5 ];
  68:main.c        **** uint8_t watchdog_feed_flag;    
  69:main.c        **** uint8_t data_same_times;   
  70:main.c        **** uint8_t alarm_level;
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cciWbaaa.s 			page 6


  71:main.c        **** uint8_t beep_times;
  72:main.c        **** uint8_t type_b_setting; //1--PUPI,2--APP,3--APP+PUPI,4--PUPI+APP;
  73:main.c        **** uint8_t unauth_card_times;
  74:main.c        **** uint8_t alarm_time;
  75:main.c        **** uint8_t alarm_enable;
  76:main.c        **** // ==================================================================
  77:main.c        **** // function declarations
  78:main.c        **** void AVR_Init( void );
  79:main.c        **** void Beep( uint8_t times );
  80:main.c        **** void Beep_Long( void );
  81:main.c        **** uint8_t Check_EEPROM( void );
  82:main.c        **** uint8_t Compare_Weigan_Data( void );
  83:main.c        **** void Delayms( uint16_t count );
  84:main.c        **** void Delayus( uint16_t count );
  85:main.c        **** int main( void );
  86:main.c        **** void Main_Receiver( void );
  87:main.c        **** void Parse_Command( uint8_t cmd , uint8_t param );
  88:main.c        **** void Reset_To_Default( void );
  89:main.c        **** void UARTIni( void );
  90:main.c        **** void WatchDog_Feed( void );
  91:main.c        **** void Send_Card_ID( uint8_t format , uint8_t *data );
  92:main.c        **** void Alarm_Check_And_Process( void );
  93:main.c        **** 
  94:main.c        **** 
  95:main.c        **** 
  96:main.c        **** // ==================================================================
  97:main.c        **** 
  98:main.c        **** // ********************************************************************************************
  99:main.c        **** // Description : Atmega8 device initialize.
 100:main.c        **** // Return value: None.   
 101:main.c        **** // parameter   : None.
 102:main.c        **** // ********************************************************************************************
 103:main.c        **** 
 104:main.c        **** void AVR_Init( void )
 105:main.c        **** {
 216               		.stabn 68,0,105,.LM1-AVR_Init
 217               	.LM1:
 218               	/* prologue: frame size=0 */
 219 0000 1F93      		push r17
 220               	/* prologue end (size=1) */
 106:main.c        **** 
 107:main.c        ****     UARTIni(); 
 221               		.stabn 68,0,107,.LM2-AVR_Init
 222               	.LM2:
 223 0002 7FD0      		rcall UARTIni
 108:main.c        ****              
 109:main.c        ****     // --------------------------------------------------------------- 
 110:main.c        ****     // 16-bit Timer/Counter1 initialization                            
 111:main.c        ****     // --------------------------------------------------------------- 
 112:main.c        **** 
 113:main.c        ****     TCCR1A = 0;         // no compare otuput, no PWM mode ...  
 224               		.stabn 68,0,113,.LM3-AVR_Init
 225               	.LM3:
 226 0004 1FBC      		out 79-0x20,__zero_reg__
 114:main.c        ****     TCCR1B = 0;         // stopped on startup
 227               		.stabn 68,0,114,.LM4-AVR_Init
 228               	.LM4:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cciWbaaa.s 			page 7


 229 0006 1EBC      		out 78-0x20,__zero_reg__
 115:main.c        **** 
 116:main.c        ****     // --------------------------------------------------------------- 
 117:main.c        ****     // I/O Ports initialization                                        
 118:main.c        ****     // --------------------------------------------------------------- 
 119:main.c        **** 
 120:main.c        ****     DDRB  = 0x06;
 230               		.stabn 68,0,120,.LM5-AVR_Init
 231               	.LM5:
 232 0008 86E0      		ldi r24,lo8(6)
 233 000a 87BB      		out 55-0x20,r24
 121:main.c        ****     DDRC  = 0x37;
 234               		.stabn 68,0,121,.LM6-AVR_Init
 235               	.LM6:
 236 000c 87E3      		ldi r24,lo8(55)
 237 000e 84BB      		out 52-0x20,r24
 122:main.c        ****     DDRD  = 0xC2;
 238               		.stabn 68,0,122,.LM7-AVR_Init
 239               	.LM7:
 240 0010 82EC      		ldi r24,lo8(-62)
 241 0012 81BB      		out 49-0x20,r24
 123:main.c        ****     
 124:main.c        ****     PORTB = 0x00;    //如果weigan0和weigan1不置低,则wd0和wd1第一次输出会有问题;
 242               		.stabn 68,0,124,.LM8-AVR_Init
 243               	.LM8:
 244 0014 18BA      		out 56-0x20,__zero_reg__
 125:main.c        ****     PORTC = 0x01;
 245               		.stabn 68,0,125,.LM9-AVR_Init
 246               	.LM9:
 247 0016 81E0      		ldi r24,lo8(1)
 248 0018 85BB      		out 53-0x20,r24
 126:main.c        ****     PORTD = 0xC0;                                          
 249               		.stabn 68,0,126,.LM10-AVR_Init
 250               	.LM10:
 251 001a 80EC      		ldi r24,lo8(-64)
 252 001c 82BB      		out 50-0x20,r24
 127:main.c        ****     // --------------------------------------------------------------- 
 128:main.c        ****     // Watch Dog Setup
 129:main.c        ****     // --------------------------------------------------------------- 
 130:main.c        ****     cbi( MCUCSR , WDRF );  //clear watchdog reset flag
 253               		.stabn 68,0,130,.LM11-AVR_Init
 254               	.LM11:
 255 001e 84B7      		in r24,84-0x20
 256 0020 877F      		andi r24,lo8(-9)
 257 0022 84BF      		out 84-0x20,r24
 131:main.c        ****     wdt_enable( 0x07 );    //set timeout of Watchdog is 2.1s;
 258               		.stabn 68,0,131,.LM12-AVR_Init
 259               	.LM12:
 260 0024 88E1      		ldi r24,lo8(24)
 261 0026 90E0      		ldi r25,hi8(24)
 262 0028 2FE0      		ldi r18,lo8(15)
 263               	/* #APP */
 264 002a 0FB6      		in __tmp_reg__,__SREG__
 265 002c F894      		cli
 266 002e A895      		wdr
 267 0030 81BD      		out 33,r24
 268 0032 0FBE      		out __SREG__,__tmp_reg__
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cciWbaaa.s 			page 8


 269 0034 21BD      		out 33,r18
 132:main.c        ****     
 133:main.c        ****     watchdog_feed_flag = 0 ;  //feed dog sign,0 for not feed dog , other value for has feed dog;
 270               		.stabn 68,0,133,.LM13-AVR_Init
 271               	.LM13:
 272               	/* #NOAPP */
 273 0036 1092 0000 		sts watchdog_feed_flag,__zero_reg__
 134:main.c        **** 
 135:main.c        ****     while( Check_EEPROM( ) == 0x00 )
 274               		.stabn 68,0,135,.LM14-AVR_Init
 275               	.LM14:
 276               	.L2:
 277 003a B9D1      		rcall Check_EEPROM
 278 003c 8823      		tst r24
 279 003e 11F4      		brne .L21
 136:main.c        ****         Reset_To_Default( );
 280               		.stabn 68,0,136,.LM15-AVR_Init
 281               	.LM15:
 282 0040 1DD2      		rcall Reset_To_Default
 283 0042 FBCF      		rjmp .L2
 137:main.c        **** 
 138:main.c        **** 
 139:main.c        **** //    weigan_format = 1 ;     //1--Weigan26 , 2--Weigan34 , 3--Weigan36 , 4--Weigan44 , 5--9600bps;
 140:main.c        **** 
 141:main.c        **** 	  if( eeprom_rb( &WEIGAN_FORMAT ) == eeprom_rb( &WEIGAN_FORMAT_CHK ) )
 284               		.stabn 68,0,141,.LM16-AVR_Init
 285               	.LM16:
 286               	.L21:
 287 0044 80E0      		ldi r24,lo8(WEIGAN_FORMAT)
 288 0046 90E0      		ldi r25,hi8(WEIGAN_FORMAT)
 289 0048 00D0      		rcall eeprom_read_byte
 290 004a 182F      		mov r17,r24
 291 004c 80E0      		ldi r24,lo8(WEIGAN_FORMAT_CHK)
 292 004e 90E0      		ldi r25,hi8(WEIGAN_FORMAT_CHK)
 293 0050 00D0      		rcall eeprom_read_byte
 294 0052 1817      		cp r17,r24
 295 0054 09F4      		brne .+2
 296 0056 42C0      		rjmp .L22
 142:main.c        **** 	  {	
 143:main.c        **** 	      weigan_format = eeprom_rb( &WEIGAN_FORMAT );
 144:main.c        **** 	  }
 145:main.c        **** 	  else
 146:main.c        **** 	  	  weigan_format = 0x01; 
 297               		.stabn 68,0,146,.LM17-AVR_Init
 298               	.LM17:
 299 0058 81E0      		ldi r24,lo8(1)
 300               	.L16:
 301 005a 8093 0000 		sts weigan_format,r24
 147:main.c        **** 	    	  
 148:main.c        **** 	  if( eeprom_rb( &ALARM_LEVEL ) == eeprom_rb( &ALARM_LEVEL_CHK ) )   
 302               		.stabn 68,0,148,.LM18-AVR_Init
 303               	.LM18:
 304 005e 80E0      		ldi r24,lo8(ALARM_LEVEL)
 305 0060 90E0      		ldi r25,hi8(ALARM_LEVEL)
 306 0062 00D0      		rcall eeprom_read_byte
 307 0064 182F      		mov r17,r24
 308 0066 80E0      		ldi r24,lo8(ALARM_LEVEL_CHK)
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cciWbaaa.s 			page 9


 309 0068 90E0      		ldi r25,hi8(ALARM_LEVEL_CHK)
 310 006a 00D0      		rcall eeprom_read_byte
 311 006c 1817      		cp r17,r24
 312 006e 91F1      		breq .L23
 149:main.c        **** 	  	  alarm_level = eeprom_rb( &ALARM_LEVEL );
 150:main.c        ****     else
 151:main.c        ****     	  alarm_level = 0x01;
 313               		.stabn 68,0,151,.LM19-AVR_Init
 314               	.LM19:
 315 0070 81E0      		ldi r24,lo8(1)
 316               	.L17:
 317 0072 8093 0000 		sts alarm_level,r24
 152:main.c        **** 
 153:main.c        **** 	  if( eeprom_rb( &ALARM_TIME ) == eeprom_rb( &ALARM_TIME_CHK ) )   
 318               		.stabn 68,0,153,.LM20-AVR_Init
 319               	.LM20:
 320 0076 80E0      		ldi r24,lo8(ALARM_TIME)
 321 0078 90E0      		ldi r25,hi8(ALARM_TIME)
 322 007a 00D0      		rcall eeprom_read_byte
 323 007c 182F      		mov r17,r24
 324 007e 80E0      		ldi r24,lo8(ALARM_TIME_CHK)
 325 0080 90E0      		ldi r25,hi8(ALARM_TIME_CHK)
 326 0082 00D0      		rcall eeprom_read_byte
 327 0084 1817      		cp r17,r24
 328 0086 11F1      		breq .L24
 154:main.c        **** 	  	  alarm_time = eeprom_rb( &ALARM_TIME );   
 155:main.c        **** 	  else
 156:main.c        **** 	  	  alarm_time = 0x05;	
 329               		.stabn 68,0,156,.LM21-AVR_Init
 330               	.LM21:
 331 0088 85E0      		ldi r24,lo8(5)
 332               	.L18:
 333 008a 8093 0000 		sts alarm_time,r24
 157:main.c        **** 
 158:main.c        **** 	  if( eeprom_rb( &ALARM_ENABLE ) == eeprom_rb( &ALARM_ENABLE_CHK ) )   
 334               		.stabn 68,0,158,.LM22-AVR_Init
 335               	.LM22:
 336 008e 80E0      		ldi r24,lo8(ALARM_ENABLE)
 337 0090 90E0      		ldi r25,hi8(ALARM_ENABLE)
 338 0092 00D0      		rcall eeprom_read_byte
 339 0094 182F      		mov r17,r24
 340 0096 80E0      		ldi r24,lo8(ALARM_ENABLE_CHK)
 341 0098 90E0      		ldi r25,hi8(ALARM_ENABLE_CHK)
 342 009a 00D0      		rcall eeprom_read_byte
 343 009c 1817      		cp r17,r24
 344 009e 91F0      		breq .L25
 159:main.c        **** 	  	  alarm_enable = eeprom_rb( &ALARM_ENABLE );   
 160:main.c        **** 	  else
 161:main.c        **** 	  	  alarm_enable = 0x01;
 345               		.stabn 68,0,161,.LM23-AVR_Init
 346               	.LM23:
 347 00a0 81E0      		ldi r24,lo8(1)
 348               	.L19:
 349 00a2 8093 0000 		sts alarm_enable,r24
 162:main.c        ****     	  
 163:main.c        **** 	  if( eeprom_rb( &TYPE_B_SETTING ) == eeprom_rb( &TYPE_B_SETTING_CHK ) )   
 350               		.stabn 68,0,163,.LM24-AVR_Init
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cciWbaaa.s 			page 10


 351               	.LM24:
 352 00a6 80E0      		ldi r24,lo8(TYPE_B_SETTING)
 353 00a8 90E0      		ldi r25,hi8(TYPE_B_SETTING)
 354 00aa 00D0      		rcall eeprom_read_byte
 355 00ac 182F      		mov r17,r24
 356 00ae 80E0      		ldi r24,lo8(TYPE_B_SETTING_CHK)
 357 00b0 90E0      		ldi r25,hi8(TYPE_B_SETTING_CHK)
 358 00b2 00D0      		rcall eeprom_read_byte
 359 00b4 1817      		cp r17,r24
 360 00b6 11F0      		breq .L26
 164:main.c        **** 	  	  type_b_setting = eeprom_rb( &TYPE_B_SETTING );   
 165:main.c        **** 	  else
 166:main.c        **** 	  	  type_b_setting = 0x01;	 	
 361               		.stabn 68,0,166,.LM25-AVR_Init
 362               	.LM25:
 363 00b8 81E0      		ldi r24,lo8(1)
 364 00ba 14C0      		rjmp .L20
 365               		.stabn 68,0,164,.LM26-AVR_Init
 366               	.LM26:
 367               	.L26:
 368 00bc 80E0      		ldi r24,lo8(TYPE_B_SETTING)

⌨️ 快捷键说明

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