📄 zdjjc.lst
字号:
C51 COMPILER V7.50 ZDJJC 02/27/2006 21:10:46 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE ZDJJC
OBJECT MODULE PLACED IN zdjjc.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE zdjjc.c OPTIMIZE(SIZE) BROWSE ORDER DEBUG OBJECTEXTEND
line level source
1 #include "zdjjc.h"
2
3 void Delay(uint time, uint time2)
4 {
5 1 uint data i, j;
6 1 for (i=0; i<time; i++)
7 1 for (j=0; j<time2; j++);
8 1 return;
9 1 }
10
11 uint InitBaud () //设置波特率
12 {
13 1 uint Baud;
14 1 switch (BaudIndex)
15 1 {
16 2 case 0:
17 2 Baud = 1200;
18 2 RCAP2H = 0xFE;
19 2 RCAP2L = 0xE0;
20 2 break;
21 2 case 1:
22 2 Baud = 2400;
23 2 RCAP2H = 0xFF;
24 2 RCAP2L = 0x70;
25 2 break;
26 2 case 2:
27 2 Baud = 4800;
28 2 RCAP2H = 0xFF;
29 2 RCAP2L = 0xB8;
30 2 break;
31 2 case 3:
32 2 Baud = 9600;
33 2 RCAP2H = 0xFF;
34 2 RCAP2L = 0xDC;
35 2 break;
36 2 case 4:
37 2 Baud = 19200;
38 2 RCAP2H = 0xFF;
39 2 RCAP2L = 0xEE;
40 2 break;
41 2 }
42 1 return Baud;
43 1 }
44
45 void ReStoreData (uchar data RecordIndex) reentrant
46 {
47 1 uchar data RecordBuf[11];
48 1 C24GetBuf (RECORD_ROOT+RecordIndex*32, RecordBuf, 11);
49 1
50 1 //初始化各变量
51 1 RunLength.b[0] = RecordBuf[0];
52 1 RunLength.b[1] = RecordBuf[1];
53 1 RunTime.b[0] = RecordBuf[2];
54 1 RunTime.b[1] = RecordBuf[3];
55 1 DebugLength.b[1] = RecordBuf[4];
C51 COMPILER V7.50 ZDJJC 02/27/2006 21:10:46 PAGE 2
56 1 DebugLength.b[1] = RecordBuf[5];
57 1 DebugTime.b[0] = RecordBuf[6];
58 1 DebugTime.b[1] = RecordBuf[7];
59 1 PulseCheat.b[0] = RecordBuf[8];
60 1 PulseCheat.b[1] = RecordBuf[9];
61 1
62 1 C24GetBuf (RECORD_ROOT+RecordIndex*32+11, RecordBuf, 11);
63 1
64 1 curMotorStopCount = RecordBuf[0];
65 1 curMotorStopTimeLength.b[0] = RecordBuf[1];
66 1 curMotorStopTimeLength.b[1] = RecordBuf[2];
67 1 JingCutCount = RecordBuf[3];
68 1 JingCutTime = RecordBuf[4];
69 1 WeiCutCount = RecordBuf[5];
70 1 WeiCutTime = RecordBuf[6];
71 1 DiCutCount = RecordBuf[7];
72 1 DiCutTime = RecordBuf[8];
73 1 JuanCutCount = RecordBuf[9];
74 1 JuanCutTime = RecordBuf[10];
75 1 }
76
77 void LocateGroupIndex (uchar uYear, uchar uMonth, uchar uDate, uchar uHour, uchar uMin)
78 {
79 1 uchar idata TimeGroup[17], uTempIndex;
80 1
81 1 C24GetBuf (GROUP_TIME, TimeGroup, 17);
82 1 GroupCount = TimeGroup[16]; //定班数
83 1
84 1 //比较时间,得到班号
85 1 for (;;)
86 1 {
87 2 uTempIndex = GroupIndex * 4;
88 2 if (uHour > TimeGroup[uTempIndex] &&
89 2 uHour < TimeGroup[uTempIndex+2])
90 2 break;
91 2 else if (uHour == TimeGroup[uTempIndex+2])
92 2 {
93 3 if (uMin < TimeGroup[uTempIndex+3])
94 3 break;
95 3 }
96 2 else if (uHour == TimeGroup[uTempIndex])
97 2 {
98 3 if (uMin >= TimeGroup[uTempIndex+1])
99 3 break;
100 3 }
101 2 GroupIndex ++;
102 2 GroupIndex %= GroupCount;
103 2 }
104 1
105 1 C24GetBuf (RECORD_INDEX, &RecordIndex, 1); //读到上一次记录位置
106 1
107 1 //读上一次记录
108 1 C24GetBuf (RECORD_ROOT+RecordIndex*32+22, TimeGroup, 8);
109 1
110 1 //比较日期
111 1 if (TimeGroup[7] == uYear &&
112 1 TimeGroup[5] == uMonth &&
113 1 TimeGroup[4] == uDate)
114 1 {
115 2 //比较班时间
116 2 if (uHour > TimeGroup[0] &&
117 2 uHour < TimeGroup[2])
C51 COMPILER V7.50 ZDJJC 02/27/2006 21:10:46 PAGE 3
118 2 {
119 3 ReStoreData (RecordIndex);
120 3 return;
121 3 }
122 2 else if (uHour == TimeGroup[2])
123 2 {
124 3 if (uMin < TimeGroup[3])
125 3 {
126 4 ReStoreData (RecordIndex);
127 4 return;
128 4 }
129 3 }
130 2 else if (uHour == TimeGroup[0])
131 2 {
132 3 if (uMin >= TimeGroup[1])
133 3 {
134 4 ReStoreData (RecordIndex);
135 4 return;
136 4 }
137 3 }
138 2 }
139 1
140 1 ClearAllData ();
141 1
142 1 displayBuf[6] = 0x08;
143 1 RecordIndex ++; //本次记录位置加1
144 1 RecordIndex %= RECORDCOUNT;
145 1 C24SetBuf (RECORD_INDEX, &RecordIndex, 1); //更新记录索引号
146 1 }
147
148 void GetEEPromData ()
149 {
150 1 uchar idata Buffer[7];
151 1 C24GetBuf (TERM_H, Buffer, 7);
152 1 PulseTerm.b[0] = Buffer[0]; //得到正常脉冲周期
153 1 PulseTerm.b[1] = Buffer[1];
154 1 uKValue.b[0] = Buffer[2]; //K值
155 1 uKValue.b[1] = Buffer[3];
156 1 RunStatus = Buffer[4]^1; //本机状态
157 1 motorStatus = Buffer[4]^0; //电机转动状态
158 1 BaudIndex = Buffer[5]; //波特率选择
159 1 Address = Buffer[6]; //通信地址
160 1 }
161
162 void ChangeGroup (uchar uHour, uchar uMin)
163 {
164 1 uchar idata TimeGroup[4];
165 1 C24GetBuf (GROUP_TIME+GroupIndex*4, TimeGroup, 4);
166 1
167 1 //比较时间
168 1 if ((uHour > TimeGroup[0]) && (uHour < TimeGroup[2]))
169 1 return;
170 1 else if (uHour == TimeGroup[0])
171 1 {
172 2 if (uMin >= TimeGroup[1])
173 2 return;
174 2 }
175 1 else if (uHour == TimeGroup[2])
176 1 {
177 2 if (uMin < TimeGroup[3])
178 2 return;
179 2 }
C51 COMPILER V7.50 ZDJJC 02/27/2006 21:10:46 PAGE 4
180 1
181 1 //保存当前数据
182 1 SaveCurrData ();
183 1 //数据清零,换下一班
184 1 ClearAllData ();
185 1 GroupIndex ++;
186 1 GroupIndex %= GroupCount;
187 1 RecordIndex ++;
188 1 RecordIndex %= RECORDCOUNT;
189 1 C24SetBuf (RECORD_INDEX, &RecordIndex, 1); //更新记录索引号
190 1 }
191
192 void ClearAllData (void) //所有当前记录变量清0
193 {
194 1 uPulseInc = 0;
195 1 RunLength.w = 0;
196 1 RunTime.w = 0;
197 1 DebugLength.w = 0;
198 1 DebugTime.w = 0;
199 1 curMotorStopCount = 0;
200 1 curMotorStopTimeLength.w = 0;
201 1 PulseCheat.w = 0;
202 1
203 1 JingCutCount = 0;
204 1 JingCutTime = 0;
205 1
206 1 WeiCutCount = 0;
207 1 WeiCutTime = 0;
208 1
209 1 DiCutCount = 0;
210 1 DiCutTime = 0;
211 1
212 1 JuanCutCount = 0;
213 1 JuanCutTime = 0;
214 1 }
215
216 void InitParam ()
217 {
218 1 uchar idata TimeBuf[7];
219 1
220 1 //初始化各引脚
221 1 DAT_595 = HIGH;
222 1 CLK_595 = HIGH;
223 1 STB_595 = HIGH;
224 1 EN_SEND = FALSE;//使能接收数据
225 1 MOTOR = HIGH;
226 1
227 1 //初始化定时器0,1
228 1 TMOD = 0x11;
229 1
230 1 //定时器0,方式1,用于伪脉冲检测
231 1 TH0 = TH0_VAL;
232 1 TL0 = TL0_VAL;
233 1 TR0 = TRUE;
234 1 ET0 = FALSE;
235 1
236 1 //定时器1,方式1,用于显示
237 1 TH1 = TH1_VAL;
238 1 TL1 = TL1_VAL;
239 1 TR1 = TRUE;
240 1 ET1 = TRUE;
241 1
C51 COMPILER V7.50 ZDJJC 02/27/2006 21:10:46 PAGE 5
242 1 //初始化定时器2,用于通信
243 1 T2CON = 0x30;
244 1 TR2 = TRUE;
245 1 ET2 = TRUE;
246 1 PS = TRUE;
247 1 SCON = 0x50; //8位
248 1 ES = TRUE; //中断允许位
249 1
250 1 //初始化外中断0
251 1 IT0 = TRUE; //边沿触发方式
252 1 EX0 = TRUE;
253 1
254 1 //初始化外中断1
255 1 IT1 = TRUE; //边沿触发方式
256 1 EX1 = FALSE;
257 1 PX1 = TRUE; //外部中断1优先级最高
258 1
259 1 if (!RstStatus)
260 1 {
261 2 //初始化各变量
262 2 curKey = NO_KEY;
263 2 KeyFlag = FALSE;
264 2
265 2 RecOver = FALSE;
266 2 TrasOver = FALSE;
267 2 IsReceive = FALSE;
268 2 UartLength = 255;
269 2 Address = 255;
270 2 Rindex = 0;
271 2 Tindex = 0;
272 2
273 2 TimeStatus = FALSE;
274 2
275 2 JingStatus = JING_PIN;
276 2 WeiStatus = WEI_PIN;
277 2 DiStatus = DIXI_PIN;
278 2 JuanStatus = JUAN_PIN;
279 2
280 2 v_Get1302 (TimeBuf);
281 2 C24SetBuf (START_TIME, TimeBuf, 7);
282 2
283 2 displayBuf[6] = 0x00;
284 2
285 2 //显示年月日
286 2 displayBuf[5] = SEVEN_BLK1[TimeBuf[3] & 0x0F];
287 2 displayBuf[4] = SEVEN_BLK1[(TimeBuf[3]>>4) & 0x0F];
288 2 displayBuf[3] = SEVEN_BLK1[TimeBuf[4] & 0x0F];
289 2 displayBuf[2] = SEVEN_BLK1[(TimeBuf[4]>>4) & 0x0F];
290 2 displayBuf[1] = SEVEN_BLK1[TimeBuf[6] & 0x0F];
291 2 displayBuf[0] = SEVEN_BLK1[(TimeBuf[6]>>4) & 0x0F];
292 2 }
293 1
294 1 //开中断
295 1 EA = TRUE;
296 1 GetEEPromData ();
297 1 InitBaud();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -