C51可收发串口程序

发布者:温暖阳光最新更新时间:2016-10-14 来源: eefocus关键字:C51  收发串口程序 手机看文章 扫描二维码
随时随地手机看文章
#include

#include
#include
#define uchar unsigned char
uchar code tab1[]={0xfe,0xfd,0xfb,0xf7,0x7e,0x7d,0x7b,0x77,0xbe,0xbd,0xbb,0xb7,0xde,0xdd,0xdb,0xd7};
uchar keyscane();
void transmit(uchar dat);
void delay(unsigned int x);
void send(void);
uchar hang=0,lie=0; 

main()
{ uchar k=0,i;
  SCON=0x50; //串口方式 1,10位UART ,波特率可调
  TMOD=0x20; //T1方式2,T2CON的TCLK=0,T1溢出脉冲作波特率。
  TL1=0xcc;  //常数   f=12,波特率600
  TH1=0xcc;  //常数
  TR1=1;  //启动T1
   
  while(1)
   {
     k=keyscane(); //扫描键盘
  if(k==1)   //k=1,有键按下
    {
   k=0;      //清标志位
   i=4*hang+lie;         //计算键值
   transmit(tab1[i]);    //调用发送函数
   
    }       //以上发送
 
     if(RI==1)  //接收到一帧数据
    {
      send();    //调用接收函数
    }      
  }
}

void transmit(uchar dat)   //发送
{
  P1=dat;  //发送数据在本机p1口显示
  SBUF=dat;   //发送
  while(TI==0)
   ;
  TI=0;
}

void send(void)   //接收函数
{
  RI=0;
  P1=SBUF;
}

void delay(unsigned int x)  //延时
{ unsigned int i;
  for(i=0;i     {}
}

uchar keyscane()     //键盘扫描
{  P0=0xf0;
   if((P0&0xf0)!=0xf0)           
     { switch(P0)
     { case 0x70:lie=0;break;
    case 0xb0:lie=1;break;
    case 0xd0:lie=2;break;
    case 0xe0:lie=3;break;
    default:break;
   }
   delay(700);
   P0=0x0f;
    if((P0&0x0f)!=0x0f) 
      { switch(P0)
      { case 0x07:hang=0;break;
        case 0x0b:hang=1;break;
        case 0x0d:hang=2;break;
        case 0x0e:hang=3;break;
     default:break;
    }
          return 1; 
     }
  }
  else
    {
     return 0;
    }  
}

关键字:C51  收发串口程序 引用地址:C51可收发串口程序

上一篇:T2中断动态显示时分秒程序
下一篇:c51 奇偶校验位应用

小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved