📄 serial.lst
字号:
198 3 // while((UARTLSR&0x60)==0){}
199 3 // UARTTHR=0x05;
200 3 // while((UARTLSR&0x60)==0){}
201 3 // UARTTHR=mon;
202 3 rcv_inf00=0;
203 3 }
204 2 if(rcv_inf00==0x06){//清零第0页
205 3 rcv_inf00=0;
206 3 // pa=&lose; //刘宝贵修 本条有语法错误 是不是这个样子:pa&=lose
207 3 for(k=0;k<0x108;k++){
208 4 *(&pa+k)=0;}
209 3 sp=&pa;
210 3 buffer1write(0x108,0);
211 3 delay(400);
212 3 buffer1topageprogerase(0); //pageaddr
213 3 delay(400);
214 3 }
215 2 }
216 1 }
217
218 /*********************************************************************************************************
219 ** 函数名称: comm
220 ** 功能描述: 串口中断处理程序
221 ** 输 入: 无
222 ** 输 出: 无
223 ** 全局变量: 无
224 ** 调用模块: 无
225 **
226 ** 作 者: 曾银玲
227 ** 日 期: 2004年11月25日
228 **-------------------------------------------------------------------------------------------------------
229 ** 修改人: 曾银玲
230 ** 日 期: 2004年11月31日
231 **------------------------------------------------------------------------------------------------------
232 ********************************************************************************************************/
233 #pragma disable /* 除非最高优先级中断,否则,必须加上这一句
- */
234 /* void comm(void) interrupt 4
235 {
236 uint8 data temp;
237 if (RI == 1)
238 {
239 OS_INT_ENTER();
C51 COMPILER V7.06 SERIAL 06/20/2005 15:36:06 PAGE 5
240 RI = 0;
241 OSQIntPost(SerialInData,SBUF);
242 OSIntExit();
243 return;
244 }
245 if (TI == 1)
246 {
247 TI = 0;
248 if (OSQAccept(&temp,SerialOutData) == OS_Q_OK)
249 {
250 SBUF = temp;
251 }
252 else
253 {
254 SerialCanSend = 1;
255 }
256 }
257 }
258 */
259 void serial_INT(void) interrupt 4 using 2
260 {
261 1 uint8 i;
262 1
263 1 if(TI){trans_over=1;TI=0;}
264 1
265 1 if(RI){
266 2 i=SBUF;
267 2 if(!head00_over){
268 3 if(i==0xfc){ head00_over=1;}}
269 2 //else if(!head01_over){if(i==0xfc){head01_over=1;}}
270 2 else if(!head02_over){ //re0_c=0;
271 3 if(i==0x33){rcv_inf00=7;head02_over=1;}
272 3 else if(i==0x01){head02_over=1;rcv_inf00=1;}
273 3 else if(i==0x02){rcv_inf00=2;head00_over=0;head01_over=0;head02_over=0;}
274 3 else if(i==0x03){head02_over=1;rcv_inf00=3;}
275 3 else if(i==0x04){head02_over=1;rcv_inf00=4;}
276 3 else if(i==0x05){rcv_inf00=5;head00_over=0;head01_over=0;head02_over=0;}
277 3 else{ if(i==0x06){rcv_inf00=6;head00_over=0;head01_over=0;head02_over=0;}}}
278 2
279 2 else{
280 3 if(rcv_inf00==0x07){
281 4 rx[re0_c]=i;re0_c++;rcv_flag=0;noinf_4s=0;
282 4 if(re0_c>=5){rcv_inf01=7;re0_c=0;
283 5 head00_over=0;head01_over=0;head02_over=0;}}
284 3 else if(rcv_inf00==0x01){date[re0_c]=i;re0_c++;
285 4 if(re0_c==6){head00_over=0;head01_over=0;head02_over=0;
286 5 rcv_inf01=1;re0_c=0;}}
287 3 else if(rcv_inf00==0x03){lenth[re0_c]=i;re0_c++;
288 4 if(re0_c>=4){rcv_inf01=2;re0_c=0;
289 5 head00_over=0;head01_over=0;head02_over=0;}}
290 3 else if(rcv_inf00==0x04){date[0]=i;rcv_inf01=3;head00_over=0;head01_over=0;head02_over=0;}}
291 2 RI=0;
292 2 }
293 1 }
294 /*********************************************************************************************************
295 ** 函数名称: send_y_h
296 ** 功能描述: 串口发送时间程序
297 ** 输 入: 无
298 ** 输 出: 无
299 ** 全局变量: 无
300 ** 调用模块: 无
301 **
C51 COMPILER V7.06 SERIAL 06/20/2005 15:36:06 PAGE 6
302 ** 作 者: 曾银玲
303 ** 日 期: 2004年11月25日
304 **********************************************************************************************************
-**/
305
306 void send_y_h(void)
307 {uint8 i;
308 1 read_date();read_time();
309 1 if(rcv_inf00==0x02){
310 2 rcv_inf00=0;
311 2 while(!trans_over){}
312 2 SBUF=0xfc;trans_over=0;
313 2 while(!trans_over){}
314 2 SBUF=0x02;trans_over=0;
315 2
316 2 for(i=0;i<6;i++){
317 3 while(!trans_over){}
318 3 SBUF=date[i];
319 3 trans_over=0;}}
320 1 if(rcv_inf10==0x02){
321 2 rcv_inf10=0;
322 2 while((UARTLSR&0x60)==0){}
323 2 UARTTHR=0xfc;
324 2 while((UARTLSR&0x60)==0){}
325 2 UARTTHR=0xfc;
326 2 for(i=0;i<6;i++){
327 3
328 3 while((UARTLSR&0x60)==0){}
329 3 UARTTHR=date[i];}}
330 1
331 1 }
332 /*********************************************************************************************************
333 ** 函数名称: send_y_h
334 ** 功能描述: 串口发送信息程序
335 ** 输 入: 无
336 ** 输 出: 无
337 ** 全局变量: 无
338 ** 调用模块: 无
339 **
340 ** 作 者: 曾银玲
341 ** 日 期: 2004年11月25日
342 **********************************************************************************************************
-**/
343
344 void send_inf(void)
345 {
346 1 uint16 i,j,start_octet,end_octet;
347 1 lenth[2]=BCD_D(lenth[2]);
348 1 lenth[3]=BCD_D(lenth[3]);
349 1 start_octet=(lenth[0]<<8)+lenth[1];
350 1 end_octet=start_octet+(lenth[2]<<8)+lenth[3];
351 1 if(rcv_inf01==0x02){
352 2 rcv_inf01=0;
353 2 while(!trans_over){}
354 2 SBUF=0xfc;trans_over=0;
355 2 while(!trans_over){}
356 2 SBUF=0x03;trans_over=0;
357 2
358 2 for(i=start_octet;i<end_octet;i++){
359 3 page_buffer2_trans(i);
360 3 delay(400);
361 3 buffer2_read(0x107,0);
C51 COMPILER V7.06 SERIAL 06/20/2005 15:36:06 PAGE 7
362 3 delay(400);//可修改
363 3 for(j=0;j<0x107;j++){
364 4 while(!trans_over){}
365 4 SBUF=*(sp0+j);trans_over=0;
366 4 }}
367 2 }
368 1 if(rcv_inf11==0x02){
369 2 rcv_inf11=0;
370 2 while((UARTLSR&0x60)==0){}
371 2 UARTTHR=0xfc;
372 2 while((UARTLSR&0x60)==0){}
373 2 UARTTHR=0x03;
374 2 for(i=start_octet;i<end_octet;i++){
375 3 page_buffer2_trans(i);
376 3 delay(400);
377 3 buffer2_read(0x107,0);
378 3 delay(400);//可修改
379 3 for(j=0;j<0x107;j++){
380 4 while((UARTLSR&0x60)==0){}
381 4 UARTTHR=*(sp0+j);
382 4 }}
383 2 }
384 1
385 1 }
386
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1049 ----
CONSTANT SIZE = 24 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 9
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -