打印

串口数据问题

[复制链接]
563|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wangpe|  楼主 | 2022-1-1 14:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg51.h>
void send(unsigned char send_date);
unsigned char resive();
unsigned char resive_date;//接受到得数据保存在resive_date单元
void initT1();
void delay(int time);
void led_light();
void led_run();
void led_close();
void serial();



void initT1()//定时器X初始化,设置波特率
{
     TMOD=0x20;//方式控制
     PCON=0x00;
     SCON=0x50;//方式一,允许接收
     //PCON=0x00;
     EA=0;
     ET1=0;
     TH1=0xfd; // 给定时器赋初值
     TL1=0xfd;
     TR1=1;
}


void serial_init()//串口初始化,方式一,允许接收
{
      SCON=0x50;//方式一,允许接收
      PCON=0x00;
      EA=0;
      ES=0;//关闭串口中断

}
void send (unsigned char send_date)//发送子程序
{
              TI=0;
      SBUF=send_date;          // 发送一个字节
      while(!TI)
      ;
      TI=0;
}


unsigned char resive()//接收子程序
{
       unsigned char resive_date;
       while(!RI)
           ;
           RI=0;
           resive_date=SBUF;
      return resive_date;
}

void led_light()
{

   P1=0x00;
}
void led_run()
{
      unsigned char i;
      do{
      for(i=0;i<8;i++)
        P1=~(0x01<<i);
      }
      while(1);
}


void led_close()
{

   P1=0xff;
}

void delay(int time)
{
      while(time--)
      ;
      }
void main()                                                      //主程序
{
     unsigned char redate,i;
     
     void initT1();           //定时器1初始化,用于波特率的设定
      //void serial_init();       //串口初始化
      for(i=1;i<255;i++)
      {
          send(i);
              delay(32000);
              delay(32000);
              }

    redate=resive();//接收到得数据
      switch(redate)
      {
          case 0xff:led_light();
                         break;

            case 0xfe:led_run();
                         break;
                   default: led_close();


                }


   }

使用特权

评论回复
沙发
chuxh| | 2022-1-1 15:41 | 只看该作者
楼主没调用串口初始化函数

使用特权

评论回复
板凳
pengf| | 2022-1-1 15:43 | 只看该作者
主程序里的函数只被执行一次,是否应改设计为循环呢?

使用特权

评论回复
地板
wangpe|  楼主 | 2022-1-1 15:46 | 只看该作者
已经初始化串口了,在初始化定时器中,谢谢你,我又写了个测试程序,证明我这程序没有错,是因为在KEILC中添加注释时出了问题,我把程序重新写了一遍,但不添加注释,就可以收到了,

使用特权

评论回复
5
wangpe|  楼主 | 2022-1-1 15:51 | 只看该作者
可能是我在没添加注释的前,就把输入法切换成拼音了,然后再在KEILC中打出的字符,不可见,,可能是软件的问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

938

主题

9837

帖子

2

粉丝