8251串行通讯实验.docx

上传人:b****6 文档编号:16625234 上传时间:2023-07-15 格式:DOCX 页数:16 大小:202.54KB
下载 相关 举报
8251串行通讯实验.docx_第1页
第1页 / 共16页
8251串行通讯实验.docx_第2页
第2页 / 共16页
8251串行通讯实验.docx_第3页
第3页 / 共16页
8251串行通讯实验.docx_第4页
第4页 / 共16页
8251串行通讯实验.docx_第5页
第5页 / 共16页
8251串行通讯实验.docx_第6页
第6页 / 共16页
8251串行通讯实验.docx_第7页
第7页 / 共16页
8251串行通讯实验.docx_第8页
第8页 / 共16页
8251串行通讯实验.docx_第9页
第9页 / 共16页
8251串行通讯实验.docx_第10页
第10页 / 共16页
8251串行通讯实验.docx_第11页
第11页 / 共16页
8251串行通讯实验.docx_第12页
第12页 / 共16页
8251串行通讯实验.docx_第13页
第13页 / 共16页
8251串行通讯实验.docx_第14页
第14页 / 共16页
8251串行通讯实验.docx_第15页
第15页 / 共16页
8251串行通讯实验.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

8251串行通讯实验.docx

《8251串行通讯实验.docx》由会员分享,可在线阅读,更多相关《8251串行通讯实验.docx(16页珍藏版)》请在冰点文库上搜索。

8251串行通讯实验.docx

8251串行通讯实验

师大学

 

数计学院实验报告

 

专业名称11计科

课程微机原理

实验名称串行通信实验

姓名

学号110704012

 

8251可编程串行口与PC机通讯实验

一、实验目的

(1)掌握8251芯片的结构和编程,掌握微机通讯的编制。

(2)学习有关串行通讯的知识。

(3)学习PC机串口的操作方法。

二、实验说明

1、8251信号线

8251是CPU与外设或Mode之间的接口芯片,所以它的信号线分为两组:

一组是用于与CPU接口

的信号线,另一组用于与外设或Mode接口。

(1)与CPU相连的信号线:

除了双向三态数据总线(D7~D0)、读(RD)、写(WR)、片选(CS)之外,还有:

RESET:

复位。

通常与系统复位相连。

CLK:

时钟。

由外部时钟发生器提供。

C/D:

控制/数据引脚。

TxRDY:

发送器准备好,高电平有效。

TxE:

发送器空,高电平有效。

RxRDY:

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

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!

',0DH,0AH,'$'

D8251_0DW0000H;DLAB=0:

接收数据寄存器,发送保持寄存器;DLAB=1:

波特率除数寄存器低位

D8251_1DW0001H;DLAB=0:

中断允许寄存器;DLAB=1:

波特率除数寄存器高位

P8254_T0DW0020H

P8254_MODEDW0023H

PC16550_0EQU03F8H;DLAB=0:

接收数据寄存器,发送保持寄存器;DLAB=1:

波特率除数寄存器低位

PC16550_1EQU03F9H;DLAB=0:

中断允许寄存器;DLAB=1:

波特率除数寄存器高位

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

OUTDX,AL

MOVDX,PC16550_1;波特率除数寄存器高位

MOVAL,00H

OUTDX,AL

MOVDX,PC16550_3;DLAB为0

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

OUTDX,AL

MOVDX,PC16550_4;RTS、DTR置0:

请求发送、数据终端就绪

MOVAL,03H

OUTDX,AL

MOVDX,PC16550_1;中断允许寄存器IER,屏蔽中断

MOVAL,00H

OUTDX,AL

MOVDX,P8254_MODE

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

OUTDX,AL

MOVDX,P8254_T0

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

OUTDX,AL

MOVAL,00H

OUTDX,AL

MOVDX,D8251_1

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

OUTDX,AL

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

OUTDX,AL

AGAIN:

MOVAH,30H;发送初值

NEXT:

MOVDX,D8251_1

NEXT1:

INAL,DX

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

JNCNEXT1

CALLDELAY

MOVDX,D8251_0

MOVAL,AH

OUTDX,AL

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

PUSHF

PUSHAX

PUSHDX

PUSHCX

RECEIVE1:

MOVDX,PC16550_5;接收缓冲区是否满

INAL,DX

ANDAL,01H

JZRECEIVE1;为0未满,继续

CALLDELAY

MOVDX,PC16550_0;PC机接收数据

INAL,DX

MOVDL,AL

MOVAH,02H

INT21H

POPCX

POPDX

POPAX

POPF

RET

RECEIVEENDp

;

BREAKPROCNEAR;按任意键退出

PUSHF

PUSHAX

PUSHDX

MOVAH,06H

MOVDL,0FFH

INT21H

JERETURN

MOVAX,4C00H

INT21H

RETURN:

POPDX

POPAX

POPF

RET

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;查找PCI卡资源并显示

PUSHAD

PUSHFD

MOVEBX,080000000H

FINDPCI_next:

ADDEBX,100H

CMPEBX,081000000H

JNZfindpci_continue

MOVDX,offsetpcicardnotfind;显示未找到PCI卡提示信息

MOVAH,09H

INT21H

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卡

MOVDX,IO_port_addre

MOVEAX,EBX

ADDEAX,BADR1

OUTDX,EAX;写地址口

MOVDX,IO_port_data

INEAX,DX;读数据口

MOVdwordptrIO_9054base_address,EAX

ANDEAX,1

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

MOVEAX,dwordptrIO_9054base_address

ANDEAX,0fffffffeh

MOVdwordptrIO_9054base_address,EAX;去除i/o指示位并保存

MOVDX,IO_port_addre

MOVEAX,EBX

ADDEAX,BADR2

OUTDX,EAX;写地址口

MOVDX,IO_port_data

INEAX,DX;读数据口

MOVdwordptrIO_base_address,EAX

ANDEAX,1

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

MOVEAX,dwordptrIO_base_address

ANDEAX,0fffffffeh

MOVdwordptrIO_base_address,EAX;去除i/o指示位并保存

MOVDX,offsetgood;显示开始执行程序信息

MOVAH,09H

INT21H

POPfd

POPad

RET

findPCIENDP

MY_CODEENDS

ENDSTART

七、实验心得

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

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

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

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

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

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

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

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

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2