8251串行通讯实验Word文档格式.docx

上传人:b****5 文档编号:17772162 上传时间:2022-12-09 格式:DOCX 页数:14 大小:202.60KB
下载 相关 举报
8251串行通讯实验Word文档格式.docx_第1页
第1页 / 共14页
8251串行通讯实验Word文档格式.docx_第2页
第2页 / 共14页
8251串行通讯实验Word文档格式.docx_第3页
第3页 / 共14页
8251串行通讯实验Word文档格式.docx_第4页
第4页 / 共14页
8251串行通讯实验Word文档格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

8251串行通讯实验Word文档格式.docx

《8251串行通讯实验Word文档格式.docx》由会员分享,可在线阅读,更多相关《8251串行通讯实验Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。

8251串行通讯实验Word文档格式.docx

接收器准备好,高电平有效。

SYNDET/BRKDET:

同步/中止检测,双功能引脚。

(2)与外设或Mode相连的信号线:

DTR:

数据终端准备好,输出,低电平有效。

DSR:

数据装置准备好,输入,低电平有效。

RTS:

请求发送,输出,低电平有效。

CTS:

准许传送,输入,低电平有效。

TxD:

发送数据线。

RxD:

接收数据线。

TxC:

发送时钟,控制发送数据的速率。

RxC:

接收时钟,控制接收数据的速率。

2、8251的初始化编程和状态字

8251是一个可编程的多功能串行通信接口芯片,在使用前必须对它进行初始化编程。

初始化编

程包括CPU写方式控制字和操作命令字到8251同一控制口,在初始化编程时必须按一定的顺序。

下面的流程图:

三、实验原理图

四、实验容

本实验由实验器发送一串字符0~9,PC机串口接收并在超级终端上显示。

五、实验步骤

与PC机通讯应用实验

(1)实验连线:

a.用串口线把实验机8251模块的RS232通讯口与PC机相连,把串口旁边的短路块SW1短路在2-2/3-3上,

SW2短路在RS232上。

b.把8251实验区TxD、RxD分别与RS232实验区中的TxD、RxD相连。

c.8254定时器电路的CLK0和8251的CLOCK连到信号源CLK1(短路在1.5MHz)。

d.8254定时器电路的OUT0接8251的TxC和RxC,8254定时器电路的GATE接+5V

e.8251选通线CS与ISA总线接口模块的0000H相连,8254选通线CS与ISA总线接口模块的0020H相连。

f.8251及8254的WR连到8086主模块的,8251及格8254的RD连8086主模块的RD。

g.8251及8254模块的数据(D0~D7)、地址线(A0~A7)分别连到主模块的数据(AD0~AD7)、地址线(A0~A7)。

(2)PC机设置:

进入WINDOWS附件——>

通讯——>

超级终端。

进入终端后在“连接时使用”下

拉框选择你所使用的COM口,波特率设置为4800,数据位8位,奇偶校验位无,停止位1位,流量

控制无。

等待接收数据。

(3)编译、运行程序(8251xp.asm),运行程序前先按硬件复位,正常运行后应在PC机屏幕上循环显示“QingdongMicrocomputerInstitute”

6、实验代码

MY_STACKSEGMENTPARA'

STACK'

DB100DUP(?

MY_STACKENDS

MY_DATASEGMENTPARA'

DATA'

IO_9054base_addressDB4DUP(0);

PCI卡9054芯片I/O基地址暂存空间

IO_base_addressDB4DUP(0)

pcicardnotfindDB0DH,0AH,'

pcicardnotfindoraddress/interrupterror!

!

'

0DH,0AH,'

$'

GOODDB0DH,0AH,'

TheProgramisExecuting!

D8251_0DW0000H;

DLAB=0:

接收数据寄存器,发送保持寄存器;

DLAB=1:

波特率除数寄存器低位

D8251_1DW0001H;

中断允许寄存器;

波特率除数寄存器高位

P8254_T0DW0020H

P8254_MODEDW0023H

PC16550_0EQU03F8H;

波特率除数寄存器低位

PC16550_1EQU03F9H;

PC16550_3EQU03FBH;

线路控制寄存器LCR

PC16550_4EQU03FCH;

MODEM控制寄存器MCR

PC16550_5EQU03FAH;

线路状态寄存器LSR

DELAY_SETEQU01FFH;

延时参数

MESDB'

PCICARDNOTFOUND!

$'

MES0DB'

***********************PCICONFIGINFO*****************************'

13,10,'

MES1DB'

PCIBIOSNOTFOUND!

10,13,'

MES2DB'

PCICONFIGREADERROR!

DIS1DB'

PCIADDRESS0$'

;

DIS5DB'

BIOSNOTSUPPER!

DIS6DB'

READPCIBOARDFAIL!

-------PCIConfigurationSpaceRegisters-------------------------------

BNDB?

;

BUSNUMBER

DN_FNDB?

DeviceNumberandFunctionNumber

MY_DATAENDs

MY_CODESEGMENTPARA'

CODE'

MY_PROCPROCFAR

ASSUMECS:

MY_CODE,DS:

MY_DATA,SS:

MY_STACK

.386;

386模式编译

START:

MOVAX,MY_DATA

MOVDS,AX

MOVES,AX

MOVAX,MY_STACK

MOVSS,AX

CALLFINDPCI;

查找PCI卡资源并显示

MOVCX,wordptrIO_base_address

ANDCX,0FFFCH

ADDD8251_0,CX

ADDD8251_1,CX

ADDP8254_T0,CX

ADDP8254_MODE,CX

MOVDX,PC16550_3;

DLAB为1允许访问波特率寄存器

MOVAL,82H

OUTDX,AL

MOVDX,PC16550_0;

MOVAL,18H

MOVDX,PC16550_1;

MOVAL,00H

DLAB为0

MOVAL,03H;

附加奇偶标志位选择,无校验,1位停止位,8位字符03

MOVDX,PC16550_4;

RTS、DTR置0:

请求发送、数据终端就绪

MOVAL,03H

中断允许寄存器IER,屏蔽中断

MOVDX,P8254_MODE

MOVAL,36H;

计时器0,先低后高,方式3,二进制计数

MOVDX,P8254_T0

MOVAL,13H;

计数初值晶振6MHz波特率4800BIT,分频频率为(6000/76.8=4EH)

MOVDX,D8251_1

MOVAL,4EH;

异步1个停止位,无奇偶校验,8位字符,波特率为=发送(接收)时钟/16

OUTDX,AL

MOVAL,37H;

不搜索,不复位,请求发送,错误标志复位,正常通信,允许接收,数据准备好,允许发送

AGAIN:

MOVAH,30H;

发送初值

NEXT:

MOVDX,D8251_1

NEXT1:

INAL,DX

RCRAL,1;

检测TXRDY是否为0,即判断发送是否准备好

JNCNEXT1

CALLDELAY

MOVDX,D8251_0

MOVAL,AH

INCAH

CALLRECEIVE

CMPAH,39H;

为9赋初值

JBENEXT

JMPAGAIN

ERROR:

MOVDX,OFFSETMES2;

显示读错误信息

MOVAH,09H

INT21H

EXIT:

MOVAX,4C00H

INT21H

MY_PROCENDp

DELAYPROCNEAR;

延时程序

PUSHF

PUSHAX

PUSHDX

PUSHCX

MOVCX,-1

LOOP$;

延时

POPCX

POPDX

POPAX

POPF

RET

DELAYENDp

RECEIVEPROCNEAR

RECEIVE1:

MOVDX,PC16550_5;

接收缓冲区是否满

INAL,DX

ANDAL,01H

JZRECEIVE1;

为0未满,继续

CALLDELAY

MOVDX,PC16550_0;

PC机接收数据

MOVDL,AL

MOVAH,02H

RECEIVEENDp

BREAKPROCNEAR;

按任意键退出

MOVAH,06H

MOVDL,0FFH

JERETURN

MOVAX,4C00H

RETURN:

POPDX

BREAKENDP

*****************************************************************************

/*找卡子程序*/

*****************************************************************************

FUNCTIONCODE

IO_port_addreEQU0CF8H;

32位配置地址端口

IO_port_dataEQU0CFCH;

32位配置数据端口

IO_PLX_IDEQU200810B5H;

PCI卡设备及厂商ID

BADR0=10H;

基地址寄存器0

BADR1=14H;

基地址寄存器1

BADR2=18H;

基地址寄存器2

BADR3=1CH;

基地址寄存器3

FINDPCIPROCNEAR;

PUSHAD

PUSHFD

MOVEBX,080000000H

FINDPCI_next:

ADDEBX,100H

CMPEBX,081000000H

JNZfindpci_continue

MOVDX,offsetpcicardnotfind;

显示未找到PCI卡提示信息

MOVAH,4CH

INT21H;

退出

findpci_continue:

MOVDX,IO_port_addre

MOVEAX,EBX

OUTDX,EAX;

写地址口

MOVDX,IO_port_data

INEAX,DX;

读数据口

CMPEAX,IO_PLX_ID

JNZfindpci_next;

检查是否发现PCI卡

ADDEAX,BADR1

OUTDX,EAX;

INEAX,DX;

MOVdwordptrIO_9054base_address,EAX

ANDEAX,1

JZfindPCI_next;

检查是否为i/o基址信息

MOVEAX,dwordptrIO_9054base_address

ANDEAX,0fffffffeh

MOVdwordptrIO_9054base_address,EAX;

去除i/o指示位并保存

ADDEAX,BADR2

MOVdwordptrIO_base_address,EAX

MOVEAX,dwordptrIO_base_address

MOVdwordptrIO_base_address,EAX;

MOVDX,offsetgood;

显示开始执行程序信息

POPfd

POPad

findPCIENDP

MY_CODEENDS

ENDSTART

七、实验心得

通过实验,进一步了解了串行通信的原理以及通过串行方式发送和接收数据的过程。

输出数据是以字符为单位首先送到数据发送保持寄存器中,再进入发送移位寄存器,这些过程都是并行方式传送的。

在发送移位寄存器中,按照事先和接收端约定的字符传输格式,加上起始位,奇偶校验位和停止位,然后再以约定的波特率先低位后高位地发送出去。

在实验中,选择的时钟频率脉冲为1MHz,波特率选择为1200B/s。

串行通信时,构成一个字符或数据的各位按时间先后,从低位到高位一位一位地传送,占用较少的通信线,使成本降低,因而适合远距离的传输。

串行通信常用作计算机与低速外设或计算机之间传输信息。

当传输距离较远时,可采用通信线路(如线、无线电台等)。

此外在使用时,发送及接收端必须具备并行-串行转换电路。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 交通运输

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1