新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 单片机I/O 口模拟串行通信设计

单片机I/O 口模拟串行通信设计

作者: 时间:2011-08-04 来源:网络 收藏

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 口模拟实现串行通信的方法,已成功地应用在某电压数据采集系统中,这样的进步,让这项技术有了更加高的期待性,在社会上也有了很好的反应,这样就让这个研究成果有了很好的作用。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