北京工业大学 微机接口 实验5报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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