微机原理与汇编语言课程设计报告

微机原理与汇编语言课程设计报告
微机原理与汇编语言课程设计报告

西北师范大学

计算机科学与工程学院

微机原理与汇编语言

课程设计报告

设计题目:中断控制点阵显示与音乐模块姓名:

学号:

专业班级:

系所中心:

指导老师:

起讫时间:

设计地点:

2016年8月20日

摘要

使用8086汇编语言,在唐都TD-PITE实验箱上进行硬件连线,在计算机上采用与该实验箱配套的软件进行输入,观察实验结果。设计思路是利用在实验箱上i386内集成的两片8259芯片分别进行中断,通过实验箱上的两个脉冲开关发送信号到总线上开放的两个中断口,送入CPU内部的8259中。此时按下脉冲开关kk1+,第一个中断发生,在16*16点阵上循环滚动显示“西北师大汇编设计李泓毅”,若按下kk2+则第二个中断发生,执行音乐模块子程序,利用8254芯片开始响应预先编排好的音乐。

【关键词】级联中断;8259芯片;16*16点阵;8254芯片;SPK音乐模块;脉冲信号

目录

摘要 (2)

第一章课程设计 (2)

1.1 目的和任务 (2)

1.2 设计环境、设备与器材 (2)

第二章设计内容和方案 (3)

2.1 设计内容 (3)

2.2 设计方案 (3)

第三章课程设计相关原理简述 (3)

第四章设计实现 (4)

4.1 系统设计框架结构 (4)

4.2 系统硬件设计 (4)

4.3 系统软件设计 (6)

4.4 程序流程图 (6)

4.5 核心数据结构 (8)

4.6 关键代码片段分析 (10)

第五章设计验证 (10)

5.1 验证步骤及结果 (10)

5.2 数据分析 (10)

5.3 遇到的问题及解决 (11)

5.4 需要讨论的其它问题 (11)

5.5 结论 (11)

第六章设计总结 (12)

第七章本课程教学建议 (13)

第八章参考文献 (13)

第九章附录:源代码 (13)

第一章课程设计

1.1 目的和任务

使用8259芯片进行中断程序设计,在第一个中断中响应字模显示模块,在第二个中断中响应音乐发声模块。

1.2 设计环境、设备与器材

列出本次课程设计所用到的设备与器材,包括数量。

?设备:微机、唐都TD-PITE实验箱等。

?器材:i386芯片(内部已集成2片8259芯片)、16*16点阵显示模块、SPK 音乐发声模块、8254芯片等。

?设计环境:计算机可正确运行TD-PITE实验箱配套的软件,计算机与实验箱接口通讯正常。

第二章设计内容和方案

2.1 设计内容

采用8086芯片控制8259中断,在一号中断响应图像显示,在二号中断中响应音乐发声。

2.2 设计方案

利用在实验箱上i386内集成的两片8259芯片分别进行中断,通过实验箱上的两个脉冲开关发送信号到总线上开放的两个中断口,送入CPU内部的8259中。此时按下脉冲开关kk1+,第一个中断发生,在16*16点阵上循环滚动显示“西北师大汇编设计李泓毅”,若按下kk2+则第二个中断发生,执行音乐模块子程序,开始响应预先编排好的音乐。

因为采用了级联的中断,所以在一号中断上采用MIR7即主片8259芯片7号口,二号中断上采用SIR1即从片8259芯片1号口响应中断。

第三章课程设计相关原理简述

按照本设计需求可将本设计大致划分为三大模块分别设计。

第一模块即使用i386内集成的两片8259芯片进行级联的中断设计,使用了实验箱上开放的MIR7与SIR1两个接口。并且利用试验箱上的两个脉冲信号开关进行中断发生操作。

第二模块则是在MIR7中断响应时完成图像显示功能。使用了16*16点阵来完成此操作,此点阵由4个8*8点阵构成,显示时采用自下而上滚动显示的方法,逐行刷新。

第三模块是在SIR1中断响应时完成音乐发声功能。使用8254芯片方式3方波发生器对应扬声器达到响应音乐的目的。

第四章设计实现

4.1 系统设计框架结构

以8086CPU为主架构,其中添加两个由8259芯片控制的中断,第一个中断响应时实现图像显示功能,第二个中断响应时实现音乐发声功能。

4.2 系统硬件设计

中断模块硬件设计:

图像显示模块硬件设计:

音乐发声模块硬件设计:

总体硬件连线:

4.3 系统软件设计

