打印

串口数据

[复制链接]
768|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pengf|  楼主 | 2013-10-10 19:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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-10-10 19:42 | 只看该作者
楼主没调用串口初始化函数

使用特权

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

使用特权

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

使用特权

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

使用特权

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

使用特权

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

本版积分规则

718

主题

10129

帖子

3

粉丝