8251 串行接口应用实验

该实验主要涉及8251串行通信控制器的使用,包括数据的串行传输、自收自发实验以及双机通讯。实验中,学生需要掌握8251的工作方式,通过编程实现数据的发送、接收,并利用示波器观察串行传输的波形。在双机通讯实验中,两台设备通过串口交换数据并显示在屏幕上,验证了串口通讯的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、实验目的:

1、掌握 8251 的工作方式及应用。

2、了解有关串口通讯的知识。

二、实验内容与要求:

1. 数据信号的串行传输实验,循环向串口发送一个数,使用示波器测量 TXD 引脚上的波形,以了解串行传输的数据格式。

2.自收自发实验,将3000H起始的10个单元中的初始数据发送到串口,然后自接收并保存到4000H起始的内存单元中。

3. 双机通讯实验,本实验需要两台实验装置,其中一台作为接收机,一台作为发送机,发送机将 3000H3009H内存单元中共10个数发送到接收机,接收机将接收到的数据直接在屏幕上输出显示。

三、实验步骤

1.数据信号的串行传输

(1)按图连接实验接线。

(2)编写实验程序,经编译、链接无误后装入系统。

(3)运行程序,用示波器观察波形

2.自收自发实验

通过自收自发实验,可以验证硬件及软件设计,常用于自测试。具体实验步骤如下:

(1)连接实验线路。

(2)编写实验程序,编译、链接无误后装入系统。

(3)使用E命令更改4000H起始的10 个单元中的数据。

(4)运行实验程序,待程序运行停止。

(5)查看3000H起始的10 个单元中的数据,与初始化的数据进行比较,验证程序功能

3.双机通讯实验

使用两台实验装置,一台为发送机,一台为接收机,进行两机间的串行通讯。实验步骤如下:

(1)连接实验线路。

(2)为两台机器分别编写实验程序,编译、链接后装入系统。

(3)为发送机初始化发送数据。在发送机3000H~3009H内存单元写入ASCII 值:30,31,32,33,34,35,36,37,38,39 共10个数。

(4)首先运行接收机上的程序,等待接收数据,然后运行发送机上的程序,将数据发送到串口。

(5)观察接收机端屏幕上的显示是否与发送机端初始的数据相同,验证程序功能。

四、电路连接

1.数据信号的串行传输

2.自收自发实验

3.双机通讯实验

五、代码设计

1.8254计数初值的计算

MOV AL, 0B6H            ; 8254, 设置通讯时钟

        MOV DX, M8254_CON

        OUT DX, AL

        MOV AL, 1BH

        MOV DX, M8254_2

        OUT DX, AL

        MOV AL, 3AH

        OUT DX, AL

0B6H=10 11 011 0:计数器2,先读写低字节,后读写高字节,方式3,二进制计数

2.8251方式字

        MOV AL, 7EH

        MOV DX, M8251_CON       ; 写8251方式字

        OUT DX, AL

写入8251方式字7EH=01 11 11 1 0B

3.8251控制字

        MOV AL, 34H

        OUT DX, AL              ; 写8251控制字

写入8251控制字34H=00110110B

六、实验现象

1.数据信号的串行传输

起始位0,8位数据:10101010,由于发送的数据是从低到高,所以实际数据是01010101,即55H。无校验位。

2.自收自发实验

3.双机通讯实验

 

七、源代码

1.数据信号的串行传输

;==========================================================

; 文件名: A82511.ASM

; 功能描述: 研究了解串行传输的数据格式

;==========================================================



IOY0            EQU  0600H        ;IOY0起始地址

IOY1            EQU  0640H        ;IOY1起始地址

M8251_DATA  EQU IOY0+00H*2

M8251_CON   EQU IOY0+01H*2

M8254_2     EQU IOY1+02H*2

M8254_CON   EQU IOY1+03H*2



SSTACK  SEGMENT STACK

        DW 64 DUP(?)

SSTACK  ENDS

CODE    SEGMENT

        ASSUME CS:CODE

START:  CALL INIT

A1:     CALL SEND

        MOV CX, 0001H

A2:     MOV AX, 0F00H

A3:     DEC AX

        JNZ A3

        LOOP A2

        JMP A1     

INIT:   MOV AL, 0B6H            ; 8254, 设置通讯时钟

        MOV DX, M8254_CON

        OUT DX, AL

        MOV AL, 1BH

        MOV DX, M8254_2

        OUT DX, AL

        MOV AL, 3AH

        OUT DX, AL

        CALL RESET              ; 对8251进行初始化

        CALL DALLY

        MOV AL, 7EH

        MOV DX, M8251_CON       ; 写8251方式字

        OUT DX, AL

        CALL DALLY

        MOV AL, 34H

        OUT DX, AL              ; 写8251控制字

        CALL DALLY

        RET

RESET:  MOV AL, 00H             ; 初始化8251子程序

        MOV DX, M8251_CON       ; 控制寄存器

        OUT DX, AL

        CALL DALLY

        OUT DX, AL

        CALL DALLY

        OUT DX, AL

        CALL DALLY

        MOV AL, 40H

        OUT DX, AL

        RET

DALLY:  PUSH CX

        MOV CX, 5000H

A4:     PUSH AX

        POP AX

        LOOP A4

        POP CX

        RET

SEND:   PUSH AX

        PUSH DX

        MOV AL, 31H

        MOV DX, M8251_CON

        OUT DX, AL

        MOV AL, 55H

        MOV DX, M8251_DATA          ; 发送数据55H

        OUT DX, AL

        POP DX

        POP AX

        RET

CODE    ENDS

        END START

2. 自收自发实验

;===========================================================
; 文件名: A82512.ASM
; 功能描述: 自收自发实验程序, 源地址4000H, 目的地址3000H
;===========================================================

IOY0            EQU  0600H        ;IOY0起始地址
IOY1            EQU  0640H        ;IOY1起始地址
M8251_DATA      EQU IOY0+00H*2
M8251_CON       EQU IOY0+01H*2
M8254_2         EQU IOY1+02H*2
M8254_CON       EQU IOY1+03H*2

SSTACK  SEGMENT STACK
        DW 64 DUP(?)
SSTACK  ENDS
CODE    SEGMENT
        ASSUME CS:CODE
START:  MOV AX, 0000H
        MOV DS, AX
        ;初始化8254,得到收发时钟
        MOV AL, 0B6H
        MOV DX, M8254_CON
        OUT DX, AL
        MOV AL, 0CH
        MOV DX, M8254_2
        OUT DX, AL
        MOV AL, 00H
        OUT DX, AL
        ;复位8251
        CALL INIT
        CALL DALLY
        ;8251方式字
        MOV AL,7EH
        MOV DX, M8251_CON 
        OUT DX, AL
        CALL DALLY
        ;8251控制字 
        MOV AL, 34H
        OUT DX, AL
        CALL DALLY
        MOV DI, 3000H
        MOV SI, 4000H
        MOV CX, 000AH
A1:     MOV AL, [SI]
        PUSH AX
        MOV AL, 37H
        MOV DX, M8251_CON
        OUT DX, AL 
        POP AX          
        MOV DX, M8251_DATA
        OUT DX, AL                  ;发送数据
        MOV DX, M8251_CON 
A2:     IN AL, DX                   ;判断发送缓冲是否为空
        AND AL, 01H
        JZ A2
        CALL DALLY
A3:     IN AL, DX                   ;判断是否接收到数据
        AND AL, 02H
        JZ A3
        MOV DX, M8251_DATA
        IN AL, DX                   ;读取接收到的数据
        MOV [DI], AL
        INC DI
        INC SI
        LOOP A1
        MOV AX,4C00H
        INT 21H                 ;程序终止
INIT:   MOV AL, 00H             ;复位8251子程序
        MOV DX, M8251_CON
        OUT DX, AL
        CALL DALLY
        OUT DX, AL
        CALL DALLY
        OUT DX, AL
        CALL DALLY
        MOV AL, 40H
        OUT DX, AL
        RET
DALLY:  PUSH CX
        MOV CX,3000H
A5:     PUSH AX
        POP AX
        LOOP A5
        POP CX
        RET     
CODE    ENDS
        END START

3.双机通讯实验

;========================================================
; 文件名: A82513.ASM
; 功能描述: 接收机接收程序
;========================================================
	
IOY0        EQU  0600H        ;IOY0起始地址
IOY1        EQU  0640H        ;IOY1起始地址
M8251_DATA  EQU IOY0+00H*2
M8251_CON   EQU IOY0+01H*2
M8254_2     EQU IOY1+02H*2
M8254_CON   EQU IOY1+03H*2

SSTACK  SEGMENT STACK
        DW 64 DUP(?)
SSTACK  ENDS
CODE    SEGMENT
        ASSUME CS:CODE
START:  MOV AL, 0B6H            ;初始化8254
        MOV DX, M8254_CON
        OUT DX, AL
        MOV AL, 0CH
        MOV DX, M8254_2
        OUT DX, AL
        MOV AL, 00H
        OUT DX, AL
                                ;CLI
        CALL INIT               ;复位8251
        CALL DALLY
        MOV AL, 7EH
        MOV DX, M8251_CON
        OUT DX, AL 
        CALL DALLY
        MOV AL, 34H
        OUT DX, AL 
        CALL DALLY
        MOV AX, 0152H           ;输出显示字符R
        INT 10H
        MOV DI, 3000H
        MOV CX, 000AH
A1:     MOV DX,M8251_CON
        IN AL, DX
        AND AL, 02H
        JZ A1
        MOV DX, M8251_DATA
        IN AL, DX
        AND AL, 7FH
        MOV [DI],AL
        INC DI
        LOOP A1
        MOV AL, 00H
        MOV SI, 300AH
        MOV [SI], AL
        MOV AH, 06H
        MOV BX, 3000H
        INT 10H             ;输出显示接收到的数据
                            ;STI
A2:     JMP A2
INIT:   MOV AL, 00H         ;复位8251子程序
        MOV DX, M8251_CON
        OUT DX, AL
        CALL DALLY
        OUT DX, AL
        CALL DALLY
        OUT DX, AL
        CALL DALLY
        MOV AL, 40H
        OUT DX, AL
        RET
DALLY:  PUSH CX
        MOV CX, 3000H
A3:     PUSH AX
        POP AX
        LOOP A3
        POP CX
        RET
CODE    ENDS
        END START

;=========================================================
; 文件名: A82514.ASM
; 功能描述: 发送机的发送程序
;=========================================================

IOY0        EQU  0600H        ;IOY0起始地址
IOY1        EQU  0640H        ;IOY1起始地址
M8251_DATA  EQU IOY0+00H*2
M8251_CON   EQU IOY0+01H*2
M8254_2     EQU IOY1+02H*2
M8254_CON   EQU IOY1+03H*2

SSTACK  SEGMENT STACK
        DW 64 DUP(?)
SSTACK  ENDS
CODE    SEGMENT
        ASSUME CS:CODE
START:  MOV AL, 0B6H            ;初始化8254, 得到收发时钟
        MOV DX, M8254_CON
        OUT DX, AL
        MOV AL, 0CH
        MOV DX, M8254_2
        OUT DX, AL
        MOV AL, 00H
        OUT DX, AL
        CALL INIT               ;复位8251
        CALL DALLY
        MOV AL, 7EH
        MOV DX, M8251_CON
        OUT DX, AL              ;8251方式字
        CALL DALLY
        MOV AL, 34H
        OUT DX, AL              ;8251控制字
        CALL DALLY
        MOV DI, 3000H
        MOV CX, 000AH
A1:     MOV AL, [DI]
        CALL SEND
        CALL DALLY
        INC DI
        LOOP A1
A2:     JMP A2
INIT:   MOV AL, 00H             ;复位8251子程序
        MOV DX, M8251_CON
        OUT DX, AL
        CALL DALLY
        OUT DX, AL
        CALL DALLY
        OUT DX, AL
        CALL DALLY
        MOV AL, 40H
        OUT DX, AL
        RET
DALLY:  PUSH CX
        MOV CX, 3000H
A4:     PUSH AX
        POP AX
        LOOP A4
        POP CX
        RET
SEND:   PUSH DX                 ;数据发送子程序
        PUSH AX
        MOV AL, 31H
        MOV DX, M8251_CON
        OUT DX, AL
        POP AX
        MOV DX, M8251_DATA
        OUT DX, AL
        MOV DX, M8251_CON
A3:     IN AL, DX
        AND AL, 01H
        JZ A3
        POP DX
        RET
CODE    ENDS
        END START

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钻仰弥坚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值