找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2930|回复: 0
收起左侧

单片机串行通信实验

[复制链接]
ID:372473 发表于 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

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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