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

📄 sle4442.lst

📁 sle4442源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
A51 MACRO ASSEMBLER  SLE4442                                                              09/16/2003 19:50:59 PAGE     1


MACRO ASSEMBLER A51 V7.01
OBJECT MODULE PLACED IN SLE4442.OBJ
ASSEMBLER INVOKED BY: C:\KEIL\C51\BIN\A51.EXE SLE4442.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;This is the TEST program for SLE4442 IC_Card.
                       2     
                       3     ;***************变量定义*****************
  0055                 4     ErrCnt          DATA    55H             ;错误计数器
  0056                 5     STATUS          DATA    56H             ;状态寄存器,56H.1=1学习
  0057                 6     DeadLock        DATA    57H             ;死锁标志寄存器,57H.1=1死锁
                       7     
                       8     ;***************口线定义*************************
  0080                 9     Dead            BIT     P0.0            ;死锁状态指示灯
  0082                10     Invalid         BIT     P0.2            ;非法卡指示灯
  0083                11     Lock            BIT     P0.3            ;锁指示灯
  0084                12     Study           BIT     P0.4            ;学习状态指示灯
                      13     ;****************************************
4000                  14             ORG     4000H
4000 2100             15             AJMP    MAIN
                      16             
4100                  17             ORG     4100H
4100                  18     MAIN:
4100 758160           19             MOV     SP,#60H                 ;设置栈底
4103                  20     Read_Insert_Card:
4103 750100           21             MOV     SubAdr,#00H             ;卡号首址       (读20H-2f单元的值)
4106 12410B           22             LCALL   ReadCard                ;调用读卡子程序;卡号存放在ReadBuf(30H~3FH)中
4109 2103             23             ajmp    Read_Insert_Card
                      24     ;$include (SLE4442.INC) ;包含SLE4442驱动程序
                +1    25     ;*****************************************************************************
                +1    26     ;                    SLE4442驱动程序说明                                     *
                +1    27     ;ReadCard 读出从SubAdr开始的ByteCnt字节,结果存放于(RcvDat)中,读出正确,ACC中返*
                +1    28     ;回#0,返回#01表示无效卡或者卡损坏,(注读函数已经对数据进行了校验)             *
                +1    29     ;*****************************************************************************
                +1    30            
                +1    31     ;*************IC卡位定义*************************
  0094          +1    32     ICin            BIT     P1.4                    ;IC卡插入连锁端口
  00A0          +1    33     VCC1            BIT     P2.0                    ;IC卡电源控制端口 
  0091          +1    34     RST             BIT     P1.1                    ;IC卡复位端  
  0092          +1    35     SD              BIT     P1.2                    ;IC卡数据线  
  0090          +1    36     CLK             BIT     P1.0                    ;IC卡时钟线  
  0087          +1    37     ICN             BIT     P0.7                    ;IC卡短路检测端口
                +1    38     
                +1    39     ;*******************变量定义**********99999*********
  0030          +1    40     ReadBuf         EQU     30H             ;读IC卡缓冲区首址
  0040          +1    41     WriteBuf        EQU     40H             ;写IC卡缓冲区首址
  0001          +1    42     SubAdr          Data    01H             ;被控器单元地址
  0002          +1    43     BitCnt          Data    02H             ;I2C数据位计数器
  0003          +1    44     ByteCnt         Data    03H             ;I2C数据字节计数器
                +1    45     
                +1    46     ;*************IC卡常数***************************
  00A2          +1    47     Idetify1        EQU     0A2H                    ;此处为IC卡保护区00~03单元的值,用于识别卡
  0013          +1    48     Idetify2        EQU     13H
  0010          +1    49     Idetify3        EQU     10H
  0091          +1    50     Idetify4        EQU     91H     
                +1    51     ;************************************************
                +1    52     
410B            +1    53     ReadCard:
410B C005       +1    54             PUSH    05H
410D C002       +1    55             PUSH    02H
410F C000       +1    56             PUSH    00H
4111 31A9       +1    57             ACALL   ANRST                           ;
4113 7014       +1    58             JNZ     ReadExit                        ;       
A51 MACRO ASSEMBLER  SLE4442                                                              09/16/2003 19:50:59 PAGE     2

