标题: 串口通信 PC机向单片机发送命令打开或关闭指定LED灯 [打印本页]

作者: yin...    时间: 2018-11-5 17:38
标题: 串口通信 PC机向单片机发送命令打开或关闭指定LED灯
输入输出一样,但是if判段数据怎么不对,灯亮不了


#include<reg52.h>
#include<string.h>


void main (void)
{ char a,b=0;
  SCON=0x50;//串行口方式1
  PCON=0x00;//T1初始化,
  TMOD=0x20;//T1设为方式2
  TH1=0xFD;//选9600波特,fosc=11.0592MHz
  TR1=1;//启动T1  
  while(1)
    {
      if(RI)//如果接收到数据,就把接收到的数回发给PC
         { RI=0;//清接收标志
           a=SBUF ;//读串行口数据
           SBUF=a;//把从PC机发送过来的数据返回给PC机
           while(!TI);//没有发送完等待
           TI=0;//清发送完中断标志
                   if(a==1){
                                P0 = 0x00;
                   }
                   if(a==0){
                                P0 = 0xff;
                   }
       }
  }  
}


新建文件夹 (2).zip

41.46 KB, 下载次数: 10


作者: 黄煌皇    时间: 2018-11-5 19:23
你是不是忘记给TL1赋值了?
作者: devcang    时间: 2018-11-5 19:46
PC 串口要按十六进制发1,即ASCII 是1 ,而不是字符'1'。。。。。。。。。。

否则,程序要修改成

                   if(a==’1‘){
                                P0 = 0x00;
                   }
                   if(a==‘0’){
                                P0 = 0xff;
                   }
作者: wushiye54    时间: 2018-11-5 20:41
#include<reg52.h>
#include<string.h>

void main (void)
{     char a,b=0;
  SCON=0x50;//串行口方式1
  PCON=0x00;//T1初始化,
  TMOD=0x20;//T1设为方式2
  TH1=0xFD;//选9600波特,fosc=11.0592MHz
  TR1=1;//启动T1  
  while(1)
    {
      if(RI)//如果接收到数据,就把接收到的数回发给PC
      {                      RI=0;//清接收标志
           a=SBUF ;//读串行口数据
           SBUF=a;//把从PC机发送过来的数据返回给PC机
           while(!TI);//没有发送完等待
           TI=0;//清发送完中断标志
            switch(a)
             {
               case 0x00 : P0=0x00; break;   
               case 0x01 : P0=0xAA; break;
               case 0x02 : P0=0xFF; break;
             }   
       }
   }  
}
有强迫症,帮你整理一下。。


作者: wulin    时间: 2018-11-5 21:01
void main (void)
{ char a,b=0;
  SCON=0x50;//串行口方式1
  PCON=0x00;//T1初始化,
  TMOD=0x20;//T1设为方式2
  TH1=0xFD;//选9600波特,fosc=11.0592MHz
  TL1=0xFD;//漏写
  TR1=1;//启动T1  
  while(1)
作者: cchs    时间: 2018-11-5 23:17
pc给它发的是不是ascii码?
串口设置为二进制
作者: jiaosw410923    时间: 2018-11-6 08:17
串口的发送设置
作者: yin...    时间: 2018-11-6 21:02
懂了,还是我自己没学好,谢谢大佬们的回答
作者: yin...    时间: 2018-11-6 21:09
devcang 发表于 2018-11-5 19:46
PC 串口要按十六进制发1,即ASCII 是1 ,而不是字符'1'。。。。。。。。。。

否则,程序要修改成

明白了,谢谢大佬。
还有一个问题
PC机向单片机发送命令启动或停止蜂鸣器播放音乐,
当播放音乐时该怎么停止,这时是播放函数运行中,pc输入数据要等到放完才接受,也就是停不下来





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1