?? 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 + -