找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1411|回复: 0
打印 上一主题 下一主题
收起左侧

单片机串行通信例子

[复制链接]
跳转到指定楼层
楼主
/*****单片机甲、发送单片机*****/
#include<reg51.h>
/*
unsigned char dat=0;  //显示值dat为全局变量,初值为0
char code tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};                      //定义共阳极LED字形码
*/

void delay()    // 延时
{  unsigned char i;
  for(i=0;i<40;i++)
  {
    TH0=(65536-5000)/256;
    TL0=(65536-5000)%256;
    TR0=1;
    do{;} while(TF0!=1) ;
    TF0=0;  TR0=0;         
   }  

}

void main()
{
  TMOD=0x21;     // T1 方式2   T0 方式1
  TH1=TL1=0xe8;  //设定波特率        1200
  TR1=1;
  SCON=0x40;      //方式1   REN=1
  while(1)
   {
     TI=0;
          P1=0xff;                   
     SBUF=P1;
     do{;}while(TI!=1);
      TI=0;   
            delay();
         
  }
}






/*******单片机乙、接收单片机********/
#include<reg51.h>
unsigned char a;
unsigned char dat=0;  //显示值dat为全局变量,初值为0
char code tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};                      //定义共阳极LED字形码


void main()
{
  TMOD=0x21;     // T1 方式2   T0 方式1
  TH1=TL1=0xe8;  //设定波特率  1200
  TR1=1;
  SCON=0x50;      //方式1   REN=1
  while(1)
   {

          do{;}while( RI!=1);
   RI=0;  
   a=SBUF; // 接收数据
   if(a==0xfe)
      {if(dat!=9){dat++;}
          else
          dat=0; }
   if(a==0xfd)
    { if(dat!=0){dat--;}
     else
           dat=9; }
   if(dat>=0&&dat<=9){P2=tab[dat]; }


  }
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表