📄 readtemp.lst
字号:
-****
163 * 函数名称 :
164 * 功能描述 :
165 * 实际参数 :
166 * 返回值 :
167 * 说明 : 读出MAX6675温度数据
168 **********************************************************************************************************
C51 COMPILER V7.07 READTEMP 08/26/2006 11:15:05 PAGE 4
-****/
169
170 void ReadTempDat(void)
171 {
172 1 uchar p2_dat ;
173 1 uint temp_dat0,temp_dat1 ;
174 1
175 1 CS0 = 0 ; // 停止第一个MAX6675转换
176 1 temp_dat0 = Read_Max6675() ;
177 1 CS0 = 1 ;
178 1 _nop_() ;
179 1
180 1 CS1 = 0 ; // 停止第二组MAX6675转换
181 1 temp_dat1 = Read_Max6675() ;
182 1
183 1 CS0 = 0 ; // 两路终止转换
184 1
185 1 All_Temp0[Road_Dat][Read_Number] = temp_dat0 >> 1 ; // 第一个MAX6675温度值(从MAX6675读出来的温度是带小数
-点2位和1位断线标志的)
186 1 All_Temp1[Road_Dat][Read_Number] = temp_dat1 >> 1 ; // 第二个MAX6675温度值
187 1
188 1 Relay_Number++ ; // 每通一次继电器读温度次数(现在规定位2次)
189 1 if (Relay_Number > 1)
190 1 {
191 2 Relay_Number = CLEAR ; // 清读温度次数
192 2
193 2 p2_dat = P2 & 0x7c ; // 判断现在接通的是哪个继电器(用第二组温度判断)
194 2
195 2 P2 &= 0x03 ; // 释放所有继电器
196 2 P1 &= 0xf0 ;
197 2
198 2 if (Read_Number >= 5) // 读完6次温度新值(平均值)
199 2 {
200 3 Fact_Temp[Road_Dat] = FactTempDat(&All_Temp0[Road_Dat][0],12) ;
201 3 if (Road_AdhystSign[Road_Dat])
202 3 {
203 4 if (Fact_Temp[Road_Dat] > Road_AdjustDat[Road_Dat]) // 当前值大于修正值
204 4 Fact_Temp[Road_Dat] -= Road_AdjustDat[Road_Dat] ;
205 4 else
206 4 Fact_Temp[Road_Dat] = 0 ;
207 4 }
208 3 else
209 3 Fact_Temp[Road_Dat] += Road_AdjustDat[Road_Dat] ;
210 3
211 3 Fact_Temp[Road_Dat + 5] = FactTempDat(&All_Temp1[Road_Dat][0],12) ;
212 3 if (Road_AdhystSign[Road_Dat + 5])
213 3 {
214 4 if (Fact_Temp[Road_Dat + 5] > Road_AdjustDat[Road_Dat + 5]) // 当前值大于修正值
215 4 Fact_Temp[Road_Dat + 5] -= Road_AdjustDat[Road_Dat + 5] ;
216 4 else
217 4 Fact_Temp[Road_Dat + 5] = 0 ;
218 4 }
219 3 else
220 3 Fact_Temp[Road_Dat + 5] += Road_AdjustDat[Road_Dat + 5] ;
221 3
222 3 if (Road_Dat == 4)
223 3 {
224 4 Send_DatBag[5] = 0xd0 ; // 数据代码
225 4 Send_DatBag[4] = 0x00 ;
226 4 Send_DatBag[3] = BCD((SiteFack_Temp >> 2)) ; // 有两位是小数点
227 4 Send_DatBag[2] = Send_DatBag[4] ; // 重发数据包
228 4 Send_DatBag[1] = Send_DatBag[3] ;
C51 COMPILER V7.07 READTEMP 08/26/2006 11:15:05 PAGE 5
229 4 Send_DatBag[0] = 0xff ; // 结束标志
230 4
231 4 Breed_Dat = 1 ; // 发送下一组数据
232 4 Send_Counter = 6 ; // 一帧6个数据
233 4 SBUF = Send_DatBag[Send_Counter - 1] ;
234 4 Send_Counter-- ;
235 4 }
236 3 }
237 2
238 2 NewTemp(temp_dat0,temp_dat1) ; // 读完两次后求瞬间值,在控温里要用来比较
239 2 // 延时,为隔离相邻两段温度干扰
240 2 switch(p2_dat)
241 2 {
242 3 case 0x40:
243 3 Road_Dat = 1 ; // 路数值,(在储存温度值用)
244 3 Temp_Relay1 = ON ; // 接通第下一个继电器
245 3 Temp_Relay6 = ON ;
246 3 break ;
247 3
248 3 case 0x20:
249 3 Road_Dat = 2 ; // 路数值,(在储存温度值用)
250 3 Temp_Relay2 = ON ; // 接通第下一个继电器
251 3 Temp_Relay7 = ON ;
252 3 break ;
253 3
254 3 case 0x10:
255 3
256 3 Road_Dat = 3 ; // 路数值,(在储存温度值用)
257 3 Temp_Relay3 = ON ; // 接通第下一个继电器
258 3 Temp_Relay8 = ON ;
259 3 break ;
260 3
261 3 case 0x08:
262 3 Road_Dat = 4 ; // 路数值,(在储存温度值用)
263 3 Temp_Relay4 = ON ; // 接通第下一个继电器
264 3 Temp_Relay9 = ON ;
265 3 break ;
266 3
267 3 case 0x04:
268 3 Road_Dat = 0 ; // 路数值,(在储存温度值用)
269 3 Temp_Relay0 = ON ; // 接通第下一个继电器
270 3 Temp_Relay5 = ON ;
271 3
272 3 Old_Read_Number += 2 ;
273 3
274 3 if (Old_Read_Number >= 6)
275 3 Old_Read_Number = 0 ;
276 3
277 3 break ;
278 3 default:
279 3 break ;
280 3 }
281 2 Read_Number = Old_Read_Number ; // 为本下一次
282 2 }
283 1 else
284 1 {
285 2 Read_Number++ ;
286 2 }
287 1 }
288
289 /*********************************************************************************************************
-****
C51 COMPILER V7.07 READTEMP 08/26/2006 11:15:05 PAGE 6
290 * 函数名称 :
291 * 功能描述 :
292 * 实际参数 :
293 * 返回值 :
294 * 说明 : 处理温度数据
295 **********************************************************************************************************
-****/
296
297 void NeatenTemp(void)
298 {
299 1 if (Int0_Time >= READ_TIME) // 4 X 0.055 = 0.22s
300 1 {
301 2 Int0_Time = CLEAR ; // 清读MAX6675定时时间中断标志
302 2 ReadTempDat() ; // 读温度数据
303 2
304 2 CS0 = ON ; /* 进行温度转换 */
305 2 CS1 = ON ;
306 2 TR0 = ON ; // 开读MAX6675定时器
307 2 }
308 1 }
309
310 /*********************************************************************************************************
-****
311 * 函数名称 :
312 * 功能描述 :
313 * 实际参数 :
314 * 返回值 :
315 * 说明 :
316 **********************************************************************************************************
-****/
317
318
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1475 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 290 ----
PDATA SIZE = ---- ----
DATA SIZE = 4 20
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -