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

📄 read_card.lis

📁 环保型IC卡门禁系统的C程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module Read_Card.c
                        .area data(ram, con, rel)
 0000           _IC_Codes_8::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .blkb 15
                        .area idata
 0001 00000000000000000000      .word 0,0,0,0,0
 000B 0000000000        .byte 0,0,0,0,0
                        .area data(ram, con, rel)
 0010                   .dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Read_Card.c
 0010                   .dbsym e IC_Codes_8 _IC_Codes_8 A[16:16]c
 0010           _Wrong_flag::
 0010                   .blkb 1
                        .area idata
 0010 00                .byte 0
                        .area data(ram, con, rel)
 0011                   .dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Read_Card.c
 0011                   .dbsym e Wrong_flag _Wrong_flag c
                        .area lit(rom, con, rel)
 0000           L2:
 0000 00                .byte 0
 0001 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 003D 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 0079 00000000000000    .byte 0,0,0,0,0,0,0
                        .area text(rom, con, rel)
 0000                   .dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Read_Card.c
 0000                   .dbfunc e Read_Card _Read_Card fV
 0000           ;     IC_Codes_2 -> y+0
 0000           ;              i -> R20
 0000           ;              k -> R22
 0000           ;              j -> R10
                        .even
 0000           _Read_Card::
 0000 00D0              rcall push_gset3
 0002 EF97              sbiw R28,63
 0004 EF97              sbiw R28,63
 0006 2297              sbiw R28,2  ; offset = 128
 0008                   .dbline -1
 0008                   .dbline 14
 0008           ; /*******************************************************************************
 0008           ; 
 0008           ;                              读卡、显示 函数
 0008           ;                                                        
 0008           ; *******************************************************************************/
 0008           ; 
 0008           ; #include <iom8v.h>
 0008           ; #include <macros.h>
 0008           ; #include "lcd1602.h"
 0008           ; 
 0008           ; unsigned char IC_Codes_8[16]={0} , Wrong_flag = 0 ;
 0008           ; 
 0008           ; void Read_Card(void)
 0008           ; {                              // 卡内 128 bit 数据  // 卡内 16 字节数据 
 0008                   .dbline 15
 0008           ;   unsigned char i=0 , j=0 , k=0 , IC_Codes_2[128]={0} ;
 0008 4427              clr R20
 000A                   .dbline 15
 000A AA24              clr R10
 000C                   .dbline 15
 000C 6627              clr R22
 000E                   .dbline 15
 000E 80E0              ldi R24,<L2
 0010 90E0              ldi R25,>L2
 0012 FE01              movw R30,R28
 0014 00E8              ldi R16,128
 0016 10E0              ldi R17,0
 0018 FA93              st -y,R31
 001A EA93              st -y,R30
 001C 9A93              st -y,R25
 001E 8A93              st -y,R24
 0020 00D0              rcall asgncblk
 0022                   .dbline 17
 0022           ;   
 0022           ;   for(i=0;i<16;i++)
 0022 09C0              rjmp L6
 0024           L3:
 0024                   .dbline 18
 0024                   .dbline 19
 0024 80E0              ldi R24,<_IC_Codes_8
 0026 90E0              ldi R25,>_IC_Codes_8
 0028 E42F              mov R30,R20
 002A FF27              clr R31
 002C E80F              add R30,R24
 002E F91F              adc R31,R25
 0030 2224              clr R2
 0032 2082              std z+0,R2
 0034                   .dbline 20
 0034           L4:
 0034                   .dbline 17
 0034 4395              inc R20
 0036           L6:
 0036                   .dbline 17
 0036 4031              cpi R20,16
 0038 A8F3              brlo L3
 003A                   .dbline 22
 003A           ;   {
 003A           ;     IC_Codes_8[i] = 0 ;
 003A           ;   }
 003A           ;   
 003A           ;   Reset_0 ;          
 003A 88B3              in R24,0x18
 003C 8F7B              andi R24,191
 003E 88BB              out 0x18,R24
 0040                   .dbline 23
 0040           ;   CLK_0 ;               //  IC_Card 卡复位
 0040 88B3              in R24,0x18
 0042 8F77              andi R24,127
 0044 88BB              out 0x18,R24
 0046                   .dbline 24
 0046           ;   delay_nms(10);
 0046 0AE0              ldi R16,10
 0048 10E0              ldi R17,0
 004A 00D0              rcall _delay_nms
 004C                   .dbline 26
 004C           ;   
 004C           ;   Reset_1 ;                    // 要使地址计数器复位"0",先让Resct复位端由
 004C C69A              sbi 0x18,6
 004E                   .dbline 27
 004E           ;   delay_nus(8) ;               // "0"变成"1",然后跟着一个Clock脉冲从"0"变
 004E 08E0              ldi R16,8
 0050 10E0              ldi R17,0
 0052 00D0              rcall _delay_nus
 0054                   .dbline 28
 0054           ;   CLK_1 ;                      // 成"1"再降回"0"电平,Resct复位端再至"0",
 0054 C79A              sbi 0x18,7
 0056                   .dbline 29
 0056           ;   delay_nus(44) ;              // 把Clock脉冲包住,随着Reset端变低,地址0单
 0056 0CE2              ldi R16,44
 0058 10E0              ldi R17,0
 005A 00D0              rcall _delay_nus
 005C                   .dbline 30
 005C           ;   CLK_0 ;                      // 元的数据从I/O上输出。对应 Clock端的每个脉
 005C 88B3              in R24,0x18
 005E 8F77              andi R24,127
 0060 88BB              out 0x18,R24
 0062                   .dbline 31
 0062           ;   delay_nus(8) ;               // 冲,其上升沿使地址计数器增加。其下降沿使被
 0062 08E0              ldi R16,8
 0064 10E0              ldi R17,0
 0066 00D0              rcall _delay_nus
 0068                   .dbline 32
 0068           ;   Reset_0 ;                    // 选通地址单元的数据从I/O上输出。地址计数器
 0068 88B3              in R24,0x18
 006A 8F7B              andi R24,191
 006C 88BB              out 0x18,R24
 006E                   .dbline 33
 006E           ;   delay_nus(5) ;               // 增加到127后返回到0
 006E 05E0              ldi R16,5
 0070 10E0              ldi R17,0
 0072 00D0              rcall _delay_nus
 0074                   .dbline 34
 0074           ;   if ( (PINB&0x02)==0 )
 0074 B199              sbic 0x16,1
 0076 03C0              rjmp L7
 0078                   .dbline 35
 0078           ;   {
 0078                   .dbline 36
 0078           ;       IC_Codes_2[0] = 0 ;    //读取IC卡I/O口输出的是电平 (地址0上的数据)
 0078 2224              clr R2
 007A 2882              std y+0,R2
 007C                   .dbline 37
 007C           ;   }
 007C 02C0              rjmp L8
 007E           L7:
 007E                   .dbline 39
 007E           ;   else                     
 007E           ;   {                       //并把电平值记入数组IC_Card_2[128]中
 007E                   .dbline 40
 007E           ;       IC_Codes_2[0] = 1;     
 007E 81E0              ldi R24,1
 0080 8883              std y+0,R24
 0082                   .dbline 41
 0082           ;   }
 0082           L8:
 0082                   .dbline 42
 0082           ;   delay_nus(27) ;
 0082 0BE1              ldi R16,27
 0084 10E0              ldi R17,0
 0086 00D0              rcall _delay_nus
 0088                   .dbline 44
 0088           ;   
 0088           ;   for (i=1;i<128;i++)
 0088 41E0              ldi R20,1
 008A 1FC0              rjmp L12
 008C           L9:
 008C                   .dbline 45
 008C           ;   {
 008C                   .dbline 46
 008C           ;       CLK_1 ;
 008C C79A              sbi 0x18,7
 008E                   .dbline 47
 008E           ;     delay_nus(40) ;
 008E 08E2              ldi R16,40
 0090 10E0              ldi R17,0
 0092 00D0              rcall _delay_nus
 0094                   .dbline 48
 0094           ;       CLK_0 ;
 0094 88B3              in R24,0x18
 0096 8F77              andi R24,127
 0098 88BB              out 0x18,R24
 009A                   .dbline 49
 009A           ;       delay_nus(20) ;
 009A 04E1              ldi R16,20

⌨️ 快捷键说明

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