[芯片] 3、接口技术·实验三·可编程并行接口8255A
目录
一、实验目的和要求
二、实验原理与背景
2-1、8255A简介
2-2、8255A编程
三、实验具体的内容
3-1、8255方式0实验1
3-2、8255方式0实验2
3-3、8255方式1输出实验
3-4、8255方式1输入实验
四、实验的代码说明
4-1、8255方式0实验1代码及说明
4-2、8255方式0实验2代码及说明
4-3、8255方式1输出实验代码及说明
4-4、8255方式1输入实验代码及说明
五、实验结果的分析
5-1、8255方式0实验1实验分析
5-1、8255方式0实验2实验分析
5-1、8255方式1输出实验实验分析
5-1、8255方式1输入实验实验分析
附录资料
一、 实验目的和要求
学会8255A芯片和微机接口原理和方法。
掌握8255A并行接口芯片的基本工作原理、工作方式和编程原理。
二、 实验原理与背景
2-1、8255A简介
8255A是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。 其各口功能可由软件选择,使用灵活,通用性强。8255A可作为单片机与多种外设连接时的中间接口电路。
图2.1 8255A内部结构
2-2、8255A编程
8255能并行传送8位数据,所以其数据线为8根D0~D7。由于8255具有3个通道A、B、C,所以只要两根地址线就能寻址A、B、C口及控制寄存器,故地址线为两根A0~A1。此外CPU要对8255进行读、写与片选操作,所以控制线为片选、复位、读、写信号。各信号的引脚编号如下:
- (1)数据总线DB:编号为D0~D7,用于8255与CPU传送8位数据。
- (2)地址总线AB:编号为A0~A1,用于选择A、B、C口与控制寄存器。
- (3)控制总线CB:片选信号、复位信号RST、写信号、读信号。当CPU要对8255进行读、写操作时,必须先向8255发片选信号选中8255芯片,然后发读信号或写信号对8255进行读或写数据的操作。
图2-2 8255A控制方式字
三、 实验具体的内容
3-1、8255方式0实验1
从8255端口C输入数据,再从端口A输出。
步骤如下:
- 1)连接实验电路如图3.1,8255端口C接逻辑电平开关K0~K7,端口A接LED显示电路L0~L7。
图3.1 TPC-USB平台8255方式0实验一连线
- 2)根据流程图3.2,编程并运行,观察实验结果。
图3.2 TPC-USB平台8255方式0实验1:程序流程
3-2、8255方式0实验2
用8255测试3-8译码器74LS138输出结果。要求人机交互界面设计按照集成电路74LS138芯片的引脚图显示在屏幕上,如图3.3所示。
图3.3 TPC-USB平台8255方式0实验二:人机交互界面图
步骤如下:
- 1)按图3.4连接硬件电路。
图3.4 TPC-USB平台8255方式0实验二连线图
- 2)根据流程图3.5,编程并运行,观察实验结果。
图3.5 TPC-USB平台8255方式0实验二流程图
3-3、8255方式1输出实验
编程实现每按一次单脉冲按钮产生一个正脉冲,使8255产生一次中断请求,让CPU进行一次中断服务:依次输出01H、02H,04H,08H,10H,20H,40H,80H使L0~L7依次发光,中断8次结束。
步骤如下:
- 1)按图3.6连好线路。
图3.6 TPC-USB平台8255方式1输出实验连线图
- 2)根据流程图3.7,编程并运行,观察实验结果。
图3.7 TPC-USB平台8255方式1输出实验流程图
3-4、8255方式1输入实验
编程实现:每按一次单脉冲按钮产生一个正脉冲使8255产生一次中断请求,让CPU进行一次中断服务:读取逻辑电平开关预置的ASCII码,在屏幕上显示其对应的字符,中断8次结束。
步骤如下:
- 1)按图3.8连好线路。
图3.8 TPC-USB平台8255方式1输入实验连线图
- 2)根据流程图3.9,编程并运行,观察实验结果。
图3.9 TPC-USB平台8255方式1输入实验流程图
四、
实验的代码说明
4-1、8255方式0实验1代码及说明
- ASSUME CS:CODE
- CODE SEGMENT PUBLIC
- start:
- mov dx,28bh ;C口输入,A口输出
- mov al,89h
- out dx,al
- inout:
- mov dx,28ah ;从C口输入一数据
- in al,dx
- ;and al,00001111b
- mov dx,288h ;从A口输出刚才自C口的数据
- out dx,al ;所输入的数据
- mov dl,0ffh ;判断开关是否按下
- mov ah,06h ;dos中断服务功能号06h
- int 21h
- jz inout ;若无则继续自c输入,a输出
- mov ah,4ch ;否则,返回
- int 21h
- END START
- code ends
4-2、8255方式0实验2代码及说明
- data segment
- chip db ,
- db ,
- db ' Program to test the chip of 74LS138',,
- db ,
- db ,
- db ' +------------------------------+',,
- db ' |Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7|',,
- db ' | |',,
- db ' | 74LS138 |',,
- db ' | |',,
- db ' | A B C G1 G2A+G2B |',,
- db ' +------------------------------+',,,'$'
- mess db 'After you have ready,Please press any key !','$'
- mes2 db 'Test Again ?(Y/N)','$'
- InA db
- OutC db
- cll db ' ','$'
- data ends
- code segment
- assume cs:code,ds:data
- ;------------------------------------
- start:
- mov ax,data
- mov ds,ax
- again:
- call cls
- call InputB
- mov dx,28bh
- mov al,10001011b
- out dx,al
- mov dx,288h
- mov al,InA
- out dx,al
- call OutputC
- jmp1:
- mov ah,
- mov dh,
- mov dl,
- int 10h
- mov ah,
- lea dx,mes2
- int 21h
- mov ah,
- int 21h
- cmp al,'y'
- je again
- cmp al,'n'
- je exit
- mov ah,
- mov dh,
- mov dl,
- int 10h
- lea dx,cll
- mov ah,
- int 21h
- jmp jmp1
- exit:
- mov ah,4ch
- int 21h
- ;------------------------------------
- InputB proc near
- mov ah,
- mov bh,
- mov dx,
- int 10h
- mov ah,
- lea dx,chip
- int 21h
- mov ah,
- mov bh,
- mov dh,
- mov dl,
- int 10h
- mov ah,09h
- lea dx,mess
- int 21h
- mov ah,0ch
- mov al,08h
- int 21h
- wait1:
- mov ah,0Bh
- int 21h
- cmp al,
- jne wait1
- mov ah,
- mov bh,
- mov dh,
- mov dl,
- int 10h
- lea dx,cll
- mov ah,09h
- int 21h
- mov dh,
- mov dl,
- jmp3:
- push dx
- mov ah,
- mov bh,
- int 10h
- jmp4:
- mov ah,
- int 21h
- cmp al,''
- jne jmp2
- mov ah,
- xchg al,dl
- int 21h
- mov cl,
- mov bl,InA
- sal bl,cl
- add bl,
- mov InA,bl
- jmp jmp5
- jmp2:
- cmp al,''
- jne jmp4
- mov ah,
- xchg al,dl
- int 21h
- mov cl,
- mov bl,InA
- sal bl,cl
- mov InA,bl
- jmp5:
- pop dx
- add dl,
- cmp dl,
- jb jmp3
- mov cl,
- mov bl,InA
- sal bl,cl
- mov InA,bl
- ret
- ;------------------------------------
- InputB endp
- cls proc near
- mov ah,
- mov al,
- mov ch,
- mov cl,
- mov dh,
- mov dl,
- mov bh,
- int 10h
- ret
- cls endp
- ;------------------------------------
- OutputC proc near
- mov dx,28ah
- in al,dx
- mov OutC,al
- mov dh,
- mov dl,
- j:
- push dx
- mov ah,
- mov bh,
- int 10h
- mov al,OutC
- mov bl,01h
- and bl,al
- mov cl,
- shr al,cl
- mov OutC,al
- add bl,30h
- xchg bl,dl
- mov ah,
- int 21h
- pop dx
- add dl,
- cmp dl,
- jb j
- ret
- OutputC endp
- end start
- code ends
4-3、8255方式1输出实验代码及说明
- code segment
- assume cs:code
- start:
- mov ax,cs ;设置中断向量IRQ3
- mov ds,ax
- mov dx,offset int_proc
- mov ax,250bh
- int 21h
- mov dx,21h ;开放IRQ3
- in al,dx
- and al,0f7h
- out dx,al
- mov dx,28bh ;A口方式1输出
- mov al,0a0h
- out dx,al
- mov al,0dh ;PC6置位
- out dx,al
- mov bl,
- ll:
- jmp ll
- int_proc:
- mov al,bl ;将bl输出到灯控制灯
- mov dx,288h
- out dx,al
- mov al,20h
- out 20h,al
- shl bl, ;右移一位
- jnc next ;cf==2,NO返回中断
- in al,21h ;关闭IRQ3
- or al,08h
- out 21h,al
- sti ;恢复中断
- mov ah,4ch
- int 21h
- next:
- iret ;中断返回
- code ends
- end start
4-4、8255方式1输入实验代码及说明
- code segment
- assume cs:code
- start:
- mov ax,cs ;设置中断向量IRQ3
- mov ds,ax
- mov dx,offset int_proc
- mov ax,250bh
- int 21h
- in al,21h ;开放IRQ3
- and al,0f7h
- out 21h,al
- mov dx,28bh ;A方式1输入
- mov al,0b8h
- out dx,al
- mov al,09h ;C4置位
- mov dx,28bh
- out dx,al
- mov bl, ;循环
- ll:
- jmp ll
- int_proc:
- mov dx,288h ;从A端口输入数据
- in al,dx
- add al,''
- mov dl,al
- mov ah,02h ;屏幕上显示
- int 21h
- mov dl,0dh ;换行
- int 21h
- mov dl,0ah
- int 21h
- mov al,20h ;关中断
- out 20h,al
- dec bl ;循环减一
- jnz next
- in al,21h ;关闭IRQ3
- or al,08h
- out 21h,al
- sti
- mov ah,4ch
- int 21h
- next:
- iret
- code ends
- end start
五、 实验结果的分析
- 5-1、8255方式0实验1实验分析:在上位机DOS窗口下输入一个字符,上位机将数据送至端口C,然后再从端口A获得数据,并显示出来,结果完成了从C口输入A口输出。
- 5-1、8255方式0实验2实验分析:利用上位机模拟了用8255测74LS138的功能。实验了138译码器的功能验证。
- 5-1、8255方式1输出实验实验分析:编程实现了每按一次单脉冲按钮产生一个正脉冲,使8255产生一次中断请求,让CPU进行一次中断服务:依次输出01H、02H,04H,08H,10H,20H,40H,80H使L0~L7依次发光,中断8次结束。
- 5-1、8255方式1输入实验实验分析:编程实现了:每按一次单脉冲按钮产生一个正脉冲使8255产生一次中断请求,让CPU进行一次中断服务:读取逻辑电平开关预置的ASCII码,这里我们利用8个逻辑电平对应一个八位二进制的数,当利用开关拨出某一个二进制的时候,上位机能获得其值并转换为相应的ASCALL在屏幕上显示,中断8次结束。
附录资料
本文链接:http://www.cnblogs.com/zjutlitao/p/4174961.html
更多精彩:http://www.cnblogs.com/zjutlitao/p/4125085.html
文档下载:http://pan.baidu.com/s/1mg3eCzQ
[芯片] 3、接口技术·实验三·可编程并行接口8255A的更多相关文章
- 20184307 实验三 Socket编程技术
实验三 Socket编程技术 学号 20184307 2019-2020-2 <Python程序设计>实验三报告 课程:<Python程序设计> 班级:1843 姓名:章森洋 ...
- [芯片] 4、接口技术·实验四·串行接口8251A
目录 一.实验目的和要求... 2 二.实验原理与背景... 3 三.实验具体的内容... 3 四.实验的代码说明... 4 五.实验结果的分析... 6 附录资料 一.实验目的和要求 学会8251芯 ...
- 可编程并行接口8255A详解
- 201871010130-周学铭 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
项目 内容 课程班级博客链接 18卓越班 这个作业要求链接 实验三结对编程要求 我的课程学习目标 体验软件项目开发中的两人合作,练习结对编程(Pair programming).掌握Github协作开 ...
- 201871030115-康旭 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
项目 内容 课程班级博客链接 18卓越班 这个作业要求链接 实验三结对编程要求 我的课程学习目标 (1)体验软件项目开发中的两人合作,练习结对编程(Pair programming):(2)掌握Git ...
- 2017-2018-2 20155228 《网络对抗技术》 实验三:MAL_免杀原理与实践
2017-2018-2 20155228 <网络对抗技术> 实验三:MAL_免杀原理与实践 实验内容 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasi ...
- CUDA C编程接口技术分析
CUDA C编程接口技术分析 编程接口 CUDA C为熟悉C编程语言的用户提供了一个简单的路径,可以方便地编写程序供设备执行. 它由C语言的最小扩展集和运行库组成. 核心语言扩展已经引入:cuda c ...
- 2017-2018-2 1723《程序设计与数据结构》第十一周作业 & 实验三 & (总体)第三周结对编程 总结
作业地址 第十一次作业:https://edu.cnblogs.com/campus/besti/CS-IMIS-1723/homework/1933 (作业界面已评分,可随时查看,如果对自己的评分有 ...
- 跟着百度学PHP[4]OOP面对对象编程-12-对象接口技术(interface)
PHP与大多数面向对象编程语言一样,不支持多重继承.也就是说每个类只能继承一个父类. 接口正是解决每个类只能继承一个父类这个问题的 接口用什么权限,继承的那个方法也要使用什么权限. 接口的声明使用:i ...
随机推荐
- (Java和C++)二进制date数据写进android保存为yuv格式
Java实现函数: String strpath = "/storage/emulated/0/DCIM/" + i + "output.yuv"; bool ...
- SQL 中 SELECT 语句的执行顺序
好像自已在书写 SQL 语句时由于不清楚各个关键字的执行顺序, 往往组织的 SQL 语句缺少很好的逻辑, 凭感觉 "拼凑" ( 不好意思, 如果您的 SQL 语句也经常 " ...
- .NET高级工程师面试题之SQL篇
1 题目 这确实是一个真实的面试题,琢磨一下吧!知识不用,就会丢掉,我太依赖各种框架和dll了,已经忘记了最基本的东西.有多久没有写过SQL了,我已经不记得了. 已知表信息如下: Department ...
- 【BZOJ2756】奇怪的游戏(二分,最小割)
题意: Blinker最近喜欢上一个奇怪的游戏.这个游戏在一个 N*M 的棋盘上玩,每个格子有一个数.每次 Blinker 会选择两个相邻的格子,并使这两个数都加上 1.现在 Blinker 想知道最 ...
- xUtils框架的使用
xUtils简介 xUtils 包含了很多实用的android工具,xUtils 源于Afinal框架,对Afinal进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持,拥有 ...
- centos6.5 安装cmake 3.3.2
os:centos6.5 cmake版本:3.3.2 安装编译源码所需的工具和库 yum install gcc gcc-c++ ncurses-devel perl 下载cmake 使用wget工具 ...
- C# 从excel里面复制的1万6千多条记录粘贴到FCKeditor里面,点保存的时候,保存不了,页面没有反应
客户那边添加公告,是直接从excel里面复制的,有1万6千多条记录,excel文件有6M多. 编辑器用的FCKeditor,也能粘贴上,就是点保存的时候,执行了一段时间就没有反映了,保存不了. 想着可 ...
- Ubuntu系统监控cpu memery 磁盘Io次数 IO速率 网卡 运行时间等信息的采集
实验室最近在做的项目要做ubuntu系统监控,要获得系统的一些信息并返回给web服务器. web服务器与ubuntu主机的通信我写的程序用的是socket,至于为什么不用java程序ssh到对应的主机 ...
- QEMU中smp,socket,cores,threads几个参数的理解
在用QEMU创建KVM guest的时候,为了指定guest cpu资源,用到了-smp, -sockets, -cores, -threads几个参数, #/usr/bin/qemu-system- ...
- noip2014-day2-t2
题意:在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点连通. 2 .在满足条件1 ...