目录

一、实验目的和要求

二、实验原理与背景

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代码及说明

  1. ASSUME CS:CODE
  2. CODE SEGMENT PUBLIC
  3. start:
  4. mov dx,28bh ;C口输入,A口输出
  5. mov al,89h
  6. out dx,al
  7. inout:
  8. mov dx,28ah ;从C口输入一数据
  9. in al,dx
  10. ;and al,00001111b
  11.  
  12. mov dx,288h ;从A口输出刚才自C口的数据
  13. out dx,al ;所输入的数据
  14. mov dl,0ffh ;判断开关是否按下
  15. mov ah,06h ;dos中断服务功能号06h
  16. int 21h
  17. jz inout ;若无则继续自c输入,a输出
  18. mov ah,4ch ;否则,返回
  19. int 21h
  20. END START
  21. code ends

4-2、8255方式0实验2代码及说明

  1. data segment
  2. chip db ,
  3. db ,
  4. db ' Program to test the chip of 74LS138',,
  5. db ,
  6. db ,
  7. db ' +------------------------------+',,
  8. db ' |Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7|',,
  9. db ' | |',,
  10. db ' | 74LS138 |',,
  11. db ' | |',,
  12. db ' | A B C G1 G2A+G2B |',,
  13. db ' +------------------------------+',,,'$'
  14. mess db 'After you have ready,Please press any key !','$'
  15. mes2 db 'Test Again ?(Y/N)','$'
  16. InA db
  17. OutC db
  18. cll db ' ','$'
  19. data ends
  20. code segment
  21. assume cs:code,ds:data
  22. ;------------------------------------
  23. start:
  24. mov ax,data
  25. mov ds,ax
  26. again:
  27. call cls
  28. call InputB
  29. mov dx,28bh
  30. mov al,10001011b
  31. out dx,al
  32. mov dx,288h
  33. mov al,InA
  34. out dx,al
  35. call OutputC
  36. jmp1:
  37. mov ah,
  38. mov dh,
  39. mov dl,
  40. int 10h
  41. mov ah,
  42. lea dx,mes2
  43. int 21h
  44. mov ah,
  45. int 21h
  46. cmp al,'y'
  47. je again
  48. cmp al,'n'
  49. je exit
  50. mov ah,
  51. mov dh,
  52. mov dl,
  53. int 10h
  54. lea dx,cll
  55. mov ah,
  56. int 21h
  57. jmp jmp1
  58. exit:
  59. mov ah,4ch
  60. int 21h
  61. ;------------------------------------
  62. InputB proc near
  63. mov ah,
  64. mov bh,
  65. mov dx,
  66. int 10h
  67. mov ah,
  68. lea dx,chip
  69. int 21h
  70. mov ah,
  71. mov bh,
  72. mov dh,
  73. mov dl,
  74. int 10h
  75. mov ah,09h
  76. lea dx,mess
  77. int 21h
  78. mov ah,0ch
  79. mov al,08h
  80. int 21h
  81. wait1:
  82. mov ah,0Bh
  83. int 21h
  84. cmp al,
  85. jne wait1
  86. mov ah,
  87. mov bh,
  88. mov dh,
  89. mov dl,
  90. int 10h
  91. lea dx,cll
  92. mov ah,09h
  93. int 21h
  94. mov dh,
  95. mov dl,
  96. jmp3:
  97. push dx
  98. mov ah,
  99. mov bh,
  100. int 10h
  101. jmp4:
  102. mov ah,
  103. int 21h
  104. cmp al,''
  105. jne jmp2
  106. mov ah,
  107. xchg al,dl
  108. int 21h
  109. mov cl,
  110. mov bl,InA
  111. sal bl,cl
  112. add bl,
  113. mov InA,bl
  114. jmp jmp5
  115. jmp2:
  116. cmp al,''
  117. jne jmp4
  118. mov ah,
  119. xchg al,dl
  120. int 21h
  121. mov cl,
  122. mov bl,InA
  123. sal bl,cl
  124. mov InA,bl
  125. jmp5:
  126. pop dx
  127. add dl,
  128. cmp dl,
  129. jb jmp3
  130. mov cl,
  131. mov bl,InA
  132. sal bl,cl
  133. mov InA,bl
  134. ret
  135. ;------------------------------------
  136. InputB endp
  137. cls proc near
  138. mov ah,
  139. mov al,
  140. mov ch,
  141. mov cl,
  142. mov dh,
  143. mov dl,
  144. mov bh,
  145. int 10h
  146. ret
  147. cls endp
  148. ;------------------------------------
  149. OutputC proc near
  150. mov dx,28ah
  151. in al,dx
  152. mov OutC,al
  153. mov dh,
  154. mov dl,
  155. j:
  156. push dx
  157. mov ah,
  158. mov bh,
  159. int 10h
  160. mov al,OutC
  161. mov bl,01h
  162. and bl,al
  163. mov cl,
  164. shr al,cl
  165. mov OutC,al
  166. add bl,30h
  167. xchg bl,dl
  168. mov ah,
  169. int 21h
  170. pop dx
  171. add dl,
  172. cmp dl,
  173. jb j
  174. ret
  175. OutputC endp
  176. end start
  177. code ends

4-3、8255方式1输出实验代码及说明

  1. code segment
  2. assume cs:code
  3. start:
  4. mov ax,cs ;设置中断向量IRQ3
  5. mov ds,ax
  6. mov dx,offset int_proc
  7. mov ax,250bh
  8. int 21h
  9.  
  10. mov dx,21h ;开放IRQ3
  11. in al,dx
  12. and al,0f7h
  13. out dx,al
  14.  
  15. mov dx,28bh ;A口方式1输出
  16. mov al,0a0h
  17. out dx,al
  18.  
  19. mov al,0dh ;PC6置位
  20. out dx,al
  21.  
  22. mov bl,
  23. ll:
  24. jmp ll
  25.  
  26. int_proc:
  27. mov al,bl ;将bl输出到灯控制灯
  28. mov dx,288h
  29. out dx,al
  30.  
  31. mov al,20h
  32. out 20h,al
  33.  
  34. shl bl, ;右移一位
  35.  
  36. jnc next ;cf==2,NO返回中断
  37.  
  38. in al,21h ;关闭IRQ3
  39. or al,08h
  40. out 21h,al
  41.  
  42. sti ;恢复中断
  43.  
  44. mov ah,4ch
  45. int 21h
  46. next:
  47. iret ;中断返回
  48. code ends
  49. end start

4-4、8255方式1输入实验代码及说明

  1. code segment
  2. assume cs:code
  3. start:
  4. mov ax,cs ;设置中断向量IRQ3
  5. mov ds,ax
  6. mov dx,offset int_proc
  7. mov ax,250bh
  8. int 21h
  9.  
  10. in al,21h ;开放IRQ3
  11. and al,0f7h
  12. out 21h,al
  13.  
  14. mov dx,28bh ;A方式1输入
  15. mov al,0b8h
  16. out dx,al
  17.  
  18. mov al,09h ;C4置位
  19. mov dx,28bh
  20. out dx,al
  21.  
  22. mov bl, ;循环
  23.  
  24. ll:
  25. jmp ll
  26. int_proc:
  27. mov dx,288h ;从A端口输入数据
  28. in al,dx
  29. add al,''
  30. mov dl,al
  31.  
  32. mov ah,02h ;屏幕上显示
  33. int 21h
  34. mov dl,0dh ;换行
  35. int 21h
  36. mov dl,0ah
  37. int 21h
  38.  
  39. mov al,20h ;关中断
  40. out 20h,al
  41.  
  42. dec bl ;循环减一
  43. jnz next
  44.  
  45. in al,21h ;关闭IRQ3
  46. or al,08h
  47. out 21h,al
  48.  
  49. sti
  50. mov ah,4ch
  51. int 21h
  52. next:
  53. iret
  54. code ends
  55. 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的更多相关文章

  1. 20184307 实验三 Socket编程技术

    实验三 Socket编程技术 学号 20184307 2019-2020-2 <Python程序设计>实验三报告 课程:<Python程序设计> 班级:1843 姓名:章森洋 ...

  2. [芯片] 4、接口技术·实验四·串行接口8251A

    目录 一.实验目的和要求... 2 二.实验原理与背景... 3 三.实验具体的内容... 3 四.实验的代码说明... 4 五.实验结果的分析... 6 附录资料 一.实验目的和要求 学会8251芯 ...

  3. 可编程并行接口8255A详解

  4. 201871010130-周学铭 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客链接 18卓越班 这个作业要求链接 实验三结对编程要求 我的课程学习目标 体验软件项目开发中的两人合作,练习结对编程(Pair programming).掌握Github协作开 ...

  5. 201871030115-康旭 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客链接 18卓越班 这个作业要求链接 实验三结对编程要求 我的课程学习目标 (1)体验软件项目开发中的两人合作,练习结对编程(Pair programming):(2)掌握Git ...

  6. 2017-2018-2 20155228 《网络对抗技术》 实验三:MAL_免杀原理与实践

    2017-2018-2 20155228 <网络对抗技术> 实验三:MAL_免杀原理与实践 实验内容 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasi ...

  7. CUDA C编程接口技术分析

    CUDA C编程接口技术分析 编程接口 CUDA C为熟悉C编程语言的用户提供了一个简单的路径,可以方便地编写程序供设备执行. 它由C语言的最小扩展集和运行库组成. 核心语言扩展已经引入:cuda c ...

  8. 2017-2018-2 1723《程序设计与数据结构》第十一周作业 & 实验三 & (总体)第三周结对编程 总结

    作业地址 第十一次作业:https://edu.cnblogs.com/campus/besti/CS-IMIS-1723/homework/1933 (作业界面已评分,可随时查看,如果对自己的评分有 ...

  9. 跟着百度学PHP[4]OOP面对对象编程-12-对象接口技术(interface)

    PHP与大多数面向对象编程语言一样,不支持多重继承.也就是说每个类只能继承一个父类. 接口正是解决每个类只能继承一个父类这个问题的 接口用什么权限,继承的那个方法也要使用什么权限. 接口的声明使用:i ...

随机推荐

  1. (Java和C++)二进制date数据写进android保存为yuv格式

    Java实现函数: String strpath = "/storage/emulated/0/DCIM/" +  i + "output.yuv"; bool ...

  2. SQL 中 SELECT 语句的执行顺序

    好像自已在书写 SQL 语句时由于不清楚各个关键字的执行顺序, 往往组织的 SQL 语句缺少很好的逻辑, 凭感觉 "拼凑" ( 不好意思, 如果您的 SQL 语句也经常 " ...

  3. .NET高级工程师面试题之SQL篇

    1 题目 这确实是一个真实的面试题,琢磨一下吧!知识不用,就会丢掉,我太依赖各种框架和dll了,已经忘记了最基本的东西.有多久没有写过SQL了,我已经不记得了. 已知表信息如下: Department ...

  4. 【BZOJ2756】奇怪的游戏(二分,最小割)

    题意: Blinker最近喜欢上一个奇怪的游戏.这个游戏在一个 N*M 的棋盘上玩,每个格子有一个数.每次 Blinker 会选择两个相邻的格子,并使这两个数都加上 1.现在 Blinker 想知道最 ...

  5. xUtils框架的使用

    xUtils简介 xUtils 包含了很多实用的android工具,xUtils 源于Afinal框架,对Afinal进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持,拥有 ...

  6. centos6.5 安装cmake 3.3.2

    os:centos6.5 cmake版本:3.3.2 安装编译源码所需的工具和库 yum install gcc gcc-c++ ncurses-devel perl 下载cmake 使用wget工具 ...

  7. C# 从excel里面复制的1万6千多条记录粘贴到FCKeditor里面,点保存的时候,保存不了,页面没有反应

    客户那边添加公告,是直接从excel里面复制的,有1万6千多条记录,excel文件有6M多. 编辑器用的FCKeditor,也能粘贴上,就是点保存的时候,执行了一段时间就没有反映了,保存不了. 想着可 ...

  8. Ubuntu系统监控cpu memery 磁盘Io次数 IO速率 网卡 运行时间等信息的采集

    实验室最近在做的项目要做ubuntu系统监控,要获得系统的一些信息并返回给web服务器. web服务器与ubuntu主机的通信我写的程序用的是socket,至于为什么不用java程序ssh到对应的主机 ...

  9. QEMU中smp,socket,cores,threads几个参数的理解

    在用QEMU创建KVM guest的时候,为了指定guest cpu资源,用到了-smp, -sockets, -cores, -threads几个参数, #/usr/bin/qemu-system- ...

  10. noip2014-day2-t2

    题意:在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点连通. 2 .在满足条件1 ...