| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 753 人关注过本帖
标题:[讨论]
取消只看楼主 加入收藏
mengyegan
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2005-5-26
收藏
 问题点数:0 回复次数:0 
[讨论]
void readmeter(void) { uint xdata text,delay,count,counts,i; lcd_init(); tptr=&hzk[5][0]; show_hz(2,13,tptr); tptr=&hzk[6][0]; show_hz(2,16,tptr); count=0; counts=2; keybuf=0; while(keybuf!=ESC) { while(keybuf==STOP) wait(8); func_a=0x10; /*设置第一字节*/ byte_send_cnt=10; /*计算出总共应发送的字节数8+2*/ tr_rc_dat_lgth=byte_send_cnt; /*保存数据包长度*/ func_c=0x00; /*不对继电器操作*/ send_buf[10]=0x09; send_buf[9]=0xaf; send_buf[8]=func_a; /*send_buf[8]*/ send_buf[7]=func_c; send_buf[6]=snoh; send_buf[5]=snol; send_buf[4]=0xaa; send_buf[3]=0xaa; cal_chk_sum(); send_buf[2]=chk_sum_bak_h; /*send_buf[2]*/ send_buf[1]=chk_sum_bak_l; /*send_buf[1]*/ count++; counts++; if(count>13) { count=1; wait(30); lcd_init(); tptr=&hzk[5][0]; show_hz(2,13,tptr); tptr=&hzk[6][0]; show_hz(2,16,tptr); counts=3; } text=text_s+counts*30; wr_two(text&0x00ff,text>>8,0x24); wr_non(0xb0); auto_wr((snoh/0x10)+0x10); auto_wr((snoh%0x10)+0x10); auto_wr((snol/0x10)+0x10); auto_wr((snol%0x10)+0x10); auto_wr(0x00); auto_wr(0x00); TMOD=0x01; /*定时器0 工作于模式1(16位计数器)*/ TCON=0x11; /*定时器0 启动工作,外部中断0由下降沿触发*/ TH0=0xce; IE=0x87; tx_rx_byte='S'; /*置为可发送状态*/ tmr_init=0xff; rx_tx=0; t_end_bit=0; t_nor_bit=0; bit_send_cnt=0x30; delay=0; i=0; do{ r_lamp=1; t_lamp=0; delay++; if(delay==30000) { i++; delay=0; } if(i==2) { r_lamp=1; t_lamp=1; break; } }while(tx_rx_byte!=0||t_end_bit!=1); r_status(1); wr_non(0xb2); now4++; /*实现表号循环抄表*/ if(now4<10) goto r_read5; now4=0; now3++; if(now3<10) goto r_read5; now3=0; now2++; if(now2<10) goto r_read5; now2=0; now1++; if(now1<10) goto r_read5; now1=0; r_read5: if(now1>last1) goto r_read3; else if(now1==last1) { if(now2>last2) goto r_read3; else if(now2==last2) { if(now3>last3) goto r_read3; else if(now3==last3) { if(now4>last4) goto r_read3; } } } goto r_read4; r_read3: now1=first1; now2=first2; now3=first3; now4=first4; r_read4: snoh=now1*16+now2; snol=now3*16+now4; }; EA=1; } ************************************************************* void monitor(void) { uint xdata text,i,count,counts,delay; lcd_init(); tptr=&hzk[25][0]; show_hz(2,10,tptr); /*线路监视*/ tptr=&hzk[26][0]; show_hz(2,13,tptr); tptr=&hzk[23][0]; show_hz(2,16,tptr); tptr=&hzk[24][0]; show_hz(2,19,tptr); keybuf=0; count=0; counts=2; while(keybuf!=ESC) { r_lamp=1; for(i=0;i<=29;i++) /*清空收\发数组*/ { rec_buf[i]=0x00; send_buf[i]=0x00; } no_answer=0; wdg=!wdg; count++; counts++; if(count>13) { wait(30); count=1; lcd_clrscr(); tptr=&hzk[25][0]; show_hz(2,10,tptr); tptr=&hzk[26][0]; show_hz(2,13,tptr); tptr=&hzk[23][0]; show_hz(2,16,tptr); tptr=&hzk[24][0]; show_hz(2,19,tptr); counts=3; } text=text_s+counts*30; wr_two(text&0x00ff,text>>8,0x24); wr_non(0xb0); r_status(0); wr_non(0xb2); if(no_answer==1)/*只有收到信号才显示*/ { count--; counts--; } no_answer=0; while(keybuf==STOP) { wait(8);} }; } 这两子程序在测试时,对“ESC”响应很慢 请问各位大虾,它们问题是出在do while循环吗?应该怎么解决? 谢谢了!
搜索更多相关主题的帖子: 继电器 数据包 count 
2005-05-26 19:10
快速回复:[讨论]
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032240 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved