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

📄 ic_card.lst

📁 环保型IC卡门禁系统的C程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
FILE: D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\display.c
(0001) #include <iom8v.h>
(0002) #include <macros.h>
(0003) #include "lcd1602.h"
(0004) 
(0005) void display(unsigned char Num , unsigned char position)
(0006) {
(0007)   unsigned char line=0 ;
    03A8 2766      CLR	R22
(0008)   
(0009)   if(position<16)  { line=0; }
    03A9 3140      CPI	R20,0x10
    03AA F408      BCC	0x03AC
    03AB C002      RJMP	0x03AE
(0010)   else      { position -= 16 ;  line=1; }
    03AC 5140      SUBI	R20,0x10
    03AD E061      LDI	R22,1
(0011)   
(0012)   switch (Num) 
    03AE 24BB      CLR	R11
    03AF 01C5      MOVW	R24,R10
    03B0 3080      CPI	R24,0
    03B1 E0E0      LDI	R30,0
    03B2 079E      CPC	R25,R30
    03B3 F40C      BGE	0x03B5
    03B4 C099      RJMP	0x044E
    03B5 E180      LDI	R24,0x10
    03B6 158A      CP	R24,R10
    03B7 059B      CPC	R25,R11
    03B8 F40C      BGE	0x03BA
    03B9 C094      RJMP	0x044E
    03BA E002      LDI	R16,2
    03BB E010      LDI	R17,0
    03BC 0195      MOVW	R18,R10
    03BD D6F8      RCALL	empy16s
    03BE 01F8      MOVW	R30,R16
    03BF E286      LDI	R24,0x26
    03C0 E090      LDI	R25,0
    03C1 0FE8      ADD	R30,R24
    03C2 1FF9      ADC	R31,R25
    03C3 9005      LPM	R0,Z+
    03C4 9014      LPM	R1,0(Z)
    03C5 01F0      MOVW	R30,R0
    03C6 9409      IJMP
(0013)   {
(0014) 	case 0 : LCD_write_string(position,line,"0");
    03C7 EF82      LDI	R24,0xF2
    03C8 E090      LDI	R25,0
    03C9 8399      STD	Y+1,R25
    03CA 8388      STD	Y+0,R24
    03CB 2F26      MOV	R18,R22
    03CC 2F04      MOV	R16,R20
    03CD D19B      RCALL	_LCD_write_string
(0015) 	         break ;
    03CE C07F      RJMP	0x044E
(0016) 	case 1 : LCD_write_string(position,line,"1");
    03CF EF80      LDI	R24,0xF0
    03D0 E090      LDI	R25,0
    03D1 8399      STD	Y+1,R25
    03D2 8388      STD	Y+0,R24
    03D3 2F26      MOV	R18,R22
    03D4 2F04      MOV	R16,R20
    03D5 D193      RCALL	_LCD_write_string
(0017) 	         break ;
    03D6 C077      RJMP	0x044E
(0018) 	case 2 : LCD_write_string(position,line,"2");
    03D7 EE8E      LDI	R24,0xEE
    03D8 E090      LDI	R25,0
    03D9 8399      STD	Y+1,R25
    03DA 8388      STD	Y+0,R24
    03DB 2F26      MOV	R18,R22
    03DC 2F04      MOV	R16,R20
    03DD D18B      RCALL	_LCD_write_string
(0019) 	         break ;
    03DE C06F      RJMP	0x044E
(0020) 	case 3 : LCD_write_string(position,line,"3");
    03DF EE8C      LDI	R24,0xEC
    03E0 E090      LDI	R25,0
    03E1 8399      STD	Y+1,R25
    03E2 8388      STD	Y+0,R24
    03E3 2F26      MOV	R18,R22
    03E4 2F04      MOV	R16,R20
    03E5 D183      RCALL	_LCD_write_string
(0021) 	         break ;
    03E6 C067      RJMP	0x044E
(0022) 	case 4 : LCD_write_string(position,line,"4");
    03E7 EE8A      LDI	R24,0xEA
    03E8 E090      LDI	R25,0
    03E9 8399      STD	Y+1,R25
    03EA 8388      STD	Y+0,R24
    03EB 2F26      MOV	R18,R22
    03EC 2F04      MOV	R16,R20
    03ED D17B      RCALL	_LCD_write_string
(0023) 	         break ;
    03EE C05F      RJMP	0x044E
(0024) 	case 5 : LCD_write_string(position,line,"5");
    03EF EE88      LDI	R24,0xE8
    03F0 E090      LDI	R25,0
    03F1 8399      STD	Y+1,R25
    03F2 8388      STD	Y+0,R24
    03F3 2F26      MOV	R18,R22
    03F4 2F04      MOV	R16,R20
    03F5 D173      RCALL	_LCD_write_string
(0025) 	         break ;
    03F6 C057      RJMP	0x044E
(0026) 	case 6 : LCD_write_string(position,line,"6");
    03F7 EE86      LDI	R24,0xE6
    03F8 E090      LDI	R25,0
    03F9 8399      STD	Y+1,R25
    03FA 8388      STD	Y+0,R24
    03FB 2F26      MOV	R18,R22
    03FC 2F04      MOV	R16,R20
    03FD D16B      RCALL	_LCD_write_string
(0027) 	         break ;
    03FE C04F      RJMP	0x044E
(0028) 	case 7 : LCD_write_string(position,line,"7");
    03FF EE84      LDI	R24,0xE4
    0400 E090      LDI	R25,0
    0401 8399      STD	Y+1,R25
    0402 8388      STD	Y+0,R24
    0403 2F26      MOV	R18,R22
    0404 2F04      MOV	R16,R20
    0405 D163      RCALL	_LCD_write_string
(0029) 	         break ;
    0406 C047      RJMP	0x044E
(0030) 	case 8 : LCD_write_string(position,line,"8");
    0407 EE82      LDI	R24,0xE2
    0408 E090      LDI	R25,0
    0409 8399      STD	Y+1,R25
    040A 8388      STD	Y+0,R24
    040B 2F26      MOV	R18,R22
    040C 2F04      MOV	R16,R20
    040D D15B      RCALL	_LCD_write_string
(0031) 	         break ;
    040E C03F      RJMP	0x044E
(0032) 	case 9 : LCD_write_string(position,line,"9");
    040F EE80      LDI	R24,0xE0
    0410 E090      LDI	R25,0
    0411 8399      STD	Y+1,R25
    0412 8388      STD	Y+0,R24
    0413 2F26      MOV	R18,R22
    0414 2F04      MOV	R16,R20
    0415 D153      RCALL	_LCD_write_string
(0033) 	         break ;
    0416 C037      RJMP	0x044E
(0034) 	case 10 : LCD_write_string(position,line,"a");
    0417 ED8E      LDI	R24,0xDE
    0418 E090      LDI	R25,0
    0419 8399      STD	Y+1,R25
    041A 8388      STD	Y+0,R24
    041B 2F26      MOV	R18,R22
    041C 2F04      MOV	R16,R20
    041D D14B      RCALL	_LCD_write_string
(0035) 	         break ;
    041E C02F      RJMP	0x044E
(0036) 	case 11 : LCD_write_string(position,line,"b");
    041F ED8C      LDI	R24,0xDC
    0420 E090      LDI	R25,0
    0421 8399      STD	Y+1,R25
    0422 8388      STD	Y+0,R24
    0423 2F26      MOV	R18,R22
    0424 2F04      MOV	R16,R20
    0425 D143      RCALL	_LCD_write_string
(0037) 	         break ;
    0426 C027      RJMP	0x044E
(0038) 	case 12 : LCD_write_string(position,line,"c");
    0427 ED8A      LDI	R24,0xDA
    0428 E090      LDI	R25,0
    0429 8399      STD	Y+1,R25
    042A 8388      STD	Y+0,R24
    042B 2F26      MOV	R18,R22
    042C 2F04      MOV	R16,R20
    042D D13B      RCALL	_LCD_write_string
(0039) 	         break ;
    042E C01F      RJMP	0x044E
(0040) 	case 13 : LCD_write_string(position,line,"d");
    042F ED88      LDI	R24,0xD8
    0430 E090      LDI	R25,0
    0431 8399      STD	Y+1,R25
    0432 8388      STD	Y+0,R24
    0433 2F26      MOV	R18,R22
    0434 2F04      MOV	R16,R20
    0435 D133      RCALL	_LCD_write_string
(0041) 	         break ;
    0436 C017      RJMP	0x044E
(0042) 	case 14 : LCD_write_string(position,line,"e");
    0437 ED86      LDI	R24,0xD6
    0438 E090      LDI	R25,0
    0439 8399      STD	Y+1,R25
    043A 8388      STD	Y+0,R24
    043B 2F26      MOV	R18,R22
    043C 2F04      MOV	R16,R20
    043D D12B      RCALL	_LCD_write_string
(0043) 	         break ;
    043E C00F      RJMP	0x044E
(0044) 	case 15 : LCD_write_string(position,line,"f");
    043F ED84      LDI	R24,0xD4
    0440 E090      LDI	R25,0
    0441 8399      STD	Y+1,R25
    0442 8388      STD	Y+0,R24
    0443 2F26      MOV	R18,R22
    0444 2F04      MOV	R16,R20
    0445 D123      RCALL	_LCD_write_string
(0045) 	         break ;
    0446 C007      RJMP	0x044E
(0046) 	case 16 : LCD_write_string(position,line,"*");
    0447 ED82      LDI	R24,0xD2
    0448 E090      LDI	R25,0
    0449 8399      STD	Y+1,R25
    044A 8388      STD	Y+0,R24
    044B 2F26      MOV	R18,R22
    044C 2F04      MOV	R16,R20
    044D D11B      RCALL	_LCD_write_string
(0047) 	         break ;
(0048)   }
(0049)   delay_nms(2);
    044E E002      LDI	R16,2
    044F E010      LDI	R17,0
    0450 DF46      RCALL	_delay_nms
    0451 9622      ADIW	R28,2
    0452 D675      RCALL	pop_gset3
    0453 9508      RET
FILE: D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\EEPROM_R_W.C
(0001) #include <iom8v.h>
(0002) #include <macros.h>
(0003)                      
(0004) void EEPROM_write(unsigned int uiAddress, unsigned char ucData)
(0005) {
(0006) /* 等待上一次写操作结束 */
(0007) while(EECR & (1<<EEWE))
_EEPROM_write:
  ucData               --> R18
  uiAddress            --> R16
    0454 99E1      SBIC	0x1C,1
    0455 CFFE      RJMP	_EEPROM_write
(0008) ;
(0009) /* 设置地址和数据寄存器 */
(0010) EEAR = uiAddress;
    0456 BB1F      OUT	0x1F,R17
    0457 BB0E      OUT	0x1E,R16
(0011) EEDR = ucData;
    0458 BB2D      OUT	0x1D,R18
(0012) /* 置位EEMWE */
(0013) EECR |= (1<<EEMWE);
    0459 9AE2      SBI	0x1C,2
(0014) /* 置位EEWE以启动写操作 */
(0015) EECR |= (1<<EEWE);
    045A 9AE1      SBI	0x1C,1
    045B 9508      RET
(0016) }
(0017) 
(0018) unsigned char EEPROM_read(unsigned int uiAddress)
(0019) {
(0020) /* 等待上一次写操作结束 */
(0021) while(EECR & (1<<EEWE))
_EEPROM_read:
  uiAddress            --> R16
    045C 99E1      SBIC	0x1C,1
    045D CFFE      RJMP	_EEPROM_read
(0022) ;
(0023) /* 设置地址寄存器 */
(0024) EEAR = uiAddress;
    045E BB1F      OUT	0x1F,R17
    045F BB0E      OUT	0x1E,R16
(0025) /* 设置EERE以启动读操作 */
(0026) EECR |= (1<<EERE);
    0460 9AE0      SBI	0x1C,0
(0027) /* 自数据寄存器返回数据 */
(0028) return EEDR;
    0461 B30D      IN	R16,0x1D
    0462 9508      RET
_Erase_bit:
  i                    --> R20
  Erase_flag           --> R22
    0463 D670      RCALL	push_gset2
    0464 2F60      MOV	R22,R16
FILE: D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Erase_Card.c
(0001) /*******************************************************************************
(0002) 
(0003)                             擦除高字节 函数
(0004) 							 
(0005) *******************************************************************************/
(0006) 
(0007) #include <iom8v.h>
(0008) #include <macros.h>
(0009) #include "lcd1602.h"
(0010) 
(0011) unsigned char  Erase_IC_FLAG=0 ;  // 擦除高位标志
(0012) 
(0013) void Erase_bit(unsigned char Erase_flag)         // 擦除位函数
(0014) {
(0015)   unsigned char i=0 ;
    0465 2744      CLR	R20
(0016)   
(0017)   Reset_0 ;
    0466 B388      IN	R24,0x18
    0467 7B8F      ANDI	R24,0xBF
    0468 BB88      OUT	0x18,R24
(0018)   CLK_0 ;               //  IC_Card 卡复位
    0469 B388      IN	R24,0x18
    046A 778F      ANDI	R24,0x7F
    046B BB88      OUT	0x18,R24
(0019)   delay_nms(10);
    046C E00A      LDI	R16,0xA
    046D E010      LDI	R17,0
    046E DF28      RCALL	_delay_nms
(0020)   
(0021)   Reset_1 ;                   //            把
    046F 9AC6      SBI	0x18,6
(0022)   delay_nus(8) ;
    0470 E008      LDI	R16,0x8
    0471 E010      LDI	R17,0
    0472 DF0D      RCALL	_delay_nus
(0023)   CLK_1 ;                     //            地
    0473 9AC7      SBI	0x18,7
(0024)   delay_nus(44) ;
    0474 E20C      LDI	R16,0x2C
    0475 E010      LDI	R17,0
    0476 DF09      RCALL	_delay_nus
(0025)   CLK_0 ;                     //            址
    0477 B388      IN	R24,0x18
    0478 778F      ANDI	R24,0x7F
    0479 BB88      OUT	0x18,R24
(0026)   delay_nus(8) ;
    047A E008      LDI	R16,0x8
    047B E010      LDI	R17,0
    047C DF03      RCALL	_delay_nus
(0027)   Reset_0 ;                   //            加
    047D B388      IN	R24,0x18
    047E 7B8F      ANDI	R24,0xBF
    047F BB88      OUT	0x18,R24
(0028)   delay_nus(10) ;
    0480 E00A      LDI	R16,0xA
    0481 E010      LDI	R17,0
    0482 DEFD      RCALL	_delay_nus
(0029)   delay_nus(27) ;             //            到
    0483 E10B      LDI	R16,0x1B
    0484 E010      LDI	R17,0
    0485 DEFA      RCALL	_delay_nus
(0030)   
(0031)   for (i=0;i<Erase_flag;i++)  //            要
    0486 C00E      RJMP	0x0495
(0032)   {
(0033) 	  CLK_1 ;                 //            擦
    0487 9AC7      SBI	0x18,7
(0034)       delay_nus(40) ;
    0488 E208      LDI	R16,0x28
    0489 E010      LDI	R17,0
    048A DEF5      RCALL	_delay_nus
(0035) 	  CLK_0 ;                 //            的
    048B B388      IN	R24,0x18
    048C 778F      ANDI	R24,0x7F
    048D BB88      OUT	0x18,R24
(0036) 	  delay_nus(25) ;
    048E E109      LDI	R16,0x19
    048F E010      LDI	R17,0
    0490 DEEF      RCALL	_delay_nus
(0037) 	  delay_nus(20) ;         //            位
    0491 E104      LDI	R16,0x14
    0492 E010      LDI	R17,0
    0493 DEEC      RCALL	_delay_nus
    0494 9543      INC	R20
    0495 1746      CP	R20,R22
    0496 F380      BCS	0x0487
(0038)   }
(0039)   
(0040)   Reset_1 ;            //  擦
    0497 9AC6      SBI	0x18,6
(0041)   delay_nus(50) ;
    0498 E302      LDI	R16,0x32
    0499 E010      LDI	R17,0
    049A DEE5      RCALL	_delay_nus
(0042)   Reset_0 ;            //  除
    049B B388      IN	R24,0x18
    049C 7B8F      ANDI	R24,0xBF
    049D BB88      OUT	0x18,R24
(0043)   delay_nus(10) ;
    049E E00A      LDI	R16,0xA
    049F E010      LDI	R17,0
    04A0 DEDF      RCALL	_delay_nus
(0044)   CLK_1 ;              //  字
    04A1 9AC7      SBI	0x18,7
(0045)   delay_nus(15000) ;
    04A2 E908      LDI	R16,0x98
    04A3 E31A      LDI	R17,0x3A
    04A4 DEDB      RCALL	_delay_nus
(0046)   CLK_0 ;              //  节
    04A5 B388      IN	R24,0x18
    04A6 778F      ANDI	R24,0x7F
    04A7 BB88      OUT	0x18,R24
(0047)   delay_nus(50) ;
    04A8 E302      LDI	R16,0x32
    04A9 E010      LDI	R17,0
    04AA DED5      RCALL	_delay_nus
(0048)   Reset_1 ;            //  
    04AB 9AC6      SBI	0x18,6
(0049)   delay_nus(50) ;
    04AC E302      LDI	R16,0x32
    04AD E010      LDI	R17,0
    04AE DED1      RCALL	_delay_nus
(0050)   Reset_0 ;            //  时
    04AF B388      IN	R24,0x18
    04B0 7B8F      ANDI	R24,0xBF
    04B1 BB88      OUT	0x18,R24
(0051)   delay_nus(100) ;
    04B2 E604      LDI	R16,0x64
    04B3 E010      LDI	R17,0
    04B4 DECB      RCALL	_delay_nus
(0052)   CLK_1 ;              //  
    04B5 9AC7      SBI	0x18,7
(0053)   delay_nus(50000) ;
    04B6 E500      LDI	R16,0x50
    04B7 EC13      LDI	R17,0xC3
    04B8 DEC7      RCALL	_delay_nus
(0054)   CLK_0 ;              //  序
    04B9 B388      IN	R24,0x18
    04BA 778F      ANDI	R24,0x7F
    04BB BB88      OUT	0x18,R24
(0055)   
(0056)   Read_Card();
    04BC D45A      RCALL	_Read_Card

⌨️ 快捷键说明

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