打印

串口接收不到数据

[复制链接]
1634|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pengf|  楼主 | 2013-2-19 22:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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();


                }


   }
沙发
renyaq| | 2013-2-19 22:31 | 只看该作者
楼主没调用串口初始化函数

使用特权

评论回复
板凳
栩栩如生| | 2013-2-19 22:33 | 只看该作者
主程序里的函数只被执行一次,是否应改设计为循环呢?

使用特权

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

使用特权

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

使用特权

评论回复
6
pengf|  楼主 | 2013-2-19 22:37 | 只看该作者
呵呵,结贴了

使用特权

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

本版积分规则

718

主题

10129

帖子

3

粉丝