8251A串行通信实验Word下载.docx
《8251A串行通信实验Word下载.docx》由会员分享,可在线阅读,更多相关《8251A串行通信实验Word下载.docx(9页珍藏版)》请在冰豆网上搜索。
〔1〕PC机与试验箱通过串行进行通信,PC机向实验箱发送字符,实验箱上的8521A接收到字符后再原样发回PC机;
〔2〕通讯协议自定;
〔3〕采用中断方式实现。
三、实验环境
1.硬件:
GX-8000实验箱,USB电缆,自锁紧导线;
2.软件:
icode集成开发环境。
四、实验提示
1.
异步串行自发自收实验
〔1〕
8251A是一个28管脚的双列直插芯片,插在实验箱的40脚自锁紧通用插座上,实验中需用导线手动连接包括电源、地、数据总线、时钟信号、发送线、接收线在内的所需要的所有线路。
参考连线如图3.18所示。
参考程序流程图如图3.19所示:
〔3〕在对8251A进行初始化操作前必须确保其可靠复位,方法是:
向8251A控制口连续写入三个0,然后再写入复位命令字40H。
注意:
对8251A的控制口进行一次写操作,需要16个时钟信号的写恢复时间。
参考代码如下:
其中,DELAY用于实现延时,其定义如下:
〔4〕在程序设计过程中,可以使用单步调试,通过观察程序运行过程中存放器值的变化调试程序错误,也可以进一步理解8251A
的控制原理。
〔5〕程序如下:
DATA
SEGMENT
;
数据段
ENDS
CODE
代码段
ASSUME
CS:
CODE,DS:
START:
MOV
DX,28BH
初始化8253
AL,00010110B
OUT
DX,AL
DX,288H
MOV
AX,13
AL,80H
初始化8255
DX,283H
DX,299H
8251A的控制口地址
AL,0
OUT
想8251A的控制口写0
CALL
DELAY
延时
向8251A的控制口写0
AL,40H
写复位命令
初始化8251
AL,01001110B
AL,00010111B
DI,3000H
指针初值
CX,000AH
接收数据个数
A1:
IN
AL,DX
TxRDY=1?
TEST
AL,01H
JZ
A1
DX,298H
8251数据口读入数据
DX,CX
CL,9
发送数
AL,CL
A2:
RxRDY=1?
AL,02H
A2
INC
CL
DX,280H
JMP
PROC
CX,02H
LOOP
$
RET
ENDP
END
START
2.
RS-232通信试验
〔1〕8251A要实现与PC通信,需要通过RS-232模块将TTL电平信号转换为RS-232电平信号。
局部参考连线如下图。
〔2〕本实验要求8251A采用中断方式与CPU交换数据,因而需要将8251A的RxRDY(第十四脚)信号连接到8259A的中断请求输入引脚上。
当8251A接收到PC串口发来的字符时,RxRDY有效,向CPU发出中断请求。
〔3〕
PC端对串口的发送和接收操作可使用超级中断实现,其操作方法如下。
a.依次点击“开始〞
“所有程序〞
“附件〞
“通讯〞
“超级终端〞,弹出如图3.21所示窗口,在新建链接对话框中输入链接的名称,点击“确定〞。
b.在“连接到〞对话框选择连接时使用的端口“COM1〞,点击“确定〞,如图3.22所示。
c.设置COM1端口属性,如图3.23所示。
d.参考图3.20连线,下载并运行通信程序,可以看到如图3.24所示的运行结果,键盘输入的字符经串口发出去后又成功地接收回来,并显示在了窗口中。
〔4〕
由于程序需要用中断方式实现收发两种功能,建议编程调试时由易到难,先在上一个实验的根底上实现查询方式下的串口收发,然后再修改为中断方式。
〔5〕
程序如下所示:
STACKS
STACK
堆栈段
STA
DW
128
DUP(?
)
代码段
DATA,SS:
AX,DATA
DS,AX
AX,STACKS
SS,AX
CLI
关中断
AL,00010011B
中断请求高有效,一片8259A,ICW1
DX,290H
AL,18H
ICW2
DX,291H
AL,0DH
ICW4
DX,AL
初始化主片,读OCW1,中断屏蔽控制字,奇地址
AL,11111110B
OCW1
AX,0
ES,AX
DI,00011000B
SHL
DI,1
BX,SEG
ISR
设置中断向量
AX,OFFSET
ES:
[DI],AX
[DI+2],BX
CL,123
STI
中断效劳子程序
PUSH
AX
DX
开中断
CL,AL
写OCW2,送中断结束命令EOI
AL,20H
POP
IRET
中断返回
START