📄 zlg500c.lst
字号:
C51 COMPILER V8.02 ZLG500C 04/18/2008 09:54:32 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE ZLG500C
OBJECT MODULE PLACED IN zlg500c.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE zlg500c.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #define zlg500c_GLOBALS
2 #include "main.h"
3 #include "UART.h"
4 #include "zlg500c.h"
5 #include "delay.h"
6
7 static INT8U SEQ = 0;
8 static INT8U code FindDlyTab[BAUD_CNT] = { 9,5,3,2,2,2,2,1,1 };
9
10 INT8U Zlg500c_Cmd(INT8U Addr)
11 {
12 1 INT8U Status;
13 1
14 1 SerBfr[CMDTYPE] |= SEQ;
15 1
16 1 while(Ser_Send(Addr) == FALSE);
17 1
18 1 WAITRESPDLY = 20; //延时100ms
19 1 while(~SerDTValid && WAITRESPDLY); //等待响应
20 1
21 1 if(~SerDTValid)
22 1 {
23 2 Status = COMMERR;
24 2 }
25 1 else
26 1 {
27 2 SerDTValid = FALSE;
28 2 if(SEQ == (SerBfr[CMDTYPE]&0xf0))
29 2 {
30 3 if(Addr == SerBfr[SADDR] || Addr == 0xff)
31 3 Status = OK;
32 3 else
33 3 Status = ADDRERR;
34 3 }
35 2 else
36 2 Status = SEQERR;
37 2 SEQ += 0x10;
38 2 }
39 1
40 1 return Status;
41 1 }
42
43 #if GetDvcSnr_en
44 INT8U GetDvcSnr(INT8U *DvcSnr)
45 {
46 1 INT8U Status;
47 1
48 1 SerBfr[CMDTYPE] = 0;
49 1 SerBfr[COMMAND] = 'A';
50 1 SerBfr[LENGTH] = 0;
51 1
52 1 Status = Zlg500c_Cmd(SlvAddr);
53 1
54 1 if(Status == OK)
55 1 {
C51 COMPILER V8.02 ZLG500C 04/18/2008 09:54:32 PAGE 2
56 2 Status = SerBfr[STATUS];
57 2 if(Status == OK)
58 2 memcopy(DvcSnr,&SerBfr[DATA],4);
59 2 }
60 1 return Status;
61 1 }
62 #endif
63
64 #if SetSlvAddr_en
65 INT8U SetSlvAddr(INT8U NewAddr,INT8U *DvcSnr)
66 {
67 1 INT8U Status;
68 1
69 1 SerBfr[CMDTYPE] = 0;
70 1 SerBfr[COMMAND] = 'B';
71 1 SerBfr[LENGTH] = 5;
72 1 memcopy(&SerBfr[DATA],DvcSnr,4);
73 1 SerBfr[DATA+4] = NewAddr;
74 1
75 1 Status = Zlg500c_Cmd(0xff);
76 1
77 1 if(Status == OK)
78 1 {
79 2 return SerBfr[STATUS];
80 2 }
81 1 return Status;
82 1 }
83 #endif
84
85 #if GetSlvAddr_en
86 INT8U GetSlvAddr(INT8U *Addr,INT8U *DvcSnr)
87 {
88 1 INT8U Status;
89 1
90 1 SerBfr[CMDTYPE] = 0;
91 1 SerBfr[COMMAND] = 'C';
92 1 SerBfr[LENGTH] = 4;
93 1 memcopy(&SerBfr[DATA],DvcSnr,4);
94 1
95 1 Status = Zlg500c_Cmd(0xff);
96 1
97 1 if(Status == OK)
98 1 {
99 2 Status = SerBfr[STATUS];
100 2 if(Status == OK)
101 2 *Addr = SerBfr[DATA];
102 2 }
103 1 return Status;
104 1 }
105 #endif
106
107 #if SetBaud_en
108 INT8U SetBaud(INT8U NewBaud)
109 {
110 1 SerBfr[CMDTYPE] = SEQ;
111 1 SerBfr[COMMAND] = 'D';
112 1 SerBfr[LENGTH] = 1;
113 1 SerBfr[DATA] = NewBaud;
114 1
115 1 while(Ser_Send(0xff) == FALSE);
116 1 while(SendStatus != SENDIDLE);
117 1
C51 COMPILER V8.02 ZLG500C 04/18/2008 09:54:32 PAGE 3
118 1 TR0 = FALSE;
119 1 TH1=BaudRateTable[NewBaud];
120 1 TL1=BaudRateTable[NewBaud];
121 1 TR1 = 1;
122 1
123 1 SEQ += 0x10;
124 1 return OK;
125 1 }
126 #endif
127
128 #if FindSlv_en
129 INT8U FindSlv(INT8U SAddr,INT8U EAddr,INT8U *SlvNum,INT8U *SlvBfr)
130 {
131 1 INT8U FSlvNum = EAddr-SAddr+1;
132 1
133 1 *SlvNum = 0;
134 1 SerBfr[CMDTYPE] = SEQ;
135 1 SerBfr[COMMAND] = 'E';
136 1 SerBfr[LENGTH] = 2;
137 1 SerBfr[DATA] = SAddr;
138 1 SerBfr[DATA+1] = EAddr;
139 1
140 1 while(Ser_Send(0xff) == FALSE);
141 1 while(SendStatus != SENDIDLE);
142 1
143 1 WAITRESPDLY = FindDlyTab[BaudNum];
144 1 while(WAITRESPDLY);
145 1 WAITRESPDLY = FindDlyTab[BaudNum];
146 1
147 1 while(1)
148 1 {
149 2 if(SerDTValid)
150 2 {
151 3 if(SEQ == SerBfr[CMDTYPE])
152 3 {
153 4 if(SerBfr[STATUS] == 0)
154 4 {
155 5 SlvBfr[SerBfr[SADDR]>>3] |= 0x01<<(SerBfr[SADDR]&0x07);
156 5 (*SlvNum)++;
157 5 }
158 4 }
159 3 SerDTValid = FALSE;
160 3 }
161 2 if(WAITRESPDLY == 0)
162 2 {
163 3 FSlvNum--;
164 3 if(FSlvNum == 0) break;
165 3 WAITRESPDLY = FindDlyTab[BaudNum];
166 3 }
167 2 }
168 1
169 1 SEQ += 0x10;
170 1 return OK;
171 1 }
172 #endif
173
174 #if GetDvcInfo_en
175 INT8U GetDvcInfo(INT8U *DvcInfo)
176 {
177 1 INT8U Status;
178 1
179 1 SerBfr[CMDTYPE] = 1;
C51 COMPILER V8.02 ZLG500C 04/18/2008 09:54:32 PAGE 4
180 1 SerBfr[COMMAND] = 'A';
181 1 SerBfr[LENGTH] = 0;
182 1
183 1 Status = Zlg500c_Cmd(SlvAddr);
184 1
185 1 if(Status == OK)
186 1 {
187 2 Status = SerBfr[STATUS];
188 2 if(Status == OK)
189 2 memcopy(DvcInfo,&SerBfr[DATA],SerBfr[LENGTH]);
190 2 }
191 1 return Status;
192 1 }
193 #endif
194
195 #if PCDConfig_en
196 INT8U PCDConfig()
197 {
198 1 INT8U Status;
199 1
200 1 SerBfr[CMDTYPE] = 1;
201 1 SerBfr[COMMAND] = 'B';
202 1 SerBfr[LENGTH] = 0;
203 1
204 1 Status = Zlg500c_Cmd(SlvAddr);
205 1
206 1 if(Status == OK)
207 1 {
208 2 Status = SerBfr[STATUS];
209 2 }
210 1 return Status;
211 1 }
212 #endif
213
214 #if PCDClose_en
215 INT8U PCDClose()
216 {
217 1 INT8U Status;
218 1
219 1 SerBfr[CMDTYPE] = 1;
220 1 SerBfr[COMMAND] = 'C';
221 1 SerBfr[LENGTH] = 0;
222 1
223 1 Status = Zlg500c_Cmd(SlvAddr);
224 1
225 1 if(Status == OK)
226 1 {
227 2 Status = SerBfr[STATUS];
228 2 }
229 1 return Status;
230 1 }
231 #endif
232
233 #if PCDType_en
INT8U PCDType(INT8U ISOType)
{
INT8U Status;
SerBfr[CMDTYPE] = 1;
SerBfr[COMMAND] = 'D';
SerBfr[LENGTH] = 1;
SerBfr[DATA] = ISOType;
C51 COMPILER V8.02 ZLG500C 04/18/2008 09:54:32 PAGE 5
Status = Zlg500c_Cmd(SlvAddr);
if(Status == OK)
{
Status = SerBfr[STATUS];
}
return Status;
}
#endif
252
253 #if PCDLoadKey_en
254 INT8U PCDLoadKey(INT8U KEYAB,INT8U SecNr,INT8U *Key)
255 {
256 1 INT8U Status;
257 1
258 1 SerBfr[CMDTYPE] = 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -