当前位置: 首页 > news >正文

【微机原理与汇编语言】并行接口8255实验

一、实验目的

  1. 掌握可编程并行接口芯片8255的工作原理及初始化方法
  2. 掌握8255在实际应用中的硬件连接及编程应用

二、实验要求

根据实验室现有条件,针对实验任务,设计实验方案并进行实现。

三、实验内容

启动0#计数器,每计5个数(计数时钟用脉冲源产生),产生一次中断,在中断服务程序中,启动1#计数器工作,用其输出控制灯按照10HZ的频率闪烁。同时检测开关状态,当某一开关合上时将对应编号的指示灯点亮,开关断开时将对应的指示灯熄灭。控制灯闪烁5秒钟(用软件延时实现定时)后,停止1#计数器工作,普通中断结束。

四、实验线路图

五、实验程序清单

CSEG SEGMENT
ORG 100H
ASSUME CS:CSEG
START:CLI;关中断
;8259初始化MOV DX,04A0H MOV AL,13H;0001 0011,边沿触发方式,单片方式,要写入ICW4OUT DX,AL;ICW1MOV AL,20H;0010 0000,设置中断向量号ADD DX,2OUT DX,AL;ICW2MOV AL,01H;0000 0001OUT DX,AL;ICW4
;中断向量设置PUSH DSMOV AX,0MOV DS,AXMOV SI,27h*4MOV AX ,offset INTP MOV [SI],AXINC SIINC SIMOV AX,100HMOV [SI],AXPOP DS
;开放IR7中断
MOV AL,7FHOUT DX,AL;OCW1;8255初始化MOV AL,10000010B;A方式0,输出,B方式0,输入,C方式0,输出MOV DX,04C6HOUT DX,AL
;8253初始化
mov al,00010101b;计数器0,只读写低字节,方式二,十进制mov dx,04b6hout dx,alMov al,05hMov dx,04b0hOut dx,alMOV AL,00HMOV DX,04C0HOUT DX,ALmov al,01110110b;计数器1,先低后高,方式三,二进制mov dx,04b6hout dx,alMov ax,37500Mov dx,04b2hout dx,almov al,ahout dx,alSTI;开中断
WAITI:JMP WAITI;等待中断
INTP:mov al,01hmov dx,04C0hout dx,alMOV DX,04C2HIN AL,DXMOV DX,04C4HOUT DX,ALMov bx,10
dey:	mov cx,0
agn:	dec cxjnz agndec bxjnz deymov al,00hmov dx,04C0hout dx,alMOV AL,20HMOV DX,04A0HOUT DX,ALIRET
CSEG ENDS
END START

六、实验结论及总结

通过此次实验,我对8253,8255,8259的理解更加深刻了:8255提供了三个端口A,B,C,我们可以利用简单的方式0工作方式实现对端口输入输出的控制,在本次实验中,我利用8255来读取开关状态,并反映到对应的灯的状态上,8255还起到了对8253的计时器1的门控信号的控制作用。8253定时计数器有6种工作方式,在本次实验中,我利用了方式2与方式3,分别实现了对产生中断的控制与灯闪烁频率的控制。8259是中断控制器,一片8259A可以管理8级中断,每一级中断都可单独被屏蔽或允许。三者配合使用,能完成许多基本功能。

在实验一开始,心里还是有点没底的,因为无法使用试验台验证,只能凭自己的逻辑进行判断。但在温习ppt过后,自己开始动手写程序的过程中,随着问题被一一克服,我对实验的认识逐渐深刻,对程序的书写与修改逐渐熟练起来。

在本次实验中,我对遇到的问题总结如下:

1.一开始对于8253计数器的工作方式确定不下来,有考虑到方式0的使用,但是对于两个计数器:计数器0要不断地产生脉冲,进而产生中断,不能只产生一次中断就结束了,否定。计数器1控制灯的闪烁频率,同样也不能只闪一下就结束,这样也不好观察,否定。最后决定计数器0采用方式2,计数器1要控制灯闪烁的频率,所以采用方波发生器——方式3。

2.第二个问题是如何控制计数器开始与结束计数的时间。对于计数器0,因为计数器0的功能其实就是对中断产生的控制,所以可以不用门控信号操控计数器0,而利用开关中断实现。对于计数器1,我们可以在一开始给GATE1低电压,并在中断子程序开始处给其高电压使其开始工作,在中断子程序结尾处给低电压结束其工作。

3.关于中断,在程序一开始处cli关中断,在中断子程序前sti开中断,以此来完成对中断的控制。在8259初始化后记得要开放IR7中断(OCW1),在中断子程序结束时写入中断结束字(OCW2)。

经过反复的思考最终设计出了实验线路图与实验程序,它们完成的功能并不复杂,也可以说是很基础。但正是由这些基础的内容互相配合,交互进行,才得以完成更复杂的功能。我们需要对这些知识理解并加以掌握,才能为我们去研究更复杂的内容奠定牢固的基础。

http://www.lryc.cn/news/364343.html

相关文章:

  • Oracle表分区的基本使用
  • 6月5号作业
  • 中继器、集线器、网桥、交换机、路由器和网关
  • 揭秘相似矩阵:机器学习算法中的隐形“纽带”
  • 攻防世界—webbaby详解
  • MySQL中:cmd下输入命令mysql -uroot -p 连接数据库错误
  • 【开发利器】使用OpenCV算子工作流高效开发
  • 基础数学-求平方根(easy)
  • c语言项目-贪吃蛇项目2-游戏的设计与分析
  • 力扣2831.找出最长等值子数组
  • 17K star,一款开源免费的手机电脑无缝同屏软件
  • 正则表达式二
  • 我的创作纪念日--我和CSDN一起走过的1825天
  • 递归书写树形图示例
  • 【python】IndexError: Replacement index 1 out of range for positional args tuple
  • Spring自带定时任务@Scheduled注解
  • 代码随想录算法训练营第二十九天|LeetCode491 非递减子序列、LeetCode46 全排列、LeetCode47 全排列Ⅱ
  • 初识C++ · 优先级队列
  • php反序列化入门
  • 嵌入式 Linux LED 驱动开发实验学习
  • C++:多态
  • Java事务入门:从基础概念到初步实践
  • 鸿蒙轻内核M核源码分析系列七 动态内存Dynamic Memory
  • 从头搭hadoop集群--分布式hadoop集群搭建
  • odoo10 权限控制用户只允许看到自己的字段
  • 图解Mysql索引原理
  • Arduino网页服务器:如何将Arduino开发板用作Web服务器
  • 大模型日报2024-06-05
  • LLM 大模型学习必知必会系列(二):提示词工程-Prompt Engineering 以及实战闯关
  • Spring系统学习 - Spring入门