微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 为什么上位机输入01能开启 却不能输入02关闭(有时候又能...

为什么上位机输入01能开启 却不能输入02关闭(有时候又能...

时间:10-02 整理:3721RD 点击:
#include<intrins.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
sbit RX=P1^1;
sbit TX=P1^2;
sbit D5=P1^4;
unsigned char flag_uart=0,flag_on,flag_s=0,flag_open=0;
uchar a;
float S;
void Star_hcsr04();  //HC-SR04启动函数
void Count();   //计算函数
void init()     //初始化
{
TMOD=0X21;
SCON=0X50;
TH0=0;
TL0=0;
TH1=0XFD;
TL1=0XFD;
TR1=1;
ET0=1;
SM0=0;
SM1=1;
REN=1;
EA=1;
ES=1;

}

void main()
{
init();
TX=0;
RX=0;
while(1)
{
  if(flag_uart==1)
  {
   flag_uart=0;
   ES=0;
   TI=1;
   switch(flag_on)
   {
    case 0:puts("turn on hcsr04!\n");
      while(!TI);
      TI=0;
      ES=1;
      flag_open=1;
         break;
    case 1:puts("turn off hcsr04!\n");
      while(!TI);
      TI=0;
      ES=1;
      TX=0;
      flag_open=0;
      break;
    case 2:puts("Error!\n");
      while(!TI);
      TI=0;
      ES=1;
      flag_open=0;
      break;
   }
  
  }
  if(flag_open==1)
  {
   Star_hcsr04();
   Count();
         
  }

}
}
void Star_hcsr04()
{
TX=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
TX=0;
while(!RX);
TR0=1;
D5=0;
while(RX);
TR0=0;
D5=1;
}
void Count()
{
unsigned char time;
time=TH0*256+TL0;
TH0=0;
TL0=0;
S=(time*1.845)/10;
if(flag_s==1||S>4000)
{
  flag_s=0;   
  ES=0;
  TI=1;
  puts("----\n");
  while(!TI);
  TI=0;
  ES=1;
}
    ES=0;
TI=1;
printf("the distance is %fmm\n",S);
while(!TI);
TI=0;
ES=1;
}
void T0_time() interrupt 1
{
  flag_s=1;
TH0=0;
TL0=0;

}
void ser() interrupt 4
{
  RI=0;
a=SBUF;
flag_uart=1;
if(a==1)
  flag_on=0;
else if(a==2)
   flag_on=1;
  else
   flag_on=2;
}


已退回1积分

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top