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

嵌入式系统 时间:2012-09-03来源:网络

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

关键词: 通信 实现 串行 模拟 单片机 I/O 89C51

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版