实验六 串行通信
实验六 串行通信(8251)
一、 实验目的
1. 了解串行通信的基本原理。
2. 掌握串行接口芯片8251的工作原理和编程方法。
二、 实验仪器与材料
1. TPC-H通用微机接口实验系统1台。
2. PC微机1台。
3. 导线若干。
三、 实验内容
试按参考串行接口电路接线,编写并调试程序,要求采用自发自收,实现从键盘输入一个字符,从串行通信的发送端口发送出去,再从其接收端口读入,并将其ASCII码加1后,在屏幕上显示,直到按下键退出。
注意:对于本实验,可采用8255读入端口的ASCII码,显示由8255输出端口接LED灯的亮灭来显示。
四、 实验电路图
五、 实验流程图
六、 实验程序
PORT1 EQU 2B9H ;定义8251控制口地址
PORT2 EQU 2B8H ;定义8251数据口地址
PORT EQU 280H ;定义计数器地址8253
IO EQU 288H ;定义8255地址
CODE SEGMENT ;定义代码段
ASSUME CS:CODE;STACK是参数段,CODE是代码段,
START:
;对8253控制字计数器初始化,通道0方式3初值为52
MOV DX,PORT+3 ;DX间址计数器控制口
MOV AL,00010110B; 写控制字
OUT DX,AL
MOV DX,0280H ;DX间址计数器0的口地址
MOV AL,34H ;写计数初值
OUT DX,AL
;初始化8255
MOV DX,IO+3 ;DX间址8255控制口
MOV AL,10001001B;写控制字
OUT DX,AL
CALL DELY
MOV DX,PORT1 ;设置控制口
MOV AL,0
OUT DX,AL ;控制口送3个0
CALL DELY
OUT DX,AL
CALL DELY
OUT DX,AL
CALL DELY
MOV AL,40H ;内部复位
OUT DX,AL
CALL DELY
MOV DX,PORT1 ;设置模式控制字
MOV AL,11001110B;异步8位数据2位停止位无校验
OUT DX,AL
CALL DELY
MOV AL,00010111B;设置操作命令字,允许发送接收
OUT DX,AL
CALL DELY
NEXT:
MOV DX,PORT1 ;查询TxRDY是否有效
IN AL,DX ;读状态字
AND AL,01H
JZ NEXT ;TxRDY=0,发送还没准备好
MOV DX,IO+2 ;DX间址8255C口
IN AL,DX ;读入开关状态存入AL
MOV DX,PORT2 ;输出数据
OUT DX,AL
CALL DELY
COMT:
MOV DX,PORT1 ;查询RxRDY是否有效
IN AL,DX ;读状态字
ROR AL,1
ROR AL,1 ;D1移入CF
JNC COMT ;RxRDY=0,接收没有准备好
MOV DX,PORT2 ;准备好
IN AL,DX ;读入一字节
MOV DX,IO ;DX间址8255A口
OUT DX,AL ;将开关状态输出到LED
CALL DELY
JMP NEXT ;检测新的数据
DELY PROC
MOV CX,02H
LP:
NOP
LOOP LP
RET
DELY ENDP
CODE ENDS
END START
七、 实验结果与分析
当开关全部处于闭合状态时,即ASCII码对应二进制码00000000B,此时输出LED灯对应的二进制码00000001B。以此类推。