北工大微机原理 实验六 8251串行通信实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六串行通信实验8251
一、实验目的:
1、进一步了解串行通信的基本原理
2、掌握串行接口芯片8251的工作原理和编程方法
二、实验内容:
1、按图连接线路。
2、从键盘输入一个字符,将其ASCLL码加1后发送出去,再接收回来在屏幕上加1 后的字符显示出来,实现自发自收。
三、实验设备:
8251芯片 8253芯片试验箱若干导线
四、实验原理:
根据引脚号按下图在试验箱上正确连接好电路
五.程序代码:
data segment
ioport equ 5400h-280h
io8253a equ ioport+280h
io8253b equ ioport+283h
io8251a equ ioport+2b8h
io8251b equ ioport+2b9h
ap1 db 'you can play a key on the keybord!',0dh,0ah,24h
ap2 dd ap1
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov dx,io8253b ;设置8253计数器0工作方式
mov al,16h
out dx,al
mov dx,io8253a
mov al,52 ;给8253计数器0送初值
out dx,al
mov dx,io8251b ;初始化8251
xor al,al
mov cx,03 ;向8251控制端口送3个0
delay: call out
loop delay
mov al,40h ;向8251控制端口送40H,使其复位
call out
mov al,4eh ;设置为1个停止位,8个数据位,波特率因子为16 call out
mov al,27h ;向8251送控制字允许其发送和接收
call out
lds dx,ap2 ;显示提示信息
mov ah,09
int 21h
wait: mov dx,io8251b
in al,dx
test al,01 ;发送是否准备好
jz wait
mov ah,01 ;是,从键盘上读一字符
int 21h
cmp al,27 ;若为ESC,结束
jz exit
mov dx,io8251a
inc al
out dx,al ;发送
mov cx,0F00h
kd1: loop kd1 ;延时
next:mov dx,io8251b
in al,dx
test al,02 ;检查接收是否准备好
jz next ;没有,等待
mov dx,io8251a
in al,dx ;准备好,接收
mov dl,al
mov ah,02 ;将接收到的字符显示在屏幕上 int 21h
jmp wait
exit: mov ah,4ch ;退出
int 21h
out proc near ;向外发送一字节的子程序 out dx,al
push cx
mov cx,0F00h
kd2: loop kd2 ;延时
pop cx
ret
out endp
code ends
end start
六、实验结果:
将程序进行汇编,连接,运行后,从键盘输入字母或者数字,屏幕上显示这个字母或数字和这个数字的ASCⅡ加一后的字母或数字。此实验实现自发自收的功能,采用查询的方式,当从键盘输入字母或数字时芯片将读取其ASCⅡ码,判别是否为27h,如果不是,则将ASC Ⅱ码加一后再转换成字符输出到屏幕上显示。实现了输入输出的转换功能。
七.试验截图: