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

📄 write_card.lis

📁 环保型IC卡门禁系统的C程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module Write_Card.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Write_Card.c
 0000                   .dbfunc e Write_bit _Write_bit fV
 0000           ;              i -> R20
 0000           ;     Write_flag -> R22
                        .even
 0000           _Write_bit::
 0000 00D0              rcall push_gset2
 0002 602F              mov R22,R16
 0004                   .dbline -1
 0004                   .dbline 12
 0004           ; /*******************************************************************************
 0004           ; 
 0004           ;                              写卡 函数
 0004           ;                                                        
 0004           ; *******************************************************************************/
 0004           ; 
 0004           ; #include <iom8v.h>
 0004           ; #include <macros.h>
 0004           ; #include "lcd1602.h"
 0004           ; 
 0004           ; void Write_bit(unsigned char Write_flag)      //  写卡位标志
 0004           ; {
 0004                   .dbline 13
 0004           ;   unsigned char i=0 ;
 0004 4427              clr R20
 0006                   .dbline 15
 0006           ;   
 0006           ;   Reset_0 ;
 0006 88B3              in R24,0x18
 0008 8F7B              andi R24,191
 000A 88BB              out 0x18,R24
 000C                   .dbline 16
 000C           ;   CLK_0 ;               //  IC_Card 卡复位
 000C 88B3              in R24,0x18
 000E 8F77              andi R24,127
 0010 88BB              out 0x18,R24
 0012                   .dbline 17
 0012           ;   delay_nms(10);
 0012 0AE0              ldi R16,10
 0014 10E0              ldi R17,0
 0016 00D0              rcall _delay_nms
 0018                   .dbline 19
 0018           ;   
 0018           ;   Reset_1 ;                   //            把
 0018 C69A              sbi 0x18,6
 001A                   .dbline 20
 001A           ;   delay_nus(8) ;
 001A 08E0              ldi R16,8
 001C 10E0              ldi R17,0
 001E 00D0              rcall _delay_nus
 0020                   .dbline 21
 0020           ;   CLK_1 ;                     //            地
 0020 C79A              sbi 0x18,7
 0022                   .dbline 22
 0022           ;   delay_nus(44) ;
 0022 0CE2              ldi R16,44
 0024 10E0              ldi R17,0
 0026 00D0              rcall _delay_nus
 0028                   .dbline 23
 0028           ;   CLK_0 ;                     //            址
 0028 88B3              in R24,0x18
 002A 8F77              andi R24,127
 002C 88BB              out 0x18,R24
 002E                   .dbline 24
 002E           ;   delay_nus(8) ;
 002E 08E0              ldi R16,8
 0030 10E0              ldi R17,0
 0032 00D0              rcall _delay_nus
 0034                   .dbline 25
 0034           ;   Reset_0 ;                   //            加
 0034 88B3              in R24,0x18
 0036 8F7B              andi R24,191
 0038 88BB              out 0x18,R24
 003A                   .dbline 26
 003A           ;   delay_nus(10) ;
 003A 0AE0              ldi R16,10
 003C 10E0              ldi R17,0
 003E 00D0              rcall _delay_nus
 0040                   .dbline 27
 0040           ;   delay_nus(27) ;             //            到
 0040 0BE1              ldi R16,27
 0042 10E0              ldi R17,0
 0044 00D0              rcall _delay_nus
 0046                   .dbline 29
 0046           ;   
 0046           ;   for (i=1;i<Write_flag;i++)  //            要
 0046 41E0              ldi R20,1
 0048 0EC0              rjmp L5
 004A           L2:
 004A                   .dbline 30
 004A                   .dbline 31
 004A C79A              sbi 0x18,7
 004C                   .dbline 32
 004C 08E2              ldi R16,40
 004E 10E0              ldi R17,0
 0050 00D0              rcall _delay_nus
 0052                   .dbline 33
 0052 88B3              in R24,0x18
 0054 8F77              andi R24,127
 0056 88BB              out 0x18,R24
 0058                   .dbline 34
 0058 09E1              ldi R16,25
 005A 10E0              ldi R17,0
 005C 00D0              rcall _delay_nus
 005E                   .dbline 35
 005E 04E1              ldi R16,20
 0060 10E0              ldi R17,0
 0062 00D0              rcall _delay_nus
 0064                   .dbline 36
 0064           L3:
 0064                   .dbline 29
 0064 4395              inc R20
 0066           L5:
 0066                   .dbline 29
 0066 4617              cp R20,R22
 0068 80F3              brlo L2
 006A                   .dbline 38
 006A           ;   {
 006A           ;         CLK_1 ;                 //            写
 006A           ;       delay_nus(40) ;
 006A           ;         CLK_0 ;                 //            的
 006A           ;         delay_nus(25) ;
 006A           ;         delay_nus(20) ;         //            位
 006A           ;   }
 006A           ;   
 006A           ;   Reset_1 ;            //   写
 006A C69A              sbi 0x18,6
 006C                   .dbline 39
 006C           ;   delay_nus(50) ;      //
 006C 02E3              ldi R16,50
 006E 10E0              ldi R17,0
 0070 00D0              rcall _delay_nus
 0072                   .dbline 40
 0072           ;   Reset_0 ;            //   位   
 0072 88B3              in R24,0x18
 0074 8F7B              andi R24,191
 0076 88BB              out 0x18,R24
 0078                   .dbline 41
 0078           ;   delay_nus(10) ;      //   
 0078 0AE0              ldi R16,10
 007A 10E0              ldi R17,0
 007C 00D0              rcall _delay_nus
 007E                   .dbline 42
 007E           ;   CLK_1 ;              //   时
 007E C79A              sbi 0x18,7
 0080                   .dbline 43
 0080           ;   delay_nus(15000) ;   //
 0080 08E9              ldi R16,15000
 0082 1AE3              ldi R17,58
 0084 00D0              rcall _delay_nus
 0086                   .dbline 44
 0086           ;   CLK_0 ;              //   序
 0086 88B3              in R24,0x18
 0088 8F77              andi R24,127
 008A 88BB              out 0x18,R24
 008C                   .dbline 46
 008C           ;   
 008C           ;   Read_Card();         // 读卡
 008C 00D0              rcall _Read_Card
 008E                   .dbline -2
 008E           L1:
 008E 00D0              rcall pop_gset2
 0090                   .dbline 0 ; func end
 0090 0895              ret
 0092                   .dbsym r i 20 c
 0092                   .dbsym r Write_flag 22 c
 0092                   .dbend
 0092                   .dbfunc e Write_Card _Write_Card fV
 0092           ;              j -> R20
 0092           ;     Write_flag -> R22
 0092           ;              i -> R10
 0092           ;           flag -> R12
 0092           ;    Write_Value -> R14
                        .even
 0092           _Write_Card::
 0092 00D0              rcall push_gset5
 0094 E02E              mov R14,R16
 0096                   .dbline -1
 0096                   .dbline 50
 0096           ; }
 0096           ; 
 0096           ; void Write_Card(unsigned char Write_Value)       //  检测写位操作
 0096           ; {
 0096                   .dbline 52
 0096           ;                     //移位标志  //写位位置
 0096           ;   unsigned char i=0 , j = 0 , flag=0 , Write_flag=0 ;
 0096 AA24              clr R10
 0098                   .dbline 52
 0098 4427              clr R20
 009A                   .dbline 52
 009A CC24              clr R12
 009C                   .dbline 52
 009C 6627              clr R22
 009E                   .dbline 54
 009E           ;   
 009E           ;   for(j=0;j<Write_Value;j++)
 009E 1BC0              rjmp L10
 00A0           L7:
 00A0                   .dbline 55
 00A0           ;   {
 00A0                   .dbline 56
 00A0           ;     flag=0x01 ;
 00A0 CC24              clr R12
 00A2 C394              inc R12
 00A4                   .dbline 58
 00A4           ;   
 00A4           ;     if( IC_Codes_8[12] != 0 )             // 检测个位是否为0,不为0则写该位
 00A4 20900C00          lds R2,_IC_Codes_8+12
 00A8 2220              tst R2
 00AA 81F0              breq L11
 00AC                   .dbline 59
 00AC           ;     {
 00AC                   .dbline 60
 00AC           ;       for(i=0;i<8;i++)
 00AC AA24              clr R10
 00AE 0AC0              rjmp L17
 00B0           L14:
 00B0                   .dbline 61
 00B0           ;         {
 00B0                   .dbline 62
 00B0           ;         if ( (IC_Codes_8[12]&flag) != 0 )     // 检测到不为0的位则进行下面操作
 00B0 20900C00          lds R2,_IC_Codes_8+12
 00B4 2C20              and R2,R12
 00B6 21F0              breq L18
 00B8                   .dbline 63
 00B8           ;           {
 00B8                   .dbline 64
 00B8           ;             Write_flag = 104-i ;                      //  确定要写的位
 00B8 68E6              ldi R22,104
 00BA 6A19              sub R22,R10
 00BC                   .dbline 65
 00BC           ;                 Write_bit(Write_flag);                    //  写位
 00BC 062F              mov R16,R22
 00BE A0DF              rcall _Write_bit
 00C0                   .dbline 66
 00C0           ;           }
 00C0           L18:
 00C0                   .dbline 67
 00C0 CC0C              lsl R12
 00C2                   .dbline 68
 00C2           L15:
 00C2                   .dbline 60
 00C2 A394              inc R10
 00C4           L17:
 00C4                   .dbline 60

⌨️ 快捷键说明

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