4115 AD01       +1    59             MOV     R5,SubAdr                       ;被控器件地址单元
4117 7830       +1    60             MOV     R0,#ReadBuf                     ;读缓冲区
4119 7A10       +1    61             MOV     R2,#16                          ;16个字节
411B 316C       +1    62             ACALL   Remm                            ;读主存储器
411D 7830       +1    63             MOV     R0,#ReadBuf                     ;
411F 7A0E       +1    64             mov     R2,#14                          ;
4121 E6         +1    65             MOV     A,@R0                           ;
4122            +1    66     checksum:                                       ;和校验
4122 08         +1    67             INC     R0
4123 66         +1    68             XRL     A,@R0                           ;
4124 DAFC       +1    69             DJNZ    R2,checksum                     ;
4126 08         +1    70             INC     R0                              ;
4127 C3         +1    71             CLR     C                               ;
4128 96         +1    72             SUBB    A,@R0                           ;校验后返回值在ACC中
4129            +1    73     ReadExit:
4129 D000       +1    74             POP     00H
412B D002       +1    75             POP     02H
412D D005       +1    76             POP     05H
412F 22         +1    77             RET
                +1    78     
                +1    79     ;***************************************
                +1    80     ;发送命令子程序
                +1    81     ;参数R4,R5,R6分别是命令、地址、数据字节
                +1    82     ;***************************************
4130            +1    83     SendComm:
4130 C0E0       +1    84             PUSH    ACC
4132 D292       +1    85             SETB    SD                              ;产生开始条件
4134 5103       +1    86             ACALL   Delay10uS            
4136 D290       +1    87             SETB    CLK
4138 5103       +1    88             ACALL   Delay10uS              
413A C292       +1    89             CLR     SD                    
413C 5103       +1    90             ACALL   Delay10uS              
413E C290       +1    91             CLR     CLK
4140 EC         +1    92             MOV     A,R4                            ;命令字节
4141 3158       +1    93             ACALL   SendByte1                       ;发送
4143 ED         +1    94             MOV     A,R5                            ;地址字节
4144 3158       +1    95             ACALL   SendByte1                       ;发送
4146 EE         +1    96             MOV     A,R6                            ;数据字节
4147 3158       +1    97             ACALL   SendByte1                       ;发送
4149 C292       +1    98             CLR     SD                              ;                
414B 5103       +1    99             ACALL   Delay10uS                       ;
414D D290       +1   100             SETB    CLK                             ;
414F 5103       +1   101             ACALL   Delay10uS              
4151 D292       +1   102             SETB    sd                              ;产生停止条件
4153 5103       +1   103             ACALL   Delay10uS                       ;
4155 D0E0       +1   104             POP     ACC
4157 22         +1   105             RET
                +1   106     
                +1   107     ;**************发送字节子程序********************
4158            +1   108     SendByte1:
4158 C003       +1   109             PUSH    03H
415A 7B08       +1   110             MOV     R3,#8                           ;位计数器
415C            +1   111     SendLoop:
415C 13         +1   112             RRC     A                     
415D 9292       +1   113             MOV     SD,C                            ;送1位到数据线上
415F 5103       +1   114             ACALL   Delay10uS                       ;
4161 D290       +1   115             SETB    CLK
4163 5103       +1   116             ACALL   Delay10uS                       ;
4165 C290       +1   117             CLR     CLK
4167 DBF3       +1   118             DJNZ    R3,SendLoop                     ;送完了吗?
4169 D003       +1   119             POP     03H
416B 22         +1   120             RET
                +1   121     
                +1   122     ;**************************************************
                +1   123     ;R2--字节数, R5--起始地址,@R0--返回数据
                +1   124     ;**************************************************
A51 MACRO ASSEMBLER  SLE4442                                                              09/16/2003 19:50:59 PAGE     3

416C            +1   125     Remm:      
416C C004       +1   126             PUSH    04H                             ;读主存储器
416E 7C30       +1   127             mov     R4,#30h            
                +1   128             
4170 C003       +1   129             PUSH    03H
4172 C002       +1   130             PUSH    02H
4174 C000       +1   131             PUSH    00H
4176 3130       +1   132             Acall   SendComm                        ;调用发送命令子程序
4178            +1   133     Remm2:    
4178 E4         +1   134             CLR     A
4179 7B08       +1   135             MOV     R3,#8                           ;8个bit
417B            +1   136     Remm1:   
417B C290       +1   137             CLR     CLK
417D 00         +1   138             NOP                                     ;延时4ms
417E 00         +1   139             NOP
417F 00         +1   140             NOP
4180 00         +1   141             NOP
4181 D292       +1   142             SETB    SD                              ;取出这1位
4183 00         +1   143             NOP
4184 A292       +1   144             MOV     C,SD

⌨️ 快捷键说明

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