北京工业大学 微机接口 实验5报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3.5 8251A串行通讯实验

一、实验目的

1、理解异步串行通讯的基本原理;

2、掌握可编程串行通信接口芯片8251A的工作原理和编程方法。

二、实验内容

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

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

2)通信协议:异步,波特率为4800bps,波特率因子为16,8位数据位,1位停止位,无奇

偶校验;

3)采用查询方式实现

三、实验程序

1、程序

开始

初始化8255A

初始化8253

8251A复位

初始化8251A

读8251A控制字

N

TxRDY=1?

Y

通过8251A发送数

读8251A状态字

RxRDY=1?

Y

从8251A接收

收到的数加1

8255A的A口输出

;这是自动生成的代码模板

STACKS SEGMENT STACK ;堆栈段

DW 128 DUP(?) ;注意这里只有128个字节STACKS ENDS

DATAS SEGMENT ;数据段

;请在这里定义您的数据

DATAS ENDS

CODES SEGMENT ;代码段

ASSUME CS:CODES,DS:DATAS,SS:STACKS START:

MOV AX,DATAS ;初始化

MOV DS,AX

;请在这里添加您的代码

SUB AX,AX

MOV AX,STACKS

MOV SS,AX

MOV DX,283H

MOV AL,10000000B

OUT DX,AL ;初始化8255A

MOV DX,28BH

MOV AL,00010111B

OUT DX,AL ;发8253控制字

MOV DX,288H

MOV AL,13H

OUT DX,AL ;通道0,n=13

MOV DX,299H

MOV AL,0

OUT DX,AL

CALL DELAY

MOV AL,0

OUT DX,AL

CALL DELAY

MOV AL,0

OUT DX,AL

CALL DELAY ;发3遍0

MOV AL,40H

OUT DX,AL

CALL DELAY ;写复位命令

MOV AL,01001110B

OUT DX,AL ;发8251方式字

CALL DELAY

MOV AL,00010101B

OUT DX,AL ;发8251命令字

;CALL DELAY

MOV AX, 01H

PUSH AX ;初值设为1

READ1:

MOV DX,299H

IN AL,DX ;读状态字

TEST AL,01H

JZ READ1 ;为0时

MOV DX,298H

POP AX ;AX中为要输出的字符

OUT DX,AL

MOV DX,299H

READ2:

IN AL,DX ;读状态字

TEST AL,02H

JZ READ2

MOV DX,298H;读出要输出的字符

IN AL,DX

INC AL;加一

PUSH AX;入栈

MOV DX ,280H

OUT DX,AL ;8255A输出加一后的数

JMP READ1

DELAY PROC ;写延时程序

MOV CX,02H

LOOP $

RET

DELAY ENDP

CODES ENDS

END

START

2、程序

DA TA SEGMENT;定义数据段

DA TA ENDS

CODE SEGMENT;定义代码段

ASSUME CS:CODE,DS:DA TA

START:

CLI ;关中断

MOV AL,00010011B

MOV DX,288H

OUT DX,AL ;ICW1

MOV AL ,60H

MOV DX,289H

OUT DX,AL ;ICW2

MOV AL,01H

OUT DX,AL ;ICW4

MOV AL,0

OUT DX,AL ;OCW1

MOV AX,0

MOV ES,AX

MOV DI, 60H

SHL DI,1

SHL DI,1 ;类型号*4得地址

MOV BX,SEG ISR

MOV AX,OFFSET ISR

MOV ES:[DI],AX

MOV ES:[DI+2],BX

MOV DX,0293H;8253初始化

MOV AL,00010110B

OUT DX,AL;

MOV DX,0290H;

MOV AX,13;初值13

OUT DX,AL

MOV DX,281H;8251 MOV AL,0

OUT DX,AL

CALL DELAY

MOV DX,281H

MOV AL,0

OUT DX,AL

CALL DELAY

MOV DX,281H

MOV AL,0

OUT DX,AL

CALL DELAY;发三遍0

MOV AL,40H;发复位字OUT DX,AL

CALL DELAY

MOV DX,281H;8251 MOV AL,01001110B OUT DX,AL

MOV DX,281H

MOV AL,00010101B OUT DX,AL

STI;开中断

JMP $;无限循环等待中断

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

PUSH BX

STI;开中断

MOV DX,280H

IN AL,DX

MOV DX,280H

OUT DX,AL

MOV AL,20H

MOV DX,288H

OUT DX,AL ;发EOI POP BX;恢复现场

POP AX

POP DX

相关文档
最新文档