📄 hardware.lst
字号:
220 2 }
221 1 if (uchChannel == 2)
222 1 {
223 2 EA = 0;
224 2 uchTemp = P4;
225 2 uchTemp &= 0xf9;
226 2 uchTemp |= 0x01; //0 0 1
227 2 P4 = uchTemp;
228 2 EA = 1;
229 2 }
230 1 }
231
232 //-----------------------------------------------------------------
233 //函数名称:void SetAlertIOControl(unsigned char uchChannel)
234 //功 能:通过状态判断得到P4.2、P4.1和P4.0端口的状态供三冗余使用
235 //输入参数:通道号
236 //返 回:无
237 //完成日期:4/12/2007
238 //-----------------------------------------------------------------
C51 COMPILER V7.10 HARDWARE 09/18/2008 14:09:27 PAGE 5
239 void SetAlertIOControl(unsigned char uchChannel)
240 {
241 1 unsigned char uchTemp;
242 1 if (uchChannel == 1)
243 1 {
244 2 EA = 0;
245 2 uchTemp = P4;
246 2 uchTemp &= 0xfc; //1 0 0
247 2 uchTemp |= 0x04;
248 2 P4 = uchTemp;
249 2 EA = 1;
250 2 }
251 1 if (uchChannel == 2)
252 1 {
253 2 EA = 0;
254 2 uchTemp = P4;
255 2 uchTemp &= 0xfd;
256 2 uchTemp |= 0x05; //1 0 1
257 2 P4 = uchTemp;
258 2 EA = 1;
259 2 }
260 1 }
261
262 //-----------------------------------------------------------------
263 //函数名称:void SetDangerIOControl(unsigned char uchChannel)
264 //功 能:通过状态判断得到P4.2、P4.1和P4.0端口的状态供三冗余使用
265 //输入参数:通道号
266 //返 回:无
267 //完成日期:4/12/2007
268 //-----------------------------------------------------------------
269 void SetDangerIOControl(unsigned char uchChannel)
270 {
271 1 unsigned char uchTemp;
272 1
273 1 if (uchChannel == 1)
274 1 {
275 2 EA = 0;
276 2 uchTemp = P4;
277 2 uchTemp &= 0xfa;
278 2 uchTemp |= 0x02; //0 1 0
279 2 P4 = uchTemp;
280 2 EA = 1;
281 2 }
282 1 if (uchChannel == 2)
283 1 {
284 2 EA = 0;
285 2 uchTemp = P4;
286 2 uchTemp &= 0xfb;
287 2 uchTemp |= 0x03; //0 1 1
288 2 P4 = uchTemp;
289 2 EA = 1;
290 2 }
291 1 }
292
293 //-----------------------------------------------------------------
294 //函数名称:void SetNotOKIOControl(unsigned char uchChannel)
295 //功 能:通过状态判断得到P4.2、P4.1和P4.0端口的状态供三冗余使用
296 //输入参数:通道号
297 //返 回:无
298 //完成日期:4/12/2007
299 //-----------------------------------------------------------------
300 void SetNotOKIOControl(unsigned char uchChannel)
C51 COMPILER V7.10 HARDWARE 09/18/2008 14:09:27 PAGE 6
301 {
302 1 unsigned char uchTemp;
303 1
304 1 if (uchChannel == 1)
305 1 {
306 2 EA = 0;
307 2 uchTemp = P4;
308 2 uchTemp &= 0xfe; //1 1 0
309 2 uchTemp |= 0x06;
310 2 P4 = uchTemp;
311 2 EA = 1;
312 2 }
313 1 if (uchChannel == 2)
314 1 {
315 2 EA = 0;
316 2 P4 = P4 | 0x07; //1 1 1
317 2 EA = 1;
318 2
319 2 }
320 1 }
321
322 //----------------------------------------------------------------
323 //函数名称:unsigned char HWConfigureStatus(void)
324 //功 能:从IO口P3.3检测Configure状态
325 //输入参数:无
326 //返 回:返回Configure状态 =1,接受配置信息
327 //完成日期:4/12/2007
328 //----------------------------------------------------------------
329 unsigned char HWConfigureStatus(void)
330 {
331 1 xdata unsigned char uchConfigStatus;
332 1 uchConfigStatus = P3 & 0x08;
333 1 uchConfigStatus = uchConfigStatus>>3;
334 1
335 1 return uchConfigStatus;
336 1 }
337
338 //----------------------------------------------------------------
339 //函数名称:unsigned char HWBypassStatus(void)
340 //功 能:从IO口P5.5检测Bypass状态
341 //输入参数:无
342 //返 回:返回Bypass状态 ,非Bypass为高电平,低电平为Bypass状态
343 //完成日期:4/12/2007
344 //----------------------------------------------------------------
345 unsigned char HWBypassStatus(void)
346 {
347 1 xdata unsigned char uchBypassStatus;
348 1
349 1 uchBypassStatus = P5 & 0x20;
350 1 uchBypassStatus = uchBypassStatus>>5;
351 1
352 1 return uchBypassStatus;
353 1 }
354
355 //--------------------------------------------------------------------------
356 //函数名称:unsigned char HWTripleStatus(void)
357 //功 能:从IO口P5.6检测报警倍增状态
358 //输入参数:无
359 //返 回:返回报警Triple状态,高电平为非报警倍增状态,低电平为报警倍增状态
360 //完成日期:4/12/2007
361 //--------------------------------------------------------------------------
362 unsigned char HWTripleStatus(void)
C51 COMPILER V7.10 HARDWARE 09/18/2008 14:09:27 PAGE 7
363 {
364 1 xdata unsigned char uchTripleStatus;
365 1
366 1 uchTripleStatus = P5 & 0x40;
367 1 uchTripleStatus = uchTripleStatus>>6;
368 1
369 1 return uchTripleStatus;
370 1 }
371
372 //--------------------------------------------------------------------------
373 //函数名称:void StopHeartBeat(void)
374 //功 能:停止心跳
375 //输入参数:无
376 //返 回:无
377 //完成日期:4/12/2007
378 //--------------------------------------------------------------------------
379 void StopHeartBeat(void)
380 {
381 1 EIE2 &= 0xfb; //ET2 = 0;
382 1 }
383
384 //--------------------------------------------------------------------------
385 //函数名称:void StartHeartBeat(void)
386 //功 能:开始心跳
387 //输入参数:无
388 //返 回:无
389 //完成日期:4/12/2007
390 //--------------------------------------------------------------------------
391 void StartHeartBeat(void)
392 {
393 1 EIE2 |= 0x04; //ET2 = 1;
394 1 }
395
396 //--------------------------------------------------------------------------
397 //函数名称:void SetHeartInterval(unsigned char uchInterval)
398 //功 能:设置心跳时间,最大定时35.5ms
399 //输入参数:时间间隔 最大值35
400 //返 回:无
401 //完成日期:4/12/2007
402 //--------------------------------------------------------------------------
403 void SetHeartInterval(unsigned char uchInterval)
404 {
405 1
406 1 T4CON = 0x00;
407 1 CKCON &= 0xbf;
408 1 EIE2 |= 0x04;
409 1 TL4 = 0xfd;
410 1 TH4 = 0xff;
411 1 if ((uchInterval <= 35) && (uchInterval >= 0))
412 1 {
413 2 RCAP4 = -(SYSCLK * uchInterval) / 12000; //10ms
414 2
415 2 T4CON |= 0x04;
416 2 }
417 1 else
418 1 {
419 2 StopHeartBeat();
420 2 }
421 1 }
422
423 //--------------------------------------------------------------------------
424 //函数名称:void JudgeCHCoByTrStatus_isr(void) interrupt 16
C51 COMPILER V7.10 HARDWARE 09/18/2008 14:09:27 PAGE 8
425 //功 能:对config,bypass,triple的状态进行判断处理,并得到心跳的数值
426 //输入参数:无
427 //返 回:无
428 //完成日期:4/12/2007
429 //--------------------------------------------------------------------------
430
431 void JudgeCHCoByTrStatus_isr(void) interrupt 16
432 {
433 1 T4CON &=0x7f;
434 1
435 1 uchConfigStatusBak[2] = uchConfigStatusBak[1];
436 1 uchConfigStatusBak[1] = uchConfigStatusBak[0];
437 1 uchConfigStatusBak[0] = HWConfigureStatus();
438 1
439 1 if(uchConfigStatus != uchConfigStatusBak[2])
440 1 {
441 2 if (uchConfigStatusBak[0] == uchConfigStatusBak[1] && uchConfigStatusBak[0] == uchConfigStatusBak[2])
442 2 {
443 3 uchConfigStatus = uchConfigStatusBak[0];
444 3 }
445 2 }
446 1 SetHWConfigStatusMain(uchConfigStatus);
447 1
448 1 uchBypassStatusBak[2] = uchBypassStatusBak[1];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -