标题: 单片机串行通信实验 [打印本页]

作者: gejiapeng    时间: 2018-7-16 13:54
标题: 单片机串行通信实验
用单片机串行口,实现本机串行接口的自通讯。连接起本机的TXDRXD。将本机数据通过异步方式从本机的TXD引脚发送,再从本机的RXD引脚接收。单片机从P2口读入的按键数值并向TXD引脚上发送,之后从RXD引脚接收该数据,并通过P1口显示在 LED发光二极管上。

#include <reg52.h>
void system_init();
void main()
{
  system_init();//系统初始化
  SBUF=P2;//首次读入P2口的数据并发送到串行口
  while(1);
}

/*系统初始化函数*/
void system_init()
{
    SCON = 0x50;//REN=1允许串行接受状态,串口工作模式1 (全双工方式) 、数据位8、停止位1、校验位无。
    PCON = 0x80;//SMOD=1,波特率加倍
    TMOD = 0x20;//定时器T1设置为工作方式2(自动装载初值的8位定时器)0010,T0任意(不使用T0)0000
    TH1 = 0xf9;//设置波特率9600。T1=256-2*12*10^6/(384*2400)=249.489583=0xf9(四舍五入)
    TL1 = 0xf9;      
    TR1 =1;
    ES =1;
    EA =1;
}
/*串行口中断服务程序*/
void serial_interrupt() interrupt 4
{
  if(RI) //串行口如果接收到数据,则清除中断标志,并将数据显示到LED
  {
      RI=0;
      P1=SBUF;
  }
  if(TI) //串行口如果发送完一次数据,则清除中断标志,并传送下一组按键数据
  {
      TI=0;
      SBUF=P2;
  }
}

汇编语言版见附件

新建文本文档.zip

1.05 KB, 下载次数: 21, 下载积分: 黑币 -5






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1