微机接口实验8251 北工大 - 图文

更新时间:2024-04-01 13:20:01 阅读量: 综合文库 文档下载

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

8251A 基础实验 :

一.实验目的:

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

2.掌握可编程串行通信接口芯片8251A的工作原理和编程方法。 二、实验内容:

1.异步串行自发自收实验:

(1)使用8251A发送固定二进制数在接收回来,将收到的数加1后显示在LED上。

(2) 通信协议:异步,波特率为4800bps,波特因子为16,8位数据位,1位停止位,无奇偶校验; (3)采用查询方式实现。 2. RS-232通信实验:

(1)PC机与试验箱通过串行进行通信,PC机向实验箱发送字符,实验箱上的8521A接收到字符后再原样发回PC机; (2)通讯协议自定; (3)采用中断方式实现。 三.实验环境

1.硬件:GX-8000实验箱,USB电缆,自锁紧导线; 2.软件:icode集成开发环境。

四:实验提示 1. 按键中断实验

(1) 8251A是一个28管脚的双列直插芯片,插在实验箱的40

脚自锁紧通用插座上,实验中需用导线手动连接包括电源、地、数据总线、时钟信号、发送线、接收线在内的所需要的所有线路。参考连线如图3.18所示。

(2) 参考程序流程图如图3.19所示:

(3)在对8251A进行初始化操作前必须确保其可靠复位,方法是:向8251A控制口连续写入三个0,然后再写入复位命令字40H。注意:对8251A的控制口进行一次写操作,需要16个时钟信号的写恢复时间。参考代码如下:

其中,DELAY用于实现延时,其定义如下:

(4)在程序设计过程中,可以使用单步调试,通过观察程序运行过程中寄存器值的变化调试程序错误,也可以进一步理解8251A 的控制原理。

(5)程序如下:

DATA SEGMENT ;数据段

DATA ENDS

CODE SEGMENT ;代码段 ASSUME CS:CODE,DS:DATA START: MOV DX,28BH ;初始化8253 MOV AL,00010110B OUT DX,AL MOV DX,288H MOV AX,13 OUT DX,AL

MOV AL,80H ;初始化8255 MOV DX,283H OUT DX,AL

MOV DX,299H ;8251A的控制口地址 MOV AL,0

OUT DX,AL ;想8251A的控制口写0 CALL DELAY ;延时 MOV AL,0

OUT DX,AL ;想8251A的控制口写0 CALL DELAY MOV AL,0

OUT DX,AL ;向8251A的控制口写0 CALL DELAY

MOV AL,40H ;写复位命令 OUT DX,AL CALL DELAY

MOV DX,299H ;初始化8251 MOV AL,01001110B OUT DX,AL CALL DELAY

MOV DX,299H

MOV AL,00010111B OUT DX,AL CALL DELAY

MOV DI,3000H ;指针初值

MOV CX,000AH ;接收数据个数 A1: MOV DX,299H IN AL,DX ;TxRDY=1? TEST AL,01H JZ A1 MOV DX,298H

IN AL,DX ;8251数据口读入数据

MOV DX,CX

MOV CL,9 ;发送数 MOV AL,CL OUT DX,AL

MOV DX,299H A2: IN AL,DX ;RxRDY=1? TEST AL,02H JZ A2 MOV DX,298H IN AL,DX INC CL MOV DX,280H MOV AL,CL OUT DX,AL JMP A1 DELAY PROC

MOV CX,02H LOOP $ RET DELAY ENDP CODE ENDS 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 SEGMENT STACK ;堆栈段 STA DW 128 DUP(?) STACKS ENDS

DATA SEGMENT ;数据段

DATA ENDS

CODE SEGMENT ;代码段 ASSUME CS:CODE,DS:DATA,SS:STACKS

START:

MOV AX,DATA MOV DS,AX MOV AX,STACKS MOV SS,AX

CLI ;关中断

MOV AL,00010011B ;中断请求高有效,一片8259A,ICW1 MOV DX,290H OUT DX,AL

MOV AL,18H ;ICW2 MOV DX,291H OUT DX,AL

MOV AL,0DH ;ICW4 MOV DX,291H OUT DX,AL MOV DX,291H

IN AL,DX ;初始化主片,读OCW1,中断屏蔽控制字,奇地址 MOV AL,11111110B MOV DX,291H

OUT DX,AL ;写OCW1 MOV AX,0 MOV ES,AX MOV DI,00011000B SHL DI,1 SHL DI,1 ;MOV DS,AX MOV ES:[DI],AX MOV ES:[DI+2],BX

MOV DX,28BH ;初始化8253 MOV AL,00010110B OUT DX,AL MOV DX,288H MOV AX,13 OUT DX,AL

;

MOV BX,SEG ISR ;设置中断向量

MOV AX,OFFSET ISR

MOV DX,299H ;8251A的控制口地址 MOV AL,0 CALL DELAY MOV AL,0 OUT DX,AL CALL DELAY MOV AL,0 OUT DX,AL CALL DELAY

MOV AL,40H ;写复位命令 OUT DX,AL CALL DELAY

MOV DX,299H ;初始化8251 MOV AL,01001110B OUT DX,AL CALL DELAY

MOV DX,299H MOV AL,00010111B OUT DX,AL

;向8251A的控制口写0 ;延时

;想8251A的控制口写0

OUT DX,AL ;想8251A的控制口写0

CALL DELAY

;MOV DI,3000H ;指针初值 ; CX,000AH ;接收数据个数 ;MOV DX,298H

;IN AL,DX ;8251数据口读入数据 ;MOV DX,CX

;MOV CL,123 ;发送数 ;MOV AL,CL ;OUT DX,AL STI A2:

JMP A2 DELAY PROC MOV CX,02H LOOP $ RET DELAY ENDP

A1:

MOV DX,299H IN AL,DX ;TxRDY=1? TEST AL,01H JZ A1 MOV DX,298H MOV AL,CL OUT DX,AL

;CLI ;关中断

MOV DX,290H ;写OCW2,送中断结束命令EOI MOV AL,20H OUT DX,AL POP DX POP AX

IRET ;中断返回 ISR ENDP CODE ENDS END START

ISR PROC ;中断服务子程序 ;保护现场 PUSH AX PUSH DX

STI ;开中断 MOV DX,298H IN AL,DX MOV CL,AL

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

Top