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

📄 pp.lst

📁 ICC刷卡C语言程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
    02D2 C00C      RJMP	0x02DF
(0224) 	  data1++;data2++;leng1--;leng2--;
    02D3 5F0F      SUBI	R16,0xFF
    02D4 4F1F      SBCI	R17,0xFF
    02D5 5F6F      SUBI	R22,0xFF
    02D6 4F7F      SBCI	R23,0xFF
    02D7 952A      DEC	R18
    02D8 954A      DEC	R20
(0225) 	  if(!leng2) return 0;
    02D9 F411      BNE	0x02DC
    02DA 2700      CLR	R16
    02DB C003      RJMP	0x02DF
    02DC 2322      TST	R18
    02DD F769      BNE	0x02CB
(0226) 	  }
(0227) 	return 1;  
    02DE E001      LDI	R16,1
    02DF D270      RCALL	pop_gset2
    02E0 9508      RET
_delay_ms:
  time                 --> R16
    02E1 D278      RCALL	push_gset2
(0228) 	}	 	
(0229) //***************************************************************毫秒级延时37//   
(0230) void delay_ms(unsigned int time)
(0231)     {
    02E2 C011      RJMP	0x02F4
(0232) 	while(time)
(0233) 	  {
(0234) 	  while(TCNT0<(fosc/64/1000));
    02E3 E74D      LDI	R20,0x7D
    02E4 E050      LDI	R21,0
    02E5 E060      LDI	R22,0
    02E6 E070      LDI	R23,0
    02E7 B622      IN	R2,0x32
    02E8 2433      CLR	R3
    02E9 2444      CLR	R4
    02EA 2455      CLR	R5
    02EB 1624      CP	R2,R20
    02EC 0635      CPC	R3,R21
    02ED 0646      CPC	R4,R22
    02EE 0657      CPC	R5,R23
    02EF F39C      BLT	0x02E3
(0235) 	  TCNT0=0;
    02F0 2422      CLR	R2
    02F1 BE22      OUT	0x32,R2
(0236) 	  time--;	
    02F2 5001      SUBI	R16,1
    02F3 4010      SBCI	R17,0
    02F4 3000      CPI	R16,0
    02F5 0701      CPC	R16,R17
    02F6 F761      BNE	0x02E3
    02F7 D258      RCALL	pop_gset2
    02F8 9508      RET
(0237) 	  }	
(0238)     }		   		 	
(0239) //************************************************************ATMEGA8初始化38//
(0240) void init_atmega(void)
(0241)     {
(0242) 	SFIOR&=(~(1<<PUD));//上拉SFIOR
_init_atmega:
    02F9 B780      IN	R24,0x30
    02FA 7F8B      ANDI	R24,0xFB
    02FB BF80      OUT	0x30,R24
(0243) 	DDRB=0xFF;	
    02FC EF8F      LDI	R24,0xFF
    02FD BB87      OUT	0x17,R24
(0244) 	DDRD=0xF8;//,PD7(E),PD6(RW),PD5(RS),PD4(SPS),PD2(ICC),PD1(TXD),PD0(RXD);
    02FE EF88      LDI	R24,0xF8
    02FF BB81      OUT	0x11,R24
(0245) 	PORTD=0xFB;
    0300 EF8B      LDI	R24,0xFB
    0301 BB82      OUT	0x12,R24
(0246) 	DDRC=0x0F;//PC4,PC3(REN),PC2(GREEN),PC0(BUZZER)
    0302 E08F      LDI	R24,0xF
    0303 BB84      OUT	0x14,R24
(0247) 	PORTC=0x01;
    0304 E081      LDI	R24,1
    0305 BB85      OUT	0x15,R24
(0248) 	UCSRB=(1<<RXEN)|(1<<TXEN);
    0306 E188      LDI	R24,0x18
    0307 B98A      OUT	0x0A,R24
(0249)     UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
    0308 E886      LDI	R24,0x86
    0309 BD80      OUT	0x20,R24
(0250) 	UBRRH=(fosc/16/(baud+1))/256;
    030A 2422      CLR	R2
    030B BC20      OUT	0x20,R2
(0251) 	UBRRL=(fosc/16/(baud+1))%256;
    030C E18A      LDI	R24,0x1A
    030D B989      OUT	0x09,R24
(0252) 	TCCR2=0x0a;
    030E E08A      LDI	R24,0xA
    030F BD85      OUT	0x25,R24
(0253) 	TCNT2=0x00;
    0310 BC24      OUT	0x24,R2
(0254) 	OCR2=fosc/8/2000;//500us
    0311 EF84      LDI	R24,0xF4
    0312 E091      LDI	R25,1
    0313 BD83      OUT	0x23,R24
(0255) 	TIMSK=1<<OCIE2;
    0314 E880      LDI	R24,0x80
    0315 BF89      OUT	0x39,R24
(0256) 	TCCR0=(1<<CS01)|(1<<CS00);//64分频
    0316 E083      LDI	R24,3
    0317 BF83      OUT	0x33,R24
(0257) 	TCNT0=0;
    0318 BE22      OUT	0x32,R2
(0258) 	SEI();
    0319 9478      BSET	7
    031A 9508      RET
_RxGsm:
  i                    --> R20
    031B D240      RCALL	push_gset1
    031C 9723      SBIW	R28,3
(0259) 	}
(0260) //*****************************************************************接收远程41//
(0261) void RxGsm(void)
(0262)     {
(0263) 	unsigned char i;
(0264) 	switch(RxGsmAddr)
    031D 91400062  LDS	R20,RxGsmAddr
    031F 2755      CLR	R21
    0320 3040      CPI	R20,0
    0321 0745      CPC	R20,R21
    0322 F071      BEQ	0x0331
    0323 3041      CPI	R20,1
    0324 E0E0      LDI	R30,0
    0325 075E      CPC	R21,R30
    0326 F071      BEQ	0x0335
    0327 3042      CPI	R20,2
    0328 E0E0      LDI	R30,0
    0329 075E      CPC	R21,R30
    032A F0F1      BEQ	0x0349
    032B 3043      CPI	R20,3
    032C E0E0      LDI	R30,0
    032D 075E      CPC	R21,R30
    032E F409      BNE	0x0330
    032F C08D      RJMP	0x03BD
    0330 C0DE      RJMP	0x040F
(0265) 	{
(0266) 	case(0)://接收停止
(0267) 	  {
(0268) 	  RxGsmAddr=0;return;
    0331 2422      CLR	R2
    0332 92200062  STS	RxGsmAddr,R2
    0334 C0DA      RJMP	0x040F
(0269) 	  }
(0270) 	case(1)://接收初始
(0271) 	  {
(0272) 	  if(!(PIND&0x04)&&(RxCalAddr==1))
    0335 9982      SBIC	0x10,2
    0336 C0D8      RJMP	0x040F
    0337 91800061  LDS	R24,RxCalAddr
    0339 3081      CPI	R24,1
    033A F009      BEQ	0x033C
    033B C0D3      RJMP	0x040F
(0273) 	  {RxGsmAddr=2;RxUartWait=0;RxUartAddr=1;return;}
    033C E082      LDI	R24,2
    033D 93800062  STS	RxGsmAddr,R24
    033F 2422      CLR	R2
    0340 2433      CLR	R3
    0341 9230006E  STS	RxUartWait+1,R3
    0343 9220006D  STS	RxUartWait,R2
    0345 E081      LDI	R24,1
    0346 93800072  STS	RxUartAddr,R24
    0348 C0C6      RJMP	0x040F
(0274) 	  else return;
(0275) 	  }
(0276) 	case(2)://接收是否完成
(0277) 	  {
(0278) 	  if(!(PIND&0x04)&&(RxCalAddr==1))
    0349 9982      SBIC	0x10,2
    034A C06E      RJMP	0x03B9
    034B 91800061  LDS	R24,RxCalAddr
    034D 3081      CPI	R24,1
    034E F009      BEQ	0x0350
    034F C069      RJMP	0x03B9
(0279) 	   {
(0280) 	   if(RxUartAddr) return;	   
    0350 90200072  LDS	R2,RxUartAddr
    0352 2022      TST	R2
    0353 F009      BEQ	0x0355
    0354 C0BA      RJMP	0x040F
(0281) 	   if(CmpsRom(RxUartDbuf,RxUartLeng,"DD",2)) {RxGsmAddr=1;OutToneCount=4;return;}//DD 
    0355 E082      LDI	R24,2
    0356 838A      STD	Y+2,R24
    0357 EC87      LDI	R24,0xC7
    0358 E090      LDI	R25,0
    0359 8399      STD	Y+1,R25
    035A 8388      STD	Y+0,R24
    035B 9120006F  LDS	R18,RxUartLeng
    035D E703      LDI	R16,0x73
    035E E010      LDI	R17,0
    035F DF4B      RCALL	_CmpsRom
    0360 2300      TST	R16
    0361 F039      BEQ	0x0369
    0362 E081      LDI	R24,1
    0363 93800062  STS	RxGsmAddr,R24
    0365 E084      LDI	R24,4
    0366 93800066  STS	OutToneCount,R24
    0368 C0A6      RJMP	0x040F
(0282) 	   OutToneCount=2;
    0369 E082      LDI	R24,2
    036A 93800066  STS	OutToneCount,R24
(0283) 	   CopyRam(RxUartDbuf+2,RxUartLeng,writecaltemp,16);//写信息到卡
    036C E180      LDI	R24,0x10
    036D 838A      STD	Y+2,R24
    036E E78E      LDI	R24,0x7E
    036F E091      LDI	R25,1
    0370 8399      STD	Y+1,R25
    0371 8388      STD	Y+0,R24
    0372 9120006F  LDS	R18,RxUartLeng
    0374 E705      LDI	R16,0x75
    0375 E010      LDI	R17,0
    0376 DF1C      RCALL	_CopyRam
(0284) 	   checktemp=0;
    0377 2422      CLR	R2
    0378 9220017D  STS	checktemp,R2
(0285) 	   for(i=2;i<=11;i++){checktemp^=writecal1[i];}
    037A E042      LDI	R20,2
    037B C00D      RJMP	0x0389
    037C E48A      LDI	R24,0x4A
    037D E090      LDI	R25,0
    037E 2FE4      MOV	R30,R20
    037F 27FF      CLR	R31
    0380 0FE8      ADD	R30,R24
    0381 1FF9      ADC	R31,R25
    0382 91E4      LPM	R30,0(Z)
    0383 9020017D  LDS	R2,checktemp
    0385 262E      EOR	R2,R30
    0386 9220017D  STS	checktemp,R2
    0388 9543      INC	R20
    0389 E08B      LDI	R24,0xB
    038A 1784      CP	R24,R20
    038B F780      BCC	0x037C
(0286)        for(i=0;i<16;i++){checktemp^=writecaltemp[i];} 
    038C 2744      CLR	R20
    038D C00D      RJMP	0x039B
    038E E78E      LDI	R24,0x7E
    038F E091      LDI	R25,1
    0390 2FE4      MOV	R30,R20
    0391 27FF      CLR	R31
    0392 0FE8      ADD	R30,R24
    0393 1FF9      ADC	R31,R25
    0394 8020      LDD	R2,Z+0
    0395 9030017D  LDS	R3,checktemp
    0397 2432      EOR	R3,R2
    0398 9230017D  STS	checktemp,R3
    039A 9543      INC	R20
    039B 3140      CPI	R20,0x10
    039C F388      BCS	0x038E
(0287) 	   RxGsmAddr=3;RxUartAddr=1;RxUartWait=20;
    039D E083      LDI	R24,3
    039E 93800062  STS	RxGsmAddr,R24
    03A0 E081      LDI	R24,1
    03A1 93800072  STS	RxUartAddr,R24
    03A3 E184      LDI	R24,0x14
    03A4 E090      LDI	R25,0
    03A5 9390006E  STS	RxUartWait+1,R25
    03A7 9380006D  STS	RxUartWait,R24
(0288) 	   TxRomUart(writecal1,12);TxRamUart(writecaltemp,16);TxRamUart(&checktemp,1);
    03A9 E02C      LDI	R18,0xC
    03AA E030      LDI	R19,0
    03AB E40A      LDI	R16,0x4A
    03AC E010      LDI	R17,0
    03AD DEB1      RCALL	_TxRomUart
    03AE E120      LDI	R18,0x10
    03AF E030      LDI	R19,0
    03B0 E70E      LDI	R16,0x7E
    03B1 E011      LDI	R17,1
    03B2 DEBA      RCALL	_TxRamUart
    03B3 E021      LDI	R18,1
    03B4 E030      LDI	R19,0
    03B5 E70D      LDI	R16,0x7D
    03B6 E011      LDI	R17,1
    03B7 DEB5      RCALL	_TxRamUart
(0289) 	   return;
    03B8 C056      RJMP	0x040F
(0290) 	   }
(0291) 	   else {RxGsmAddr=1;return;}
    03B9 E081      LDI	R24,1
    03BA 93800062  STS	RxGsmAddr,R24
    03BC C052      RJMP	0x040F
(0292) 	  }
(0293) 	case(3)://判断写卡是否成功
(0294) 	  {
(0295) 	  if(RxUartAddr) return;
    03BD 90200072  LDS	R2,RxUartAddr
    03BF 2022      TST	R2
    03C0 F009      BEQ	0x03C2
    03C1 C04D      RJMP	0x040F
(0296) 	  if(CmpsRom(RxUartDbuf,RxUartLeng,writecal1,2)) {RxCalAddr=1;RxGsmAddr=1;OutToneCount=4;TxRomUart("EEWriteERROR ",13);TxRomUart("                ",16);return;}
    03C2 E082      LDI	R24,2
    03C3 838A      STD	Y+2,R24
    03C4 E48A      LDI	R24,0x4A
    03C5 E090      LDI	R25,0
    03C6 8399      STD	Y+1,R25
    03C7 8388      STD	Y+0,R24
    03C8 9120006F  LDS	R18,RxUartLeng
    03CA E703      LDI	R16,0x73
    03CB E010      LDI	R17,0
    03CC DEDE      RCALL	_CmpsRom
    03CD 2300      TST	R16
    03CE F099      BEQ	0x03E2
    03CF E081      LDI	R24,1
    03D0 93800061  STS	RxCalAddr,R24
    03D2 93800062  STS	RxGsmAddr,R24
    03D4 E084      LDI	R24,4
    03D5 93800066  STS	OutToneCount,R24
    03D7 E02D      LDI	R18,0xD
    03D8 E030      LDI	R19,0
    03D9 EB09      LDI	R16,0xB9
    03DA E010      LDI	R17,0
    03DB DE83      RCALL	_TxRomUart
    03DC E120      LDI	R18,0x10
    03DD E030      LDI	R19,0
    03DE EA08      LDI	R16,0xA8
    03DF E010      LDI	R17,0
    03E0 DE7E      RCALL	_TxRomUart
    03E1 C02D      RJMP	0x040F
(0297) 	  if(CmpsRom(RxUartDbuf+3,RxUartLeng,writecal1+3,1)) {RxCalAddr=1;RxGsmAddr=1;OutToneCount=4;TxRomUart("EEWriteERROR ",13);TxRomUart("                ",16);return;}
    03E2 E081      LDI	R24,1
    03E3 838A      STD	Y+2,R24
    03E4 E48D      LDI	R24,0x4D
    03E5 E090      LDI	R25,0
    03E6 8399      STD	Y+1,R25
    03E7 8388      STD	Y+0,R24
    03E8 9120006F  LDS	R18,RxUartLeng
    03EA E706      LDI	R16,0x76
    03EB E010      LDI	R17,0
    03EC DEBE      RCALL	_CmpsRom
    03ED 2300      TST	R16
    03EE F099      BEQ	0x0402
    03EF E081      LDI	R24,1
    03F0 93800061  STS	RxCalAddr,R24
    03F2 93800062  STS	RxGsmAddr,R24
    03F4 E084      LDI	R24,4
    03F5 93800066  STS	OutToneCount,R24
    03F7 E02D      LDI	R18,0xD
    03F8 E030      LDI	R19,0
    03F9 EB09      LDI	R16,0xB9
    03FA E010      LDI	R17,0
    03FB DE63      RCALL	_TxRomUart
    03FC E120      LDI	R18,0x10
    03FD E030      LDI	R19,0
    03FE EA08      LDI	R16,0xA8
    03FF E010      LDI	R17,0
    0400 DE5E      RCALL	_TxRomUart
    0401 C00D      RJMP	0x040F
(0298) 	  TxRomUart("EEWrite   OK ",13);//EE
    0402 E02D      LDI	R18,0xD
    0403 E030      LDI	R19,0
    0404 E90A      LDI	R16,0x9A
    0405 E010      LDI	R17,0
    0406 DE58      RCALL	_TxRomUart
(0299) 	  TxRomUart("                ",16);
    0407 E120      LDI	R18,0x10
    0408 E030      LDI	R19,0
    0409 EA08      LDI	R16,0xA8
    040A E010      LDI	R17,0
    040B DE53      RCALL	_TxRomUart
(0300) 	  RxGsmAddr=1;return;
    040C E081      LDI	R24,1
    040D 93800062  STS	RxGsmAddr,R24
    040F 9623      ADIW	R28,3
    0410 D14E      RCALL	pop_gset1
    0411 9508      RET
_RxCal:
    0412 D149      RCALL	push_gset1
    0413 9723      SBIW	R28,3
(0301) 	  }
(0302) 	}  
(0303) 	}  
(0304) //***************************************************************接收卡信息42//
(0305) void RxCal(void)
(0306)     {
(0307) 	switch(RxCalAddr)
    0414 91400061  LDS	R20,RxCalAddr
    0416 2755      CLR	R21
    0417 3040      CPI	R20,0
    0418 0745      CPC	R20,R21
    0419 F099      BEQ	0x042D
    041A 3041      CPI	R20,1
    041B E0E0      LDI	R30,0
    041C 075E      CPC	R21,R30
    041D F099      BEQ	0x0431
    041E 3042      CPI	R20,2
    041F E0E0      LDI	R30,0
    0420 075E      CPC	R21,R30
    0421 F179      BEQ	0x0451
    0422 3043      CPI	R20,3
    0423 E0E0      LDI	R30,0
    0424 075E      CPC	R21,R30
    0425 F409      BNE	0x0427
    0426 C055      RJMP	0x047C
    0427 3044      CPI	R20,4
    0428 E0E0      LDI	R30,0
    0429 075E      CPC	R21,R30
    042A F409      BNE	0x042C
    042B C0C5      RJMP	0x04F1
    042C C0EB      RJMP	0x0518
(0308) 	{
(0309) 	case(0)://检测停止
(0310) 	  {
(0311) 	  RxCalAddr=0;return;
    042D 2422      CLR	R2
    042E 92200061  STS	RxCalAddr,R2
    0430 C0E7      RJMP	0x0518
(0312) 	  }
(0313) 	case(1)://检测卡是否还在
(0314) 	  {
(0315) 	  if(!(PIND&0x04)) return;
    0431 9982      SBIC	0x10,2
    0432 C001      RJMP	0x0434
    0433 C0E4      RJMP	0x0518
(0316) 	  TxRomUart("EE           ",13);//GG
    0434 E02D      LDI	R18,0xD

⌨️ 快捷键说明

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