实验十四 串行通信

更新时间:2024-01-30 04:33:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

计算机科学系实验报告 课程名称 微型计算机技术及应用 实验班级 实验名称 实验十四 串行通讯 指导教师 学生姓名 学生学号

一、 实验目的

1. 了解串行通讯的基本原理。

2. 掌握串行接口芯片8251的工作原理和编程方法。

二、 实验设备

1. PC机一台

2. 专用导线若干

3. TPC-H通用微机接口实验系统一台 4. MASM汇编及调试程序

三、 实验原理和内容

1. 按图1连接好电路,(8251插通用插座)其中8253计数器用于产生8251的发送和接收

时钟.TXD和RXD连在一起。

2. 编程:从键盘输入一个字符,将其ASCII码加 1 后发送出去,再接收回来在屏幕上显

示。实现自发自收。 注意:

a. 图示电路8251的控制口地址为2B9H,数据口地址为2B8H。 b. 8253计数器的计数初值=时钟频率 /(波特率×波特率因子),这里的时钟频率接

1MHz,波特率若选1200,波特率因子若选16,则计数器初值为52。 c. 收发采用查询方式

图1

实验的流程图如下:

开 始初始化8253初始化8251显示提示从8251控制口读状态字N

TxRDY为1吗?Y从键盘接收字符Y结 束是ESC吗?N将键入字符ASC码加1通过8251数据端口发送字符从8251控制端口读入状态字DxRDY为1吗?YN从8251数据口接收数据将字符显示在屏幕上

四、 程序代码

data segment

mes1 db 'you can play a key on the keybord!',0dh,0ah,24h data ends code segment

assume cs:code,ds:data

out1 proc near ;向外发送一字节的子程序 out dx,al push cx mov cx,40h

gg: loop gg ;延时 pop cx ret

out1 endp

start: mov ax,data mov ds,ax mov dx,283h ;设置8253计数器0工作方式 mov al,16h out dx,al mov dx,280h mov al,52 ;给8253计数器0送初值 out dx,al mov dx,2b9h ;初始化8251 xor al,al mov cx,03 ;向8251控制端口送3个0 delay: call out1 loop delay mov al,40h ;向8251控制端口送40H,使其复位 call out1 mov al,4eh ;设置为1个停止位,8个数据位,波特率因子为16 call out1 mov al,27h ;向8251送控制字允许其发送和接收 call out1 lds dx,offset ms1 ;显示提示信息 mov ah,09 int 21h

waiti: mov dx,2b9h in al,dx test al,01 ;发送是否准备好 jz waiti mov ah,01 ;是,从键盘上读一字符 int 21h cmp al,27 ;若为ESC,结束

jz exit mov dx,2b8h inc al out dx,al ;发送 mov cx,40h

s51: loop s51 ;延时 next: mov dx,2b9h in al,dx test al,02 ;检查接收是否准备好 jz next ;没有,等待 mov dx,2b8h in al,dx ;准备好,接收 mov dl,al mov ah,02 ;将接收到的字符显示在屏幕上 int 21h jmp waiti

exit: mov ah,4ch ;退出 int 21h code ends end start

五、 实验现象

每当从键盘输入一个ASCII字符,在屏幕会显示该字符,并在该字符之后屏幕显

示该字符加一之后的字符。如:输入‘8’,屏幕在现实‘8’之后会接着显示‘9’;输入‘a’,屏幕在现实‘a’之后会接着显示‘b’。

六、 心得体会

本次实验较前两个实验有一定的难度,不仅程序代码繁琐,而且串行通信的原理也不易于理解。通过这次上机实验,结合书本上的内容,基本可以掌握串行接口芯片8251的工作原理和编程方法,大概知道了通信领域中最基本的功能芯片。

本文来源:https://www.bwwdw.com/article/p41w.html

Top