📄 read4442.lst
字号:
C51 COMPILER V6.23a READ4442 08/24/2003 19:46:59 PAGE 1
C51 COMPILER V6.23a, COMPILATION OF MODULE READ4442
OBJECT MODULE PLACED IN Read4442.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Read4442.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <stdio.h>
2 #include <intrins.h>
3 #include <reg51.h>
4 #include <Read4442.h>
5 main()
6 {
7 1 init();
8 1 if((IC_In == 1)&&(IC_Read_Flag == 1) == 1)
9 1 {
10 2 IC_VCCC = 1;
11 2 IC_VCC_LED = ON;
12 2 Delay10us();
13 2 if(IC_Read_Flag == True)
14 2 {
15 3 ResetCard(); //
16 3 ReadMainMem(0xEF,&Read_Buffer[0],16);
17 3 BreakOperate();
18 3 Delay10us();
19 3 ResetCard();
20 3 Read_Send();
21 3 //Check_Send();
22 3 }
23 2 Delay10us();
24 2 IC_VCCC = 0;
25 2 }
26 1 }
27
28
29 void ReadMainMem(uchar addr,uchar idata *pt,uchar count)
30 {
31 1
32 1 SendComm(RMM_COMM,addr,0xff);
33 1 ReadMode(pt,count);
34 1 //Delay5us();
35 1 BreakOperate();
36 1 //IC_Read_LED = ON;
37 1 IC_Read_Flag = False;
38 1 }
39
40 void SendComm(uchar a,uchar b,uchar c)
41 {
42 1 StartComm(); //开始发送命令
43 1 WriteByte(a); //a: 发命令字
44 1 WriteByte(b); //b: 发地址
45 1 WriteByte(c); //c: 发数据
46 1 StopComm(); //结束发送命令
47 1 }
48
49 void StartComm(void)
50 {
51 1 IC_CLK = 0;
52 1 IC_IO = 1;
53 1 Delay5us();
54 1 IC_CLK = 1;
55 1 Delay5us();
C51 COMPILER V6.23a READ4442 08/24/2003 19:46:59 PAGE 2
56 1 IC_IO = 0;
57 1 Delay5us();
58 1 }
59
60 void WriteByte(uchar ch)
61 {
62 1 uchar i;
63 1 for(i = 8; i > 0; i--)
64 1 {
65 2 IC_CLK = 0;
66 2 IC_IO = (bit)(ch & 0x01);
67 2 Delay5us();
68 2 IC_CLK = 1;
69 2 Delay10us();
70 2 ch = ch >> 1; //右移一位
71 2 }
72 1 }
73
74 uchar ReadByte(void)
75 {
76 1 uchar i,ch;
77 1 ch = 0;
78 1 for (i = 8; i > 0; i--)
79 1 {
80 2 IC_CLK = 0;
81 2 ch = ch >> 1; //从低位读起
82 2 if((uchar)IC_IO)
83 2 ch |= 0x80;
84 2 Delay5us();
85 2 IC_CLK = 1;
86 2 Delay5us();
87 2 }
88 1 return ch;
89 1 }
90
91
92 void StopComm(void)
93 {
94 1 IC_CLK = 0;
95 1 IC_IO = 0;
96 1 Delay5us();
97 1 IC_CLK = 1; //CLK: H
98 1 Delay5us();
99 1 IC_IO = 1; //IO : H
100 1 Delay10us();
101 1 }
102
103 void ReadMode(uchar idata *pt,uchar count)
104 {
105 1 IC_CLK=0;
106 1 Delay5us();
107 1 do
108 1 {
109 2 *pt = ReadByte(); //读入一个字节
110 2 pt++; //指针加一
111 2 }while(--count); //计数器减一,判断
112 1 }
113
114 void BreakOperate(void)
115 {
116 1 IC_CLK = 0;
117 1 IC_RST = 0;
C51 COMPILER V6.23a READ4442 08/24/2003 19:46:59 PAGE 3
118 1 IC_IO = 0;
119 1 Delay5us();
120 1 IC_RST = 1;
121 1 IC_IO = 1;
122 1 Delay5us();
123 1 IC_RST = 0;
124 1 Delay5us();
125 1 IC_VCCC = 0;
126 1 }
127
128 void ResetCard(void)
129 {
130 1 uchar temp;
131 1 Delay5us();
132 1 IC_RST = 0;
133 1 IC_CLK = 0;
134 1 IC_IO = 1;
135 1 Delay5us();
136 1 IC_RST = 1;
137 1 Delay5us();
138 1 IC_CLK = 1;
139 1 Delay10us();
140 1 Delay10us();
141 1 Delay10us();
142 1 Delay10us();
143 1 IC_CLK = 0;
144 1 Delay5us();
145 1 IC_RST = 0;
146 1 Delay10us();
147 1 temp = ReadByte();
148 1 temp = ReadByte();
149 1 temp = ReadByte();
150 1 temp = ReadByte();
151 1 IC_CLK = 0;
152 1 Delay5us();
153 1 IC_IO = 1;
154 1 _nop_();
155 1 IC_CLK = 0;
156 1 Delay5us();
157 1
158 1 }
159
160 void Delay10us(void)
161 {
162 1 _nop_();
163 1 _nop_();
164 1 _nop_();
165 1 _nop_();
166 1 _nop_();
167 1 _nop_();
168 1 }
169
170 void Delay5us(void)
171 {
172 1 _nop_();
173 1 _nop_();
174 1 _nop_();
175 1 }
176
177
178 void init()
179 {
C51 COMPILER V6.23a READ4442 08/24/2003 19:46:59 PAGE 4
180 1 //uchar i;
181 1 TMOD=0x20;
182 1 TL1=0xFd;
183 1 TH1=0xFd;
184 1 SCON=0x50;
185 1 PCON=0x00;
186 1 EA = 1;
187 1 ES = 1;
188 1 TR1=1;
189 1 IC_VCCC = 0;
190 1 IC_In = 1;
191 1 P1_7 = OFF;
192 1 IC_Read_LED = OFF;
193 1 IC_In_LED = OFF;
194 1 IC_VCC_LED = OFF;
195 1 //for(i = 0;i<=15;i++)
196 1 //{
197 1 // Read_Buffer[i] = 0xff;
198 1 //}
199 1 IC_Read_Flag = True;
200 1 }
201
202 void Read_Send()
203 {
204 1 uchar i;
205 1 for(i = 0;i <= 15; i++)
206 1 {
207 2 SBUF = Read_Buffer[i];
208 2 do{}
209 2 while(TI == 0);
210 2 TI = 0;
211 2 }
212 1 }
213 /*
214 void Check_Send()
215 {
216 if(Read_Buffer[2] == 0xE2)
217 {
218 SBUF = 0xaa;
219 do{}
220 while(TI == 0);
221 TI = 0;
222 }
223 }
224 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 404 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 16 11
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -