打印

帮我改一下程序,谢谢大家了

[复制链接]
1320|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wang1987|  楼主 | 2010-4-8 07:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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();


                }


   }

相关帖子

沙发
wang1987|  楼主 | 2010-4-8 08:00 | 只看该作者
串口接收不到数据,不知道是哪里出错了,希望大虾们给我更多的指点

使用特权

评论回复
板凳
jiabin1024| | 2010-4-8 08:45 | 只看该作者
楼主没调用串口初始化函数

使用特权

评论回复
地板
jiabin1024| | 2010-4-8 08:49 | 只看该作者
主程序里的函数只被执行一次,是否应改设计为循环呢?

使用特权

评论回复
5
wang1987|  楼主 | 2010-4-8 11:26 | 只看该作者
已经初始化串口了,在初始化定时器中,谢谢你,我又写了个测试程序,证明我这程序没有错,是因为在KEILC中添加注释时出了问题,我把程序重新写了一遍,但不添加注释,就可以收到了,
  回想一下,可能是我在没添加注释的前,就把输入法切换成拼音了,然后再在KEILC中打出的字符,不可见,,可能是软件的问题,
  谢谢大家了!

使用特权

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

本版积分规则

17

主题

87

帖子

0

粉丝