4.4 程序流程图

整体程序流程图参照上方软件总体设计16*16液晶点阵显示程序流程图:

音乐发声模块流程图:

4.5 核心数据结构

ROW1 EQU 0600H ;端口定义

ROW2 EQU 0640H

COL1 EQU 0680H

COL2 EQU 06C0H

IOY3 EQU 06C0H

MY8254_COUNT0 EQU IOY3+00H ;8254计数器0端口地址

MY8254_COUNT1 EQU IOY3+02H ;8254计数器1端口地址MY8254_COUNT2 EQU IOY3+04H ;8254计数器2端口地址MY8254_MODE EQU IOY3+06H ;8254控制寄存器端口地址

;初始化主片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

;初始化从片8259

MOV AL, 11H

OUT 0A0H, AL ;ICW1

MOV AL, 30H

OUT 0A1H, AL ;ICW2

MOV AL, 02H

OUT 0A1H, AL ;ICW3

MOV AL, 01H

OUT 0A1H, AL ;ICW4

MOV AL, 0FDH

OUT 0A1H,AL ;OCW1 = 1111 1101

4.6 关键代码片段分析

MOV AL,20H

OUT 20H,AL中断结束的标志,通过在具体操作中放置位置的不同达到不同的效果

第五章设计验证

5.1 验证步骤及结果

无论按下哪个中断都会响应具体程序,不会表现出MIR7优先级大于SIR1优先级。在中断程序进行时,如果再次按下中断则该程序会重新进行。

5.2 数据分析

优先级考量如下:

因为软件流程设计将两片8259初始化都放在了循环等待程序中,所以每次执行中断后都会进行一次初始化,这样的话实际上是每次对ICW4中的EOI位

置进行一次置位,也就是说8259A只要向CPU发送了中断号就会将ISR中的相应位清零,这样一来实际表现出没有优先级即可以让两个中断相互抢优先级。

5.3 遇到的问题及解决

在16*16LED液晶点阵显示中,对于字模的取法是A51,横向取模字节倒序的方式,因为对其刷新方式及ROW1、ROW2、COW1、COW2表示的不理解,出现了反向显示,中心对称相反等等问题,现已解决。

在中断控制中,因为对于中断的理解有误,在中断程序中使用了死循环,即LED点阵显示循环和音乐循环,导致中断不能正常进行,这是对于中断结构的不理解,在中断程序中不能有死循环,现已解决。

5.4 需要讨论的其它问题

重点还是在于对于硬件设备的理解不够,通过实验时遇到具体问题去查资料到完成报告时,通过对问题的分析再一次详尽的阅读资料才对8259芯片的运作方式有了进一步的了解。

5.5 结论

因为软件流程设计将两片8259初始化都放在了循环等待程序中,所以每次执行中断后都会进行一次初始化,这样的话实际上是每次对ICW4中的EOI位置进行一次置位,也就是说8259A只要向CPU发送了中断号就会将ISR中的相应位清零,这样一来实际表现出没有优先级即可以让两个中断相互抢优先级。

第六章设计总结

从本次设计中我体会到了计算机科学的精确性,尤其是由于我使用了汇编语言,这就使得必须对于硬件本身的运作方式有一定的了解。

从刚开始实验时对于8259芯片模糊的概念,到遇到问题时查询资料,再到设计完成时可以说对于8259的架构都不能说完全了解。最后到现在完成设计报告时又一次的阅读8259的运作方式才算是对这一个芯片有浅薄的了解。

可以肯定的是汇编语言绝对是相对于其他,例如c语言之类语言而言,最适宜了解计算机的语言。因为想要达到最终设计目标你就必须去了解硬件的运作方式,一步一步都必须有所了解。否则即使作出了相应结果也无法从科学的角度进行精准的解释。

但是也必须承认硬件架构是最麻烦最精准最不好学,当然也是最不可思议的设计。通过学习几十年前的硬件工程师设计出的芯片可以说窥一斑而知全豹,可以说无比佩服那些工程师精妙而万无一失的设计。

尤其是基于现在去看几十年前的技术,会有无数资料还有网上很多有识之士的讲解,都可以说很难学习,可以想见真正前沿的没有多少资料的研究和学习是无比困难的。

总而言之,要说体会的话就是计算机是一个精妙的设计,想要真的搞懂就得踏踏实实一点一点学习,但是这个东西经过这么多年的发展可以说太繁琐太复杂,又容不得一点模糊,实在是很难。

相关主题
相关文档
最新文档