📄 sle4442.lst
字号:
C51 COMPILER V6.23a SLE4442 08/23/2003 10:33:26 PAGE 1
C51 COMPILER V6.23a, COMPILATION OF MODULE SLE4442
OBJECT MODULE PLACED IN sle4442.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE sle4442.c DEBUG OBJECTEXTEND
stmt level source
1
2 #include <stdio.h>
3 #include <intrins.h>
4 #include <reg51.h>
5 #include <sle4442.h>
6 /*********************************************************************
7
8 函 数 名: ReadMainMem()
9 功 能: 读ic卡主存
10 说 明:
11 调 用:
12 全局变量:
13 入口参数: IC卡地址(32 - 255),指向内部RAM的指针,字节数
14 出口参数:指向内部RAM的指针 *pt
15 返 回 值: 无
16 设 计:zhaojunjie 日期:2002-04-24
17 修 改: 日期:
18 *********************************************************************/
19 void ReadMainMem(uchar addr,uchar idata *pt,uchar count)
20 {
21 1 ResetCard();
22 1 SendComm(RMM_COMM,addr,0xff);
23 1 ReadMode(pt,count);
24 1 BreakOperate();
25 1 }
26 /*********************************************************************
27
28 函 数 名: WriteMainMem()
29 功 能: 写IC卡主存,一次 1Byte
30 说 明:
31 调 用:
32 全局变量:
33 入口参数: addr: IC卡地址(32 - 255), pt: 指向数据区的指针 i:字节数
34 出口参数:无
35 返 回 值: 无
36 设 计:zhaojunjie 日期:2002-04-24
37 修 改: 日期:
38 *********************************************************************/
39 void WriteMainMem(uchar addr,uchar idata *pt)
40 {
41 1 ResetCard();
42 1 SendComm(WMM_COMM, addr, *pt); //写主存的命令字,地址,数据
43 1 ProcessMode();
44 1 BreakOperate();
45 1 }
46 /*********************************************************************
47
48 函 数 名: ReadProtectMem()
49 功 能: 读保护存储器
50 说 明:
51 调 用:
52 全局变量:
53 入口参数: 指向直接寻址数据区的指针
54 出口参数:无
55 返 回 值: 无
C51 COMPILER V6.23a SLE4442 08/23/2003 10:33:26 PAGE 2
56 设 计:zhaojunjie 日期:2002-04-24
57 修 改: 日期:
58 *********************************************************************/
59 void ReadProtectMem(uchar idata *pt)
60 {
61 1 ResetCard();
62 1 SendComm(RPM_COMM,0xff,0xff); //读保护存储器的命令字,后两个参数忽略
63 1 ReadMode(pt,4); //读出
64 1 BreakOperate();
65 1 }
66 /*********************************************************************
67
68 函 数 名: ProtectByte()
69 功 能: 保护一字节,注意待保护的字节是已经写入过的,地址只能在保护存储区内
70 说 明:
71 调 用:
72 全局变量:
73 入口参数: IC卡地址,指向直接寻址数据区的指针
74 出口参数:无
75 返 回 值: 无
76 设 计:zhaojunjie 日期:2002-04-24
77 修 改: 日期:
78 *********************************************************************/
79 void ProtectByte(uchar addr,uchar idata *pt)
80 {
81 1 ResetCard();
82 1 SendComm(WPM_COMM, addr, *pt); //写保护存储区的命令字,地址,数据
83 1 ProcessMode();
84 1 BreakOperate();
85 1 }
86
87 /*********************************************************************
88
89 函 数 名: SendComm()
90 功 能: 发送命令
91 说 明:
92 调 用:
93 全局变量:
94 入口参数: a: 命令字, b: 地址, c: 数据
95 出口参数:无
96 返 回 值: 无
97 设 计:zhaojunjie 日期:2002-04-24
98 修 改: 日期:
99 *********************************************************************/
100 void SendComm(uchar a,uchar b,uchar c)
101 {
102 1 StartComm(); //开始发送命令
103 1 WriteByte(a); //a: 发命令字
104 1 WriteByte(b); //b: 发地址
105 1 WriteByte(c); //c: 发数据
106 1 StopComm(); //结束发送命令
107 1 }
108 /*********************************************************************
109
110 函 数 名: StartComm()
111 功 能: 开始命令模式
112 说 明: (内部函数)
113 调 用:
114 全局变量:
115 入口参数: 无
116 出口参数:无
117 返 回 值: 无
C51 COMPILER V6.23a SLE4442 08/23/2003 10:33:26 PAGE 3
118 设 计:zhaojunjie 日期:2002-04-24
119 修 改: 日期:
120 *********************************************************************/
121 void StartComm(void)
122 {
123 1 IC_CLK = 0;
124 1 IC_IO = 1;
125 1 Delay5us();
126 1 IC_CLK = 1;
127 1 Delay5us();
128 1 IC_IO = 0;
129 1 Delay5us();
130 1 }
131 /*********************************************************************
132
133 函 数 名: StopComm()
134 功 能: 结束命令模式
135 说 明: (内部函数)
136 调 用:
137 全局变量:
138 入口参数: 无
139 出口参数:无
140 返 回 值: 无
141 设 计:zhaojunjie 日期:2002-04-24
142 修 改: 日期:
143 *********************************************************************/
144 void StopComm(void)
145 {
146 1 IC_CLK = 0;
147 1 IC_IO = 0;
148 1 Delay5us();
149 1 IC_CLK = 1; //CLK: H
150 1 Delay5us();
151 1 IC_IO = 1; //IO : H
152 1 Delay10us();
153 1 }
154 /*********************************************************************
155
156 函 数 名: ResetCard()
157 功 能: 卡复位和复位应答
158 说 明: (内部函数)
159 调 用:
160 全局变量:
161 入口参数: 无
162 出口参数:无
163 返 回 值: 无
164 设 计:zhaojunjie 日期:2002-04-24
165 修 改: 日期:
166 *********************************************************************/
167 void ResetCard(void)
168 {
169 1 uchar temp;
170 1 Delay5us();
171 1 IC_RST = 0;
172 1 IC_CLK = 0;
173 1 IC_IO = 1;
174 1 Delay5us();
175 1
176 1 IC_RST = 1;
177 1 Delay5us();
178 1 IC_CLK = 1;
179 1 Delay10us();
C51 COMPILER V6.23a SLE4442 08/23/2003 10:33:26 PAGE 4
180 1 Delay10us();
181 1 Delay10us();
182 1 Delay10us();
183 1 IC_CLK = 0;
184 1 Delay5us();
185 1 IC_RST = 0;
186 1 Delay10us(); //复位和复位应答时序
187 1 // ___
188 1 //RST _| |_______________________
189 1 // _ _ __ __
190 1 //CLK __|0|_|1|_ ..._|31|_|32|_____
191 1 // _ __ __ ___ _____
192 1 // \/ \/D0\ ... \/D31\/
193 1 //I/O _/\__/\__/ /\___/
194 1
195 1 temp = ReadByte();
196 1 temp = ReadByte();
197 1 temp = ReadByte();
198 1 temp = ReadByte(); //空读 32Bit (4Byte)
199 1 IC_CLK = 0; // __ __ IC sets I/O to state H
200 1 Delay5us(); //CLK_|31|_|32|______________
201 1 IC_IO = 1; // __ ___ ____________
202 1 _nop_(); // 30 \/ 31\/
203 1 IC_CLK = 0; //I/O __ /\___/
204 1 Delay5us();
205 1
206 1 }
207 /*********************************************************************
208
209 函 数 名: BreakOperate()
210 功 能: SLE/4442 IC卡操作中止
211 说 明: (内部函数)
212 调 用:
213 全局变量:
214 入口参数: 无
215 出口参数:无
216 返 回 值: uchar
217 设 计:zhaojunjie 日期:2002-04-24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -