⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chaosheng.lst

📁 此程序是8051超声波液位仪的源代码 有一定的参考价值
💻 LST
📖 第 1 页 / 共 2 页
字号:
 228   1              temp1=div*temp1;
 229   1              temp2=plus_data*v/1000;
 230   1              s=temp1+temp2;
 231   1              if(average==0)
 232   1                  average=s;       //第一次测量的是第一次值二倍的平均值
 233   1              average=(average+s)>>1;//每次测量的值都和上一次的平均值取平均 逐次逼近可以加快计算速度
 234   1              distan_data[0]=':';
 235   1              distan_data[1]=' ';
 236   1              distan_data[2]=*(num_data+average/1000);
 237   1              distan_data[3]=*(num_data+average%1000/100);
 238   1              distan_data[4]=*(num_data+average%100/10);
 239   1              distan_data[5]=*(num_data+average%10);
 240   1              for(i=0;i<10;i++);  //延时大约100us
 241   1              cmd(0x9c); //位置
C51 COMPILER V8.02   CHAOSHENG                                                             05/25/2007 11:20:26 PAGE 5   

 242   1              for(i=0;i<10;i++);  //延时大约100us
 243   1              dat(distan_data,6);    //距离
 244   1      }
 245          
 246          /*
 247          sbit SCK=P1^0;
 248          sbit SI=P1^1;
 249          sbit SO=P1^2;
 250          sbit cs_feed=P1^3;//喂狗信号
 251          */
 252          
 253          //看门狗初始化
 254          void WTD_init()
 255          {
 256   1              uchar i;
 257   1              uchar instr;
 258   1              cs_feed=0;  // 用来写 WREN 写 使能
 259   1              instr=0x06;
 260   1              for(i=0;i<8;i++)
 261   1              {
 262   2                      SCK=0;
 263   2                      SI=instr&0x80;;
 264   2                      SCK=1;
 265   2                      instr<<=1;
 266   2              }
 267   1              cs_feed=1;
 268   1              _nop_();
 269   1              cs_feed=0;  //用来写状态寄存器指令
 270   1              instr=0x01;
 271   1              for(i=0;i<8;i++)
 272   1              {
 273   2                      SCK=0;
 274   2                      SI=instr&0x80;;
 275   2                      SCK=1;
 276   2                      instr<<=1;
 277   2              }
 278   1              instr=0x10;     //写状态寄存器
 279   1              for(i=0;i<8;i++)
 280   1              {
 281   2                      SCK=0;
 282   2                      SI=instr&0x80;;
 283   2                      SCK=1;
 284   2                      instr<<=1;
 285   2              }
 286   1      
 287   1      }
 288          
 289          //喂狗
 290          void feed_WTD()
 291          {
 292   1              cs_feed=1;
 293   1              _nop_(); _nop_();
 294   1              cs_feed=0;
 295   1              _nop_(); _nop_();
 296   1      }
 297          
 298          // 超声波返回中断 读取计数器中的值
 299          void plus_count (void ) interrupt 0 using 0
 300          {
 301   1              TR0=0;
 302   1              plus_data=TH0;
 303   1              plus_data<<=8;
C51 COMPILER V8.02   CHAOSHENG                                                             05/25/2007 11:20:26 PAGE 6   

 304   1              plus_data|=TL0;
 305   1      }
 306          //
 307          void init_RT()
 308          {
 309   1               uchar data k,w;
 310   1               cmd(0x30);//使用基本指令集
 311   1               for(k=0;k<10;k++);  //延时大约100us
 312   1               cmd(0x0c); //显示状态开关 整体,游标,游标位置
 313   1               for(k=0;k<10;k++); //延时大约100us
 314   1               cmd(0x01); //清除显示,地址计数器AC到零
 315   1               for(k=0;k<250;k++)
 316   1               for(w=0;w<200;w++);//延时大约500ms
 317   1               cmd(0x81); //位置
 318   1               for(k=0;k<10;k++);  //延时大约100us
 319   1               dat(init,12);     //超声波液位仪
 320   1               for(k=0;k<10;k++);  //延时大约100us
 321   1               cmd(0x90); //位置
 322   1               for(k=0;k<10;k++);  //延时大约100us
 323   1               dat(work_temp,16);    //温度
 324   1               for(k=0;k<10;k++);  //延时大约100us
 325   1               cmd(0x88); //位置
 326   1               for(k=0;k<10;k++);  //延时大约100us
 327   1               dat(chao_v,16);    //超声波速度
 328   1               for(k=0;k<10;k++);  //延时大约100us
 329   1               cmd(0x98); //位置
 330   1               for(k=0;k<10;k++);  //延时大约100us
 331   1               dat(test,16);    //距离
 332   1      
 333   1      }
 334          //主函数
 335          void main()
 336          {
 337   1               uchar data tempt;//当前温度
 338   1               unsigned int i;
 339   1               unsigned int j;
 340   1               TMOD=0x01;  //计数器0工作在16位定时器状态
 341   1               EA=1;
 342   1               PX0=1;  //外部中断0优先级高
 343   1               IT0=1;  //边沿触发 自动清零
 344   1              // WTD_init();  //看门狗初始化
 345   1               //init_RT();
 346   1               START=0;//开始发送超声波
 347   1               while(1)
 348   1               {  /*
 349   2                  // read_temp();
 350   2                   //tempt=deal_dis();   //取回温度值
 351   2                   send_wave();
 352   2                   while(TF0==0);
 353   2                      math(tempt);//计算距离
 354   2                      TF0=0;
 355   2                      feed_WTD();  //喂狗
 356   2                        */
 357   2                     for(i=0;i<900;i++);
 358   2                       START=~START;
 359   2              }
 360   1      }
*** WARNING C280 IN LINE 337 OF C:\DOCUME~1\ADMINI~1\桌面\超声波5.13\CHAOSHENG.C: 'tempt': unreferenced local variable
*** WARNING C280 IN LINE 339 OF C:\DOCUME~1\ADMINI~1\桌面\超声波5.13\CHAOSHENG.C: 'j': unreferenced local variable
C51 COMPILER V8.02   CHAOSHENG                                                             05/25/2007 11:20:26 PAGE 7   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


P0 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0080H  1
P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
P2 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A0H  1
EA . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00AFH  1
WTD_init . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
  instr. . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
_math. . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  t. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  s. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0000H  2
  v. . . . . . . . . . . . . . . . . .  AUTO     DATA   FLOAT    0002H  4
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0006H  1
  temp1. . . . . . . . . . . . . . . .  AUTO     DATA   FLOAT    0007H  4
  temp2. . . . . . . . . . . . . . . .  * REG *  DATA   FLOAT    0004H  4
  distan_data. . . . . . . . . . . . .  AUTO     DATA   ARRAY    000BH  6
  div. . . . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0011H  2
_write . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  rule . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0003H  1
  temp . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0002H  1
START. . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0095H  1
_cmd . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  intr . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
DS . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0094H  1
_dat . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0006H  -----
  p. . . . . . . . . . . . . . . . . .  AUTO     DATA   PTR      0000H  3
  j. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  k. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
SI . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0091H  1
read . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0004H  1
  temp . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  value. . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
fail . . . . . . . . . . . . . . . . .  PUBLIC   DATA   PTR      0000H  2
reset. . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  flag . . . . . . . . . . . . . . . .  AUTO     DATA   BIT      0000H  1
main . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  tempt. . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0006H  2
  j. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0001H  2
temp_data. . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    0002H  2
TMOD . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0089H  1
init . . . . . . . . . . . . . . . . .  PUBLIC   DATA   PTR      0004H  2
read_temp. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
deal_dis . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  k. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  tmp. . . . . . . . . . . . . . . . .  AUTO     DATA   ARRAY    0000H  2
  dis_data . . . . . . . . . . . . . .  AUTO     DATA   ARRAY    0002H  6
init_RT. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  k. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  w. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
send_wave. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  w. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
test . . . . . . . . . . . . . . . . .  PUBLIC   DATA   PTR      0006H  2
plus_data. . . . . . . . . . . . . . .  PUBLIC   DATA   U_INT    0008H  2
TF0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008DH  1
C51 COMPILER V8.02   CHAOSHENG                                                             05/25/2007 11:20:26 PAGE 8   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


TH0. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   008CH  1
cs_feed. . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0093H  1
EX0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A8H  1
IT0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0088H  1
num_data . . . . . . . . . . . . . . .  PUBLIC   DATA   PTR      000AH  2
TL0. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   008AH  1
plus_count . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
TR0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008CH  1
PX0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B8H  1
work_temp. . . . . . . . . . . . . . .  PUBLIC   DATA   PTR      000CH  2
average. . . . . . . . . . . . . . . .  PUBLIC   DATA   U_INT    000EH  2
SCK. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0090H  1
feed_WTD . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
failed . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  k. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
_delay . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  t. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0006H  2
chao_v . . . . . . . . . . . . . . . .  PUBLIC   DATA   PTR      0010H  2


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1326    ----
   CONSTANT SIZE    =     84    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     18      34
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  2 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -