DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 124|回复: 0
打印 上一主题 下一主题

89C51单片机的I/O 口模拟串行通信实现

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-16 17:15:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

                      目前普遍采用的MCS51 和PIC 系列单片机通常只有一个(或没有)UART异步串行通信接口,在应用系统中若需要多个串行接口(例如在多机通信系统中,主机既要和从机通信又要和终端通信)的情况下,通常的方法是扩展一片8251 或 8250 通用同步/异步接收发送芯片(USART),需额外占用单片机I/O 资源。
  MCS51是指由美国INTEL公司(对了,就是大名鼎鼎的INTEL)生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。
  1.串行接口的基本通信方式
  串行接口的有异步和同步两种基本通信方式。异步通信采用用异步传送格式,如图1 所示。数据发送和接收均将起始位和停止位作为开始和结束的标志。在异步通信中,起始位占用一位(低电平)。



  3.接口程序设计
  软件设计中,89C51 单片机的P1.0 和P1.1 口分别模拟串行通信的发送和接收,其接口程序主要由INPUT 发送子程序和OUTPUT接收子程序组成。通信速率1200 bit /s,帧格式为N.8.1。发送时,先发送一个起始位(低电平),接着按低位在先的顺序发送8 位数据,最后发送停止位。接收时,先判断P1.1 接收端口是否有起始低电平出现,其中软件编写要严格按照异步通信的时序进行,每bit 位传送时间间隔按通信速率1200 bit /s计算为833μs。
  其模拟串行通信程序清单见下,系统要求单片机晶振为6M。程序清单如下:
  TXD EQU P1.0
  RXD EQU P1.1 ;定义89C51 P1.0 为发送端,P1.1 为接收端
  ORG 0000H
  AJMP MAIN
  ORG 0100H
  MAIN: MOV A, #30H
  MOV R5,#N
  SETB RXD ;P1.0 置高
  TX: LCALL INPUT ;调用发送子程序,将寄存器A 中内容发给PC 机
  ;
  SETB TXD ;P1.1 置高
  MOV R0,#40H
  RX: LCALL OUTPUT ;调用接收子程序,将接收的N 个数据存放在以40H开始的地址中
  MOV @R0,A
  INC R0
  DJNZ R5, RX ;N 个数据接收结束,则等待,否则转RX 继续接收
  3
  AJMP $
  ;**************延时833μs 子程序*****
  DEL833: MOV R7 ,#205
  MS11: DJNZ R7,MS11
  RET
  ; **********************************
  ;******** 89C51发送数据给PC 机子程序****
  INPUT: CLR C
  MOV TXD,C ;发送起始位
  LCALL DEL833 ;延时
  MOV R3,#8
  REP: RRC A
  MOV TXD ,C
  LCALL DEL833
  DJNZ R3,REP ;发送8 位数据
  SETB C ;发送停止位
  MOV TXD,C
  LCALL DEL833
  RET
  ;********从PC 机接收数据子程序********
  OUTPUT: JB RXD, $ ; 判断是否有起始位出现
  LCALL DEL833
  MOV R3,#8
  OUT: MOV C ,RXD
  RRC A
  LCALL DEL833
  DJNZ R3,OUT ; 接收8 位数据
  JNB RXD ,$ ; 判断是否有停止位出现
  RET
  本文介绍的用 89C51 单片机I/O 口模拟实现串行通信的方法,已成功地应用在某电压数据采集系统中,这样的进步,让这项技术有了更加高的期待性,在社会上也有了很好的反应,这样就让这个研究成果有了很好的作用。
            
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2026-4-12 21:02 , 耗时 0.096397 秒, 19 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

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