头像-368859

822e5d1f5aabbd6b

个人成就

获得 0 次赞

帮助过0人

单片机串口接受数据问题:怎么让串口只接受数字1 才做出响应?

#include <reg52.h>unsigned char timer1;sbit DIR = P1^2;//位定义DIR为P1.0口,控制步进电机转向sbit ENA=P1^1; //位定义ENA为P1.1,控制步进电机的使能sbit PWM=P1^0;//控制输出脉冲void Delay(unsigned int t);void system_Ini()   //调用子函数初始化定时器T1{   TMOD &= 0xF0;  //设置定时器模式   TMOD |= 0x01; //设置定时器模式   TL0 = 0x33;  //设置定时初值   TH0 = 0xFE; //设置定时初值   TF0 = 0;   //清除TF0标志   TR0 = 1;  //定时器0开始计时}void UsartInit(){SCON=0X50;      //设置为工作方式1TMOD &= 0x0F;  //设置定时器模式TMOD|=0X20;   //设置计数器工作方式2PCON=0X80;   //波特率加倍TH1=0XF3;   //计数器初始值设置,注意波特率是4800的TL1=0XF3;    ES=1;     //打开接收中断EA=1;    //打开总中断TR1=1;  //打开计数器}bit receiveFlag = 0;main()                                                  {int count = 0;system_Ini();  //调用子函数初始化定时器 T1UsartInit();IE = 0X92;//开T0串口中断,开总中断10010010while(1){    if(receiveFlag)  {    count = 0;    receiveFlag = 0;    while(count < 205)    {        if (timer1>10)         //决定这一个脉冲的周期时间,此处为0.5ms*10=5ms            {                 timer1=0;                 count ++;            }         if (timer1<3)            {                 PWM=0;            }        else            {                 PWM = 1;            }     }    }    } }void T1zd(void) interrupt 1 //开定时器0中断     T0中断   {TH0 = 0xfe;TL0 = 0x33;timer1++;//计数+1}void Usart() interrupt 4   //串口相应中断{  RI = 0;//清除接收中断标志位    receiveFlag = 1;}void Delay(unsigned int t)//延时{                                   while(t--)        {                 ;        }}