?? sle4442.lst
字號:
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 + -