📄 zijian_task.lst
字号:
C51 COMPILER V7.50 ZIJIAN_TASK 06/10/2007 23:11:23 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE ZIJIAN_TASK
OBJECT MODULE PLACED IN .\out\ZiJian_task.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ZiJian_task.c LARGE OPTIMIZE(SIZE) REGFILE(.\out\mbtest.ORC) BROWSE INCDIR(
-C:\Keil\C51\LIB\;D:\TEST_C020\MC_55_C\) DEBUG OBJECTEXTEND OBJECT(.\out\ZiJian_task.obj)
line level source
1 // 处理床体F76 和地震仪的任务==================================
2 // 处理床体F76 和地震仪的任务==================================
3 // 处理床体F76 和地震仪的任务==================================
4 // 处理床体F76 和地震仪的任务==================================
5 // 处理床体F76 和地震仪的任务==================================
6 // 处理床体F76 和地震仪的任务==================================
7 // 处理床体F76 和地震仪的任务==================================
8 // 处理床体F76 和地震仪的任务==================================
9 // 处理床体F76 和地震仪的任务==================================
10
11
12
13
14
15 #include "all.h"
16
17 //对码命令
18 code uchar DuiMa_Command[8]={0XEE,0XEE,2,0,2,0XAB}; //对码命令
19
20 code uchar DuiMaBoard_ZiJian_Command[8]={0XEE,0XEE,99,0,99,0XAB}; //对码命令
21 //返回 sum=99;
22 // ShangZhuang_message(99, &sum, 1);
23
24
25 code uchar DuiMa_Clear_Command[8]={0XEE,0XEE,3,0,3,0XAB}; //清除对码命令
26
27 bit Xin_Status_B; //新自检 状态标志
28
29
30 void Ying_da_error(uchar);
31 void Ying_da_ok(uchar);
32 //void F76_Attand_485(void) ;
33
34 uchar ZiJian_ChuangTi_Once() ;
35
36 uchar ZiJian_DiZhenYi_Once() ;
37
38 /**********************************************************************
39 **函数原型: void Attand_485(void)
40 **入口参数: Xin_F76_RX_B=1
41 **出口参数: 无
42 **返 回 值: 无
43 **说 明: 处理床体F76 和地震仪的任务
44 ************************************************************************/
45
46
47 uchar zi_s_cnt;
48 uchar zi_M_cnt;
49 bit En_zijian_B=0; //强行自检位
50
51 //自检任务
52 void ZiJian_ATAND (void) _task_ ZIJIAN {
53 1 while(1) {
54 2 os_wait2(K_TMO,2);
C51 COMPILER V7.50 ZIJIAN_TASK 06/10/2007 23:11:23 PAGE 2
55 2
56 2
57 2
58 2 Dog_ZIJIAN_cnt=0; //看门狗计数器
59 2
60 2 if( En_zijian_B) { //强行自检位)
61 3
62 3 goto Ziiiiiiii;
63 3 }
64 2 En_zijian_B=0;
65 2
66 2 if(Second_ZiJian==0xff) { //自检计时
67 3 Second_ZiJian=0;
68 3 if(++zi_s_cnt>=60) { //分钟
69 4 zi_s_cnt=0;
70 4 if(Para_all_True.ZiJian_Time!=0) {
71 5 if(++zi_M_cnt>=Para_all_True.ZiJian_Time) {
72 6 Ziiiiiiii:
73 6 zi_M_cnt=0;
74 6 if(ZiJian_ChuangTi_Once()==0)
75 6 ZiJian_ChuangTi_Once();
76 6
77 6 if(ZiJian_DiZhenYi_Once()==0)
78 6 ZiJian_DiZhenYi_Once();
79 6 if(En_zijian_B==0)
80 6 Xin_Status_B=1; //让KEY_232_ATTAND进行发送
81 6 En_zijian_B=0; //强行自检位
82 6 Para_all_True.Change_Flag=1;
83 6 }
84 5 }
85 4 else ; //等于0 则不自检
86 4
87 4 }
88 3
89 3 }
90 2 // F76_Attand_485() ;
91 2
92 2 }
93 1 }
94
95
96
97
98 /**********************************************************************
99 **函数原型: void Attand_485(void)
100 **入口参数: Xin_F76_RX_B=1
101 **出口参数: 无
102
103 **返 回 值: 1: 成功进行了一次自检
104
105 **说 明: 床体自检一次子程序。
106
107 上位机指令格式
108 '@' '2' '1' '0' 0dH
109 床体回复:
110 1当床体正常工作,压力正常,正确接收到指令时候通讯格式:
111 '@' 'O' 'K' '.' 0dH
112 OK. :即为工作正常
113
114 2当床体正常工作,压力不正常,正确接收到指令时候通讯格式:
115 '@' 'P' 'N' 'O' 0dH
116 PNO:即为压力不正常。
C51 COMPILER V7.50 ZIJIAN_TASK 06/10/2007 23:11:23 PAGE 3
117
118 3当床体正常工作,压力正常,不能正确接收到指令时候通讯格式:
119 如收到的指令是错误的,床体将不发送任何信息和动作。
120 4当床体正常工作,压力不正常,不能正确接收到指令时候通讯格式:
121 同第3条。
122 5当床体不正常工作
123 当床体在待机工作情况时,将不发送任何信息,如果床体在运行过程中,出现停止,而影响设备的运行,将发送信息,其
-通讯格式为:
124 '@' 'N' 'O' '. ' 0dH
125 NO. :即为工作不正常。
126
127
128 ************************************************************************/
129
130 code char ChuangTi_ZiJian_Command_1[8]="@210\r"; //床体自检自检命令
131
132
133 uchar ZiJian_ChuangTi_Once() { //f76
134 1
135 1 bit okbb=0;
136 1
137 1 MoveByte(F76_TX_Buff, (uchar *)ChuangTi_ZiJian_Command_1, 8);
138 1 Xin_DiZh_RX_B=0;
139 1
140 1
141 1 // FA_f76_Buff();
142 1 F76_TX_Len=5; // DiZh_Tx_Buff[3]+6;
143 1 F76_TX_cnt=0;
144 1 if(bUartBusy==0){ //判断发送中断是否处于激活状态,若没有激活则:
145 2 SCON1|=2; //TI=1; //激活MCU的串口发送程序
146 2 bUartBusy=1; //置发送程序已经激活的标志
147 2 }
148 1 //FA_F76_Buff();
149 1
150 1 okbb=0;
151 1 os_wait2(K_TMO,60);
152 1 if(Xin_F76_RX_B) {
153 2 Xin_F76_RX_B=0;
154 2 if(strstr(DiZh_Rx_Buff,"@OK.\r")!=0) { //如果收到确ok
155 3 okbb=1;
156 3 Para_all_True.ChuangTi_status[0]=1; // 1:床体正常工作
157 3 Para_all_True.ChuangTi_status[1]=1; // 压力正常
158 3 Para_all_True.ChuangTi_status[2]=1;
159 3 Para_all_True.Is_ChuangTi_Ok=1; // 正常
160 3
161 3 }
162 2 else if( strstr(DiZh_Rx_Buff,"@PNO\r")!=0 ) {
163 3 okbb=1;
164 3 Para_all_True.ChuangTi_status[0]=1; //1:床体正常工作
165 3 Para_all_True.ChuangTi_status[1]=0; // 压力不正常
166 3 Para_all_True.ChuangTi_status[2]=0;
167 3 Para_all_True.Is_ChuangTi_Ok=0; //不正常
168 3
169 3 }
170 2 else if( strstr(DiZh_Rx_Buff,"@NO.\r")!=0 ) {
171 3 okbb=1;
172 3 Para_all_True.ChuangTi_status[0]=0; //1:床体不正常工作
173 3 Para_all_True.ChuangTi_status[1]=0; // 压力不正常
174 3 Para_all_True.ChuangTi_status[2]=0;
175 3 Para_all_True.Is_ChuangTi_Ok=0; //不正常
176 3
177 3 }
C51 COMPILER V7.50 ZIJIAN_TASK 06/10/2007 23:11:23 PAGE 4
178 2 else {
179 3 return(0); //应答出错
180 3 }
181 2 }
182 1 else {
183 2 Para_all_True.ChuangTi_status[0]=0; //1:床体不正常工作
184 2 Para_all_True.ChuangTi_status[1]=0; // 压力不正常
185 2 Para_all_True.ChuangTi_status[2]=0;
186 2 Para_all_True.Is_ChuangTi_Ok=0; //不正常
187 2 return(0); //没有应答
188 2 }
189 1
190 1
191 1 if(okbb==1) {
192 2 Para_all_True.DiZhenYi_status[0]=1; //正常
193 2 Para_all_True.Is_DiZhenYi_Ok=1; //正常
194 2 }
195 1 else {
196 2 Para_all_True.DiZhenYi_status[0]=0; //不正常
197 2 Para_all_True.Is_DiZhenYi_Ok=0; //不正常
198 2
199 2 }
200 1 return(1);
201 1
202 1 }
203
204
205 /*
206
207 3字节数据(Byte1Byte2Byte3)
208 Byte1: 0:床体不正常工作,1:床体正常工作
209 Byte2: 0:压力不正常 1:压力正常
210 Byte3: (备用)
211
212
213
214 */
215
216
217
218
219
220
221
222
223
224 /**********************************************************************
225 **函数原型: void Attand_485(void)
226 **入口参数: Xin_F76_RX_B=1
227 **出口参数: 无
228 **返 回 值: 1:成功进行了一次自检
229 **说 明: 地震仪自检一次子程序。
230
231 收到上位机命令(4字节):ZJ+空格+回车
232 强震仪进行自检,如无故障向上位机发送(4字节):TU+空格+回车
233 如有故障向上位机发送(4字节):FS+空格+回车
234
235
236
237 ************************************************************************/
238
239 code char Dizh_ZiJian_Command[8]="ZJ \r"; //地震仪自检命令
C51 COMPILER V7.50 ZIJIAN_TASK 06/10/2007 23:11:23 PAGE 5
240 code char Dizh_ZiJian_OK[8]="TU \r"; //地震仪自检OK
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -