微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于8250的多机通信设计

基于8250的多机通信设计

时间:01-19 来源:互联网 点击:

D1

D2

D3

D4

D5

D6

D7

1

停止位

若要求8250的奇偶位为0,只需执行

MOV DX,3FBH

MOV AL,3BH

OUT DX,AL

这三条语句,此时帧格式为:

起始位

D0

D1

D2

D3

D4

D5

D6

D7

0

停止位

显然,前者可作为多机通信中的地址帧,而后者作为数据帧。

4﹒ PC机非标准波特率的设置

8051单片机系统时钟绝大多数情况下都采用6MHz的石英晶体振荡器,其串行口的波特率是由其内部定时器TH1(8位)决定的,具体计算公式为:

Baud=(fosc﹡2SMOD)/(32﹡12﹡(256-TH1))=(15625﹡2SMOD)/(256-TH1)

式中SMOD可编程控制,TH1的不同值所确定的波特率不同。

如果用BASIC或直接调用ROM BIOS INT14(串行口中断),那么只能设置几种标准的波特率。在这种标准波特率下,8051很难实现,如4800的波特率,对使用6MHz晶振的单片机就无法实现。然而在实际应用中,不大可能只为满足标准波特率要求而选择晶振。另一方面,在保证可靠通信的前提下,总是希望通信速度尽可能的快。所以,可以通过直接对8250的除数锁存器编程,以取得非标准波特率。

假设多机通信波特率计算值为2400,由于单片机无法实现,因此可设计为1953,在单片机上令TH1=248且SMOD=0,而在PC机上令除数等于59,这样便可以实现多机通信。

5﹒ 对8250的编程

仅就8250而言,异步串行通信编程步骤如下:

step1:设定通信的规程,如波特率、奇偶校验方式、数据格式、数据字节长度等;

step2:读取通信线路(或MODEM)的状态,判断是否可以进行通信;

step3:送出(或接收)一个字节;

step4:重复step2和step3直到通信完毕。

当允许中断时,CPU送出(或接收)一个字节后,并不需要不断查询控制器的状态,而可转向执行其他任务。当有中断信号INT4发生并响应后,再按上述step2、step3第三步处理即可。

应用8250进行串行通信时,首先要对其初始化,即设置波特率、通信采用的数据格式、是否使用中断、是否自测试操作等。初始化后,则可采取程序查询方式或中断方式进行通信。

8250的初始化一般分三步:

step1:设置波特率(假设为1200)

MOV AL,80H

MOV DX,3FBH

OUT DX,,AL

MOV AL,60H

MOV DX,3FBH

OUT DX,AL

MOV AL,00H

MOV DX,3F9H

OUT DX,AL

step2:设置通信数据格式(假设7个数据位,1个停止位,偶校验)

MOV AL,1AH

MOV DX,3FBH

OUT DX,AL

step3:设置操作方式

MOV AL,03H

MOV DX,3FCH

OUT DX,AL;不允许中断输出

MOV DX,3FCH

MOV AL,OBH

OUT DX,AL;允许中断输出

MOV AL,13H

MOV DX,3FCH

OUT DX,AL;自测试工作方式

step4:设置中断允许寄存器

MOV AL,00H

MOV DX,3F9H

OUT DX,AL

6﹒ 本文的创新点

本文的创新点在于:第一,利用可编程异步串行通信接口芯片执行异步串行通信协议以实现通信;第二,通过直接对8250的除数锁存器编程的方法,以取得非标准波特率。

参考文献:

[1] 洪家平. WINDOWS环境下PC机与单片机的通信.北京:《微计算机信息》2005年第三期第70~73页

[2] 李朝青.PC机及单片机数据通信技术.北京:北京航空航天大学出版社,2002.12

[3] 姚志江等.一个8051MCU可综合VHDL模型的完整实现.北京:计算机应用,2000(20)

[4] 李广第.单片机基础.北京:北京航空航天大学出版社,2002.12

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top