实验四 可编程并行接口实验

一、实验目的

       1. 了解可编程并行接口8255的内部结构,

       2. 掌握工作方式、初始化编程及应用。

二、实验内容

   流水灯实验:利用8255的A口、B口循环点亮发光二极管。

三、实验原理

   8255是一个通用可编程并行接口电路。它具有A、B、C三个8位并行口。其中C口也可用作A、B口的联络信号及中断申请信号。通过编程,它可以被设置为基本输入输出、选通输入输出以及双向传送方式。对于C口还具有按位置0、1的功能。

            可编程并行接口8255芯片接口电路

  • 实验步骤

                     流水灯实验连线图

模块的WR、RD分别连到ISA总线接口模块的IOWR、IORD。

模块的数据(AD0~AD7)、地址线(A0~A7)分别连到ISA总线接口模块的数据(LD0~LD7)、地址线(LA0~LA7)。

8255模块选通线CE连到ISA总线接口模块的0000H。

8255的PA0~PA7连到发光二极管的L0~L7;8255的PB0~PB7连到发光二极管的L8~L15。

运行程序,观察发光二极管。

五、实验源码:

com equ	0273h	
pa equ 0270h	
pb equ 0271h	
pc equ 0272h	



_stack segment stack
           dw 100 dup(?)
_stack ends


data segment

    led    db 10111110b
           db 10111111b
           db 10111101b
           db 11101011b
           db 11111011b
           db 11011011b

    status dw 0

data ends


code segment
                  assume ds:data, ss:_stack, cs:code


delay_500ms proc

                  push   cx
                  mov    cx,60000
                  loop   $
                  pop    cx
                  ret
delay_500ms endp

delay_2s proc
                  push   cx
                  mov    cx,4
    to_delay1:    
                  call   delay_500ms
                  loop   to_delay1
                  pop    cx
                  ret
delay_2s endp


start proc

                  mov    ax,data
                  mov    ds,ax
    input:        
                  mov    dx,com
                  mov    ax,10000010b
                  out    dx,al
                  mov    dx,pa


                  mov    al,0ffh
                  out    dx,al

                  jmp    green0


    green0:       
                  mov    bx,offset led
                  mov    dx,pa
                  mov    al,[bx]
                  out    dx,al


                  mov    cx,10
                  mov    dx,pb
    delay_green0: 
                
                  in     al,dx
                  and    al,80h
                  jnz    yellow0
                  and    al,40h
                  jnz    out0



                  mov    al,[bx]
                  out    dx,al
                  call   delay_500ms
                  loop   delay_green0
    out0:
                  jmp    greeen_blink0


    greeen_blink0:
                  mov    cx,4
    blink0:       
                  mov    dx,pa
                  mov    bx,offset led
                  mov    al,[bx+1]
                  out    dx,al
                  call   delay_500ms

                  mov    al,[bx]
                  out    dx,al
                  call   delay_500ms
                  loop   blink0

                  jmp    yellow0

                


    yellow0:      
                  mov    dx,pa
                  mov    bx,offset led
                  mov    al,[bx+2]
                  out    dx,al
                  call   delay_2s
                  jmp    green1



    green1:       
                  mov    bx,offset led
                  mov    dx,pa
                  mov    al,[bx+3]
                  out    dx,al


                  mov    cx,10
                  mov    dx,pb
    delay_green1: 
                
                  in     al,dx
                  and    al,80h
                  jnz    yellow1
                  and    al,40h
                  jnz    out1



                  mov    al,[bx+3]
                  out    dx,al
                  call   delay_500ms
                  loop   delay_green1
    out1:
                  jmp    greeen_blink1


    greeen_blink1:
                  mov    cx,4
    blink1:       
                  mov    dx,pa
                  mov    bx,offset led
                  mov    al,[bx+4]
                  out    dx,al
                  call   delay_500ms

                  mov    al,[bx+3]
                  out    dx,al
                  call   delay_500ms
                  loop   blink1

                  jmp    yellow1


    yellow1:      
                  mov    dx,pa
                  mov    bx,offset led
                  mov    al,[bx+5]
                  out    dx,al
                  call   delay_2s
                  jmp    green0

start endp
code ends
end start

六、实验结果:

已验收

微机原理实验总结:通过微机原理实验课程,我更加深入地理解了微机原理课程上讲到的各种芯片的功能,以及引脚的作用,同时加深了对于主要芯片的应用的认识,同时在实验室的环境里熟悉了汇编程序的编写过程和运行过程,最后还提高了自己的动手能力。在学习理论的过程中通过实验辅助,使我们更容易的接受微机原理的知识。实验过程中,获得了很多收获,获得了很多感悟,也遇到了很多困难,但最终解决了它们。

  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Mr.羊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值