8255 并行接口实验

一、实验目的:

1.掌握8255A的工作方式使用以及编程。

2.利用8255A完成将数码开关的输入送给发光二极管并显示

二、实验内容与要求:

1.基本输入输出实验。编写程序,使8255的A口为输出,B口为输入,完成拨动开关到数据灯的数据传输。要求只要开关拨动,数据灯的显示就发生相应改变。

2.流水灯显示实验。编写程序,使8255的A口和B口均为输出,数据灯D7~D0由左向右,每次仅亮-一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。

3.方式1输入输出实验。编写程序,使8255工作在方式1控制下的A口输入,B口输出。

三、实验步骤

1.基本输入输出实验

本实验使8255端口A工作在方式О并作为输出口,端口B工作在方式О并作为输入口。用一组开关信号接入端口B,端口A输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入输出功能。具体实验步骤如下,其中第(4)步到第(6)步固化功能可选作:

(1)实验接线图如图4.3.4所示,按图连接实验线路图。

(2)编写实验程序(例程文件名为:A82551.ASM),经编译、连接无误后装入系统。

(3)运行程序,改变拨动开关,同时观察LED显示,验证程序功能。

(4)点击“调试”下拉菜单中的“固化程序”项,将程序固化到系统存储器中。

(5)将386EX单板机系统的短路跳线JDBG短接到RUN端,然后按复位按键,观察程序是否正常运行﹔关闭实验箱电源,稍等后再次打开电源,看固化的程序是否运行,验证程序功能。

(6)实验完毕后,请将短路跳线JDBG的短路块短接到DBG端,以方便下次联机实验。

2流水灯显示实验

使8255的A口和B口均为输出,数据灯D7~DO由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~DO正好相反,由右向左,每次仅点亮一个灯,循环显示。实验接线图如图4.3.5所示。实验步骤如下所述:

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

(2)编写实验程序(例程文件名为:A82552.ASM),经编译、链接无误后装入系统。

(3)运行程序,观察LED灯的显示,验证程序功能。

(4)自己改变流水灯的方式,编写程序。

(5)固化程序并脱机运行(可选做)。

3.方式1输入输出实验

本实验使8255端口A工作在方式О并作为输出口,端口B工作在方式1并作为输入口,则端口C的PC2成为选通信号输入端STBB,PCO成为中断请求信号输出端INTRB。当B口数据就绪后,通过发STBB信号来请求CPU读取端口B数据并送端口A输出显示。用一组开关信号接入端口B,端口A输出线接至一组数据灯上。具体实验步骤如下:

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

(2)编写实验程序(例程文件名为:A82553.ASM),经编译、链接无误后装入系统。

(3)运行程序,然后改变拨动开关,准备好后,按动KK1,同时观察数据灯显示,应与开关组信号一致。

四、电路连接

1.基本输入输出实验

2.流水灯显示实验

3.方式1输入输出实验

五、代码设计

1.关于8255控制字

MOV DX, MY8255_MODE

MOV AL, 82H

OUT DX, AL

关于8255工作方式控制字和C口按位置位/复位控制字格式如下图所示。

82H=1000 0010B;表示工作方式0,A口输出,B口输入

之后的代码中出现的80H86H同理。

80H=1000 0000B;表示工作方式0,A口输出,B口输出

86H=1000 0110B;表示工作方式1,A口输出,B口输入

2.关于灯的控制

AA1:      MOV DX, MY8255_B

                               IN  AL, DX

                              

                               CALL DELAY

                              

                               MOV DX, MY8255_A

                               OUT DX, AL

                              

                               JMP AA1

8255 B端口的状态给AL,虽然这里是把B端口的地址送给AL,但是可以理解成把B端口状态给AL,例如B端口为00101代表拨动的那个开关),则把0010AL,后面通过把AL8255A端口,控制灯。

3.关于流水灯的控制

AA1:	
		MOV DX, MY8255_A
		MOV AL, BH
		OUT DX, AL
		ROR BH, 1;右移移位
		
		MOV DX, MY8255_B
		MOV AL, BL
		OUT DX, AL
		ROL BL, 1;左移一位	
		
		;延时
		CALL DELAY
		CALL DELAY
		JMP AA1

8001H=1000 0000 0000 0001, 1即为控制灯亮,这时的80001H就代表灯D15D0亮,后面分开控制BHBL1的移动,就可以控制灯的移动,比如BH=1000 0000 亮一次后 做循环移位操作(向左或向右),就可以实现灯的流水效果,把1理解成灯亮,1移动,1到的位置灯亮,所以1不得移动,形成流水灯。

六、实验现象

1.基本输入输出实验

2.流水灯显示实验

数据灯D7~D0由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0正好相反,由右向左,每次仅点亮一个灯,循环显示。

3.方式1输入输出实验

七、完整代码

1.基本输入输出实验
;=========================================================
; 文件名: A82551.ASM
; 功能描述: A口为输入,B口为输出,将读入的数据输出显示
;           IOY0
;=========================================================

IOY0         EQU   0600H          ;片选IOY0对应的端口始地址
MY8255_A     EQU   IOY0+00H*2     ;8255的A口地址
MY8255_B     EQU   IOY0+01H*2     ;8255的B口地址
MY8255_C     EQU   IOY0+02H*2     ;8255的C口地址
MY8255_MODE  EQU   IOY0+03H*2     ;8255的控制寄存器地址

SSTACK  SEGMENT STACK
        DW 32 DUP(?)
SSTACK  ENDS
CODE    SEGMENT
        ASSUME CS:CODE
START:  MOV DX, MY8255_MODE
        MOV AL, 82H
        OUT DX, AL
AA1:    MOV DX, MY8255_B
        IN  AL, DX
        CALL DELAY
        MOV DX, MY8255_A
        OUT DX, AL
        JMP AA1
DELAY:  PUSH CX
        MOV CX, 0F00H
AA2:    PUSH AX
        POP  AX
        LOOP AA2
        POP  CX
        RET
CODE    ENDS
        END  START

2.流水灯显示实验
;=========================================================
; 文件名: A82552.ASM
; 功能描述: A口为输出,B口为输出,流水灯显示
;=========================================================

IOY0         EQU   0600H          ;片选IOY0对应的端口始地址
MY8255_A     EQU   IOY0+00H*2     ;8255的A口地址
MY8255_B     EQU   IOY0+01H*2     ;8255的B口地址
MY8255_C     EQU   IOY0+02H*2     ;8255的C口地址
MY8255_MODE  EQU   IOY0+03H*2     ;8255的控制寄存器地址

SSTACK  SEGMENT STACK
        DW 32 DUP(?)
SSTACK  ENDS
CODE    SEGMENT
        ASSUME CS:CODE
START:  MOV DX, MY8255_MODE
        MOV AL, 80H
        OUT DX, AL
        MOV BX, 8001H
AA1:    MOV DX, MY8255_A
        MOV AL, BH
        OUT DX, AL
        ROL BH, 2
        MOV DX, MY8255_B
        MOV AL, BL
        OUT DX, AL
        ROL BL, 1   
        CALL DELAY
        CALL DELAY
        JMP AA1
DELAY:  PUSH CX
        MOV CX, 0F000H
AA2:    PUSH AX
        POP  AX
        LOOP AA2
        POP  CX
        RET
CODE    ENDS
        END  START


3.方式1输入输出实验

;=========================================================
; 文件名: A82553.ASM
; 功能描述: 本实验使8255端口A工作在方式0并作为输出口,
;           端口B工作在方式1并作为输入口
;=========================================================

IOY0         EQU   0600H          ;片选IOY0对应的端口始地址
MY8255_A     EQU   IOY0+00H*2     ;8255的A口地址
MY8255_B     EQU   IOY0+01H*2     ;8255的B口地址
MY8255_C     EQU   IOY0+02H*2     ;8255的C口地址
MY8255_MODE  EQU   IOY0+03H*2     ;8255的控制寄存器地址

STACK1  SEGMENT STACK
        DW 256 DUP(?)
STACK1  ENDS
CODE    SEGMENT
        ASSUME CS:CODE
START:  MOV DX,MY8255_MODE         ;初始化8255工作方式
        MOV AL,86H                 ;工作方式1,A口输出,B口输入
        OUT DX,AL
        MOV DX,MY8255_MODE         ;C口PC2置位
        MOV AL,05H                 
        OUT DX,AL
        PUSH DS
        MOV AX, 0000H
        MOV DS, AX
        MOV AX, OFFSET MIR7         ;取中断入口地址
        MOV SI, 003CH               ;中断矢量地址
        MOV [SI], AX                ;填IRQ7的偏移矢量
        MOV AX, CS                  ;段地址
        MOV SI, 003EH
        MOV [SI], AX                ;填IRQ7的段地址矢量
        CLI
        POP DS
        ;初始化主片8259
        MOV AL, 11H
        OUT 20H, AL             ;ICW1
        MOV AL, 08H
        OUT 21H, AL             ;ICW2
        MOV AL, 04H
        OUT 21H, AL             ;ICW3
        MOV AL, 01H
        OUT 21H, AL             ;ICW4
        MOV AL, 6FH             ;OCW1
        OUT 21H, AL
        STI       
AA1:    NOP
        JMP AA1
MIR7:   PUSH AX
        MOV DX,MY8255_B            ;读B口
        IN  AL,DX
        MOV DX,MY8255_A            ;写A口
        OUT DX,AL
        MOV AL,20H
        OUT 20H,AL       
        POP AX  
        IRET  
DELAY:  PUSH CX
        MOV CX, 0F00H
AA0:    PUSH AX
        POP  AX
        LOOP AA0
        POP CX
        RE
CODE    ENDS
        END START

  • 67
    点赞
  • 422
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

钻仰弥坚

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

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

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

打赏作者

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

抵扣说明:

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

余额充值