8255A口并口控制步进电机正反转程序的正反转和停止

硕士/研究生
&&&&&&DOC文档下载
游客快捷下载
会员登录下载
下载资源需要10元
邮箱/手机号:
您支付成功后,系统会自动为您创建此邮箱/手机号的账号,密码跟您输入的邮箱/手机号一致,以方便您下次登录下载和查看订单。
支付方式:
已注册用户请登录:
当日自动登录&&
&&合作网站一键登录:
1、本站资源不支持迅雷下载,请使用浏览器直接下载(不支持QQ浏览器);
2、文档下载后都不会有金锄头文库的水印,预览文档经过压缩,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、所有文档都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的,可以点击右侧栏的客服对话;
下载须知 | 常见问题汇总
中南大学_微机课设报告-小型步进电机控制系统设计
微机应用系统设计与综合实验设计报告设计题目小型步进电机控制系统设计指导老师李志民设计者专业班级自动化班学号0909设计日期1228目录摘要3一、课程设计目的4二、设计题目名称及要求4三、实验设备4四、设计的思想和实施方案5五、硬件原理图10六、典型程序模块及典型编程技巧11七、课程设计中遇到的问题及解决方法16八、程序流程图17九、程序清单及程序注释20十、收获体会37十一、参考文献38十二、附件39摘要在现代电子产品中,步进电机广泛应用于ATM机、喷绘机、刻字机、写真机、喷涂设备、医疗仪器及设备、计算机外设及海量存储设备、精密仪器、工业控制系统、办公自动化、机器人等领域。所以步进电机的控制是一门很实用的技术。本实验主要是基于唐都PIT试验箱的步进电机控制的设计。主要使用到了并行接口电路8255、LED七段数码管电路、8086CPU、步进电机等元件。主要是通过按键的不同来设置直流电机的转速、运行状态和方向。软件部分采用了汇编语言编写程序代码和C语言编写的步进电机控制程序,通过判断、跳转、循环、延时等基本技术实现。此系统可以通过键盘输入相关数据,并根据需要,实时对步进电机工作方式进行设置,具有实时性和交互性的特点。该设计可应用于步进电机控制的大多数场合。关键词步进电动机调速方向控制并行接口七段数码管小型步进电机控制系统设计报告4/月30号小型步进电机控制系统一、课程设计目的课程设计是本科教学全过程中的重要环节。微机应用系统设计与综合实验实践课程设计主要培养我们自动化专业学生,运用所学知识解决计算机应用领域内实际问题能力,进一步提高学生运用计算机编程语言综合编程能力、程序调试技能和微机系统接口综合应用及电路设计能力。1、学习在PC系统中扩展简单的I/O接口的方法。2、熟练掌握和运用汇编和C语言编写程序控制8255各口的输入输出,并正确带动数码管及步进电机;能熟练运用汇编和C语言实现8254的定时功能,以确保8255输出的脉冲频率稳定。3、熟练掌握ISA总线配置方式下硬件实验的调试,并能独立的排除故障,以确保实验的顺利进行。4、巩固和加深课堂所学知识;5、学习掌握一般的软硬件的设计方法和查阅、运用资料的能力;6、通过步进电机控制系统设计与制作,深入了解与掌握步进电机的运行方式、方向、速度、启/停的控制。二、设计的题目名称及要求设计题目小型步进电机控制系统设计。设计要求(1)分别用C语言和汇编语言编程完成硬件接口功能设计;(2)基于80X86微机接口硬件电路设计调试;(3)控制功能要求小键盘给定分段速度,数码管显示当前步进电机启动与停止、方向、速度信息;(4)具有本地与远程(串行方式下)功能。三、实验设备PC机一台(装有TDPIT软件)、唐都AEDK8688ET实验箱。使用硬件8086PC,8255芯片,键盘数码管,步进电机驱动电路,步进电机。小型步进电机控制系统设计报告5/月30号四、设计的思想和实施方案4118255A的功能简介INTEL系列的可编程外设接口电路(PROGRAMMABLEPERIPHERALINTERFACE简称PPI,型号为8255(改进型为8255A及8255A5),具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。它是一片使用单一5V电源的40脚双列直插式大规模集成电路。8255A的通用性强,使用灵活,通过它CPU可直接与外设相连接。8255A在使用前要写入一个方式控制字,选择A、B、C三个端口各自的工作方式,共有三种方式0基本的输入输出方式,即无须联络就可以直接进行的I/O方式。其中A、B、C口的高四位或低四位可分别设置成输入或输出。方式1选通I/O,此时接口和外围设备需联络信号进行协调,只有A口和B口可以工作在方式1,此时C口的某些线被规定为A口或B口与外围设备的联络信号,余下的线只有基本的I/O功能,即只工作在方式0方式2双向I/O方式,只有A口可以工作在这种方式,该I/O线即可输入又可输出,此时C口有5条线被规定为A口和外围设备的双向联络线,C口剩下的三条线可作为B口方式1的联络线,也可以和B口一起方式0的I/O线。图18255控制字格式小型步进电机控制系统设计报告6/月30号412步进电机的工作原理步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。步进电机动态指标及术语1、步距角精度步进电机每转过一个步距角的实际值与理论值的误差。用百分比表示误差/步距角100。不同运行拍数其值不同,四拍运行时应在5之内,八拍运行时应在15以内。2、失步电机运转时运转的步数,不等于理论上的步数。称之为失步。3、失调角转子齿轴线偏移定子齿轴线的角度,电机运转必存在失调角,由失调角产生的误差,采用细分驱动是不能解决的。4、电机正反转控制当电机绕组通电时序为ABBCCDDA或时为正转,通电时序为DACABCAB或时为反转。驱动控制系统组成使用、控制步进电机必须由环形脉冲,功率放大等组成的控制系统,其方框图如下脉冲信号的产生脉冲信号一般由单片机或CPU产生,一般脉冲信号的占空比为0304左右,电机转速越高,占空比则越大。下图步进电机为一四相步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。图2是该四相反应式步进电机工作原理示意图。小型步进电机控制系统设计报告7/月30号图2四相步进电机步进示意图开始时,开关SB接通电源,SA、SC、SD断开,B相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和C、D相绕组磁极产生错齿,2、5号齿就和D、A相绕组磁极产生错齿。当开关SC接通电源,SB、SA、SD断开时,由于C相绕组的磁力线和1、4号齿之间磁力线的作用,使转子转动,1、4号齿和C相绕组的磁极对齐。而0、3号齿和A、B相绕组产生错齿,2、5号齿就和A、D相绕组磁极产生错齿。依次类推,A、B、C、D四相绕组轮流供电,则转子会沿着A、B、C、D方向转动。四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图3A、B、C所示A单四拍B双四拍C八拍图3步进电机工作时序波形图小型步进电机控制系统设计报告8/月30号图4励磁线圈413设计思想和实施方案设计图电机状态显示模块CPU8255LED显示模块步进电机模块键盘扫描模块小型步进电机控制系统设计报告9/月30号本次设计,对8255的使用是这样的8255工作于方式0,C口高四位接键盘及数码管显示单元的X1X4C口低四位接键盘及数码管显示单元的Y1Y4A口高四位接步进电路的驱动电路,使电机转动起来;B口接数码管的A、B、C、D、E、F、G和DP,以使数码管显示电机的转向和转速。8255的A口低四位接L1L4。方向键控制步进电机运行方向,无论电机处于运行或停止状态,每按下一次,电机转动方向反向;运行/暂停键控制电机运行与否。电机转动时按下,电机暂停,当前电机运行参数不变,再次按下时,电机继续按暂停前参数运行;停止键无论电机处于任何状态,按下此键,电机停止转动,电机各运行参数复位,默认参数为“顺时针,停止状态,1档”;档位键无论电机处于任何状态,均可设定电机档位。左起第一个数码管显示当前电机的运行状态SSTOP)表示当前电机为停止状态;EENABLE表示当前电机为运行状态;PPAUSE表示当前电机为暂停状态。第二个数码管未使用,只显示一杠。第三个数码管显示电机运行方向CCLOCKWISE表示电机运行方向为顺时针;AANTICLOCKWISE表示电机运行方向为逆时针。第四个数码管显示电机的档位1、2、3、4分别表示1、2、3、4档。键盘数码管内部连线如下图小型步进电
本文(中南大学_微机课设报告-小型步进电机控制系统设计)为本站会员(jiquhe72)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“”【网址:】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。
分享当前资源【中南大学_微机课设报告-小型步进电机控制系统设计】到朋友圈,您即可以免费下载此资源!
微信扫一扫分享到朋友圈
操作提示:任选上面一个二维码,打开微信,点击“发现”使用“扫一扫”,即可将选择的网页分享到朋友圈
您可能感兴趣的------------------------------------------------------------------------------------------------------
元price_share
&|&川公网安备 12号&|&经营许可证(蜀ICP备号-1)(C) by Sichuan Goldhoe Inc. All Rights Reserved.
&strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>一、&/span>&/strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>本站提供全自助服务,购买后点击下载按钮可以下载到你电脑或手机(系统不会发送文档到您的邮箱),请注意查看下载存放位置;&/span>&/p>&p>&strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>二、&/span>&/strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>本站具有防盗链功能,所以不要使用迅雷、旋风、网际快车等第三方辅助下载工具(不支持&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>QQ浏览器&/span>),否则下载下来的文件只是网页或乱码;&/span>&br/>&/p>&p>&strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>三、&/span>&/strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>由于网络原因、下载知识欠缺、本地电脑&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>或&/span>手机阻止下载等问题无法解决时,需要提供以下&/span>&span style=&font-family: 微软雅黑, &Microsoft YaHei&; color: rgb(255, 0, 0);&>任意一条信息&/span>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>给我们,我们才能更及时地为你服务:&/span>&br/>&/p>&p>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>3.1、如果是注册的会员,请告诉我们你的会员账号;&/span>&/p>&p>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>3.2、如果是游客下载的,请告诉我们你下载时填写的手机或者邮箱;&/span>&/p>&p>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>3.3、如果是微信或QQ快捷登陆的,请告诉我们你的微信或QQ昵称;&/span>&/p>&p>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>3.4、如果这些你仍然无法确定,请告诉我们你的付款单号(我们可以通过单号反过来查询你的账号和下载记录)&/span>&a href=&http://www.jinchutou.com/i-93.html& target=&_blank& style=&text-decoration: color: rgb(255, 192, 0); font-family: 微软雅黑, &Microsoft YaHei&;&>&span style=&color: rgb(255, 192, 0); font-family: 微软雅黑, &Microsoft YaHei&;&>看看什么是单号?&/span>&/a>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>;&/span>&/p>&p>&strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>四、&/span>&/strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>需要下载哪份文档,请发送文档网址,而不是截图,更不要直接把标题给我们;&/span>&br/>&/p>&p>&strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>五、&/span>&/strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>其它下载常见问题详见:&/span>&a href=&http://www.jinchutou.com/info-0-23-1.html& target=&_blank& style=&font-family: 微软雅黑, &Microsoft YaHei&;&>http://www.jinchutou.com/info-0-23-1.html&/a>&br/>&/p>&p>&br/>&/p>" />
?&/span>&span id=&_baidu_bookmark_start_4& style=&display: line-height: 0&>?&/span>&p>&span style=&font-family: 微软雅黑, Arial, &Times New Roman&; font-size: 14 background-color: rgb(255, 255, 255);&>& & 鉴于本网发布稿件来源广泛、数量较多, 系统审核过程只针对存在明显违法有害内容(如色情、暴力、反动、危害社会治安及公共安全等公安部门明文规定的违法内容)进行处理,难以逐一核准作者身份及核验所发布的内容是否存在侵权事宜, 如果著作权人发现本网已转载或摘编了其拥有著作权的作品或对稿酬有疑议, 请及时与本网联系删除。&/span>&/p>&p>&strong style=&color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &Times New Roman&; font-size: 14 white-space: background-color: rgb(255, 255, 255);&>& & 侵权处理办法参考版权提示一文:&/strong>&a href=&http://www.jinchutou.com/h-59.html& target=&_blank& textvalue=&http://www.jinchutou.com/h-59.html&>http://www.jinchutou.com/h-59.html&/a>&span style=&color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &Times New Roman&; font-size: 14 background-color: rgb(255, 255, 255);&>&&/span>&/p>&p>&span style=&color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &Times New Roman&; font-size: 14 background-color: rgb(255, 255, 255);&>1、如涉及内容过多,需要发送邮箱,请电子邮箱到,我们会及时处理;&/span>&/p>&p>&span style=&color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &Times New Roman&; font-size: 14 background-color: rgb(255, 255, 255);&>2、系统一旦删除后,文档肯定是不能下载了的,但展示页面缓存需要一段时间才能清空,请耐心等待2-6小时;&/span>&/p>&p>&span style=&color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &Times New Roman&; font-size: 14 background-color: rgb(255, 255, 255);&>3、请版权所有人(单位)提供最起码的证明(证明版权所有人),以便我们尽快查处上传人;&/span>&/p>&p>&span style=&color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &Times New Roman&; font-size: 14 background-color: rgb(255, 255, 255);&>4、请文明对话,友好处理;&/span>&/p>&p>&span style=&color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &Times New Roman&; font-size: 14 background-color: rgb(255, 255, 255);&>5、为了杜绝以前再有类似的侵权事情,可以为我们提供相应的关键字,便于管理人员添加到系统后能有效排除和抵制与您(贵单位)相关版权作品上传;&/span>&/p>&span id=&_baidu_bookmark_end_5& style=&display: line-height: 0&>?&/span>&span id=&_baidu_bookmark_end_3& style=&display: line-height: 0&>?&/span>" />
&span style=&color: rgb(85, 85, 85); font-family: 微软雅黑; background-color: rgb(255, 255, 255);&>& & 为了维护合法,安定的网络环境,本着开放包容的心态共建共享金锄头文库平台,请各位上传人本着自律和责任心共享发布有价值的文档;本站客服对于上传人服务前,有以下几点可提前参阅:&/span>&/p>&p>&span style=&color: rgb(85, 85, 85); font-family: 微软雅黑; background-color: rgb(255, 255, 255);&>1、本站上传会员收益见:&a href=&http://www.jinchutou.com/h-36.html& target=&_blank&>http://www.jinchutou.com/h-36.html&/a> &/span>&/p>&p>2、本站不会为任何刚注册的上传会员特批解除上传限制,普通会员每天可以上传50份,值班经值会审核其上传内容,请自行观察自己上传的文档哪些在“临时转换中”(审核通过),哪些在审核拒绝中,连续坚持几天都没有任何文档被拒的情况下,根据文档质量和发布分类是否正常等考量合格后值班经理会特批升级会员等级,相应的权益也同时上升。&/p>&p>3、上传人本着友好、合作、共建、共享的原则,请耐心仔细的查看《&a href=&http://www.jinchutou.com/i-143.html& target=&_blank&>违禁作品内容处理规则》;&/a>&a href=&http://www.jinchutou.com/i-143.html& target=&_blank&>http://www.jinchutou.com/i-143.html&/a>&/p>&p>4、上传人可以观注本站公告,查看其它被公示永久封禁的原因&a href=&http://www.jinchutou.com/news-1.html& target=&_blank&>http://www.jinchutou.com/news-1.html&/a>&/p>&p>5、其它问题可以参阅上传常见问题指引:&a href=&http://www.jinchutou.com/info-0-25-1.html& target=&_blank&>http://www.jinchutou.com/info-0-25-1.html&/a>&/p>" />微机原理与接口技术实验教材-海文库
全站搜索:
您现在的位置:&>&&>&工学
微机原理与接口技术实验教材
第二章 微机原理与接口技术实验一 汇编语言编译过程汇编语言(AssemblyLanguage)是面向机器的程序设计语言。在汇编语言中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编。一、实验目的1、熟悉汇编语言源程序的基本格式。2、理解汇编中地址的概念并体会汇编语言的特点。3、理解各种数据类型和指令在存储器中的存放方式3、掌握在DOS环境下汇编程序的编写、汇编和调试方法。4、掌握在EMU8086环境下汇编程序的编写、汇编和调试方法。二、实验原理1、汇编语言的优点汇编语言直接同计算机的底层软件甚至硬件进行交互,它具有如下一些优点:1) 面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的;2) 保持了机器语言的优点,具有直接和简捷的特点;3) 可直接、有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等;4) 目标代码简短,占用内存少,执行速度快,是高效的程序设计语言;
5) 经常与高级语言配合使用,应用十分广泛。2、汇编语言的缺点应该认识到,汇编语言是一种层次非常低的语言,它仅仅高于直接手工编写二进制的机器指令码,因此不可避免地存在一些缺点:1) 编写的代码非常难懂,不好维护;2) 很容易产生bug,难于调试;3) 只能针对特定的体系结构和处理器进行优化;4) 开发效率很低,时间长且单调。3、DOS系统功能调用MS DOS操作系统为程序设计者提供了可以直接调用的软中断处理程序,每一个中断处理程序完成一个特定的功能操作。依据编程需要选择适当的处理程序,编程者不需再重新编写程序,而是使用INT n软中断指令。每执行一种不同类型码n的软中断指令,就执行一个中断处理程序,其主要功能如下。1) 磁盘的读/写控制。2) 内存管理、文件操作和目录管理。3) 基本输入/输出(对键盘、打印机和显示器等)控制,另外还有日期、时间管理等。a、本次实验使用9号功能调用(屏幕显示字符串)格式: MOV DX, 字符串的偏移地址MOV AH, 09HINT 21H功能:在屏幕上显示字符串。在使用9号功能调用时,应当注意以下问题。1) 待显示的字符串必须先放在内存一数据区(DS段)中,且以‘$’符号作为结束标志。2) 应当将字符串首地址的段基址和偏移地址分别存入DS和DX寄存器。
三、实验仪器或实验条件IBM-PC兼容计算机,Microsoft操作系统,MASM宏汇编或EMU8086。四、实验内容与实验步骤1、DOS环境1) 在DOS方式下键入edit
new.asm&CR&2) 输入源程序并保存3) 键入masm new&CR&进行汇编,生成new.obj目标文件,并保存new.list列表文件4) 如果提示有错误,参考列表文件并修改程序文件new.asm,重复第三步键入link new&CR&进行连接,生成new.exe可执行文件键入new&CR&运行程序2、Windows环境1) 在Windows中进入EMU80862) 输入源程序并保存3) 单击emulate运行程序并在仿真窗口中观察运行结果五、实验程序stack segment
dup(?) stack
ends data BUFB BUFW OBUF data code main
segment DB
9AH,0AFH DW
9 DUP (?) ends segment proc
far assume
ss:stack, cs:code, ds:data
start: pushsubmovmovMOVMOVMOVAGAIN: MOVSHLADDMOVINCLOOPMOVMOVMOVINTretmaincodeend
ds ax, ax ax, data ds, ax CX, 8 BX, 0 AL, BUFB AH,0 AX, 1 AH, 30H OBUF[BX], AH BX AGAIN OBUF[BX], '$' DX, OFFSET
OBUF AH, 9 21H endp ends start六、实验注意事项或实验现象分析1) 汇编程序中所有字符及符号均为半角英文字符(注释除外)。2) 记录编译过程中错误并分析原因。3) 如将语句 MOV
OBUF[BX],’$’去掉,输出结果是什么,试分析其原因。4) 将源程序中9AH改为-1,输出结果是什么,试分析其原因5) 如将MOV
CX, 8 语句中的8改为4,输出结果又是什么。6) 将指令MOV AL, BUFB中的BUFB改为BUFB+4,输出结果是什么,试分析
七、思考题1) 本程序中9号功能调用输出数据如何获得。2) 若要输出BUFW数据区中第二个元素的高字节,程序中哪些地方需要修
改,如何修改?3) 绘制本程序流程图。
实验二 DEBUG调试(或EMU8086调试)1937年,美国青年霍德华.艾肯找到IBM公司为其投资200万美元研制计算机,第一台成品艾肯把它取名为:马克1号(mark1),又叫“自动序列受控计算机”,从这时起IBM公司由生产制表机,肉铺磅秤,咖啡研磨机等乱七八糟玩意儿的行业,正式跨进“计算机”领地。为马克1号编制程序的是哈佛的一位女数学家格蕾丝?莫雷?赫伯,有一天,她在调试程序时出现故障,拆开继电器后,发现有只飞蛾被夹扁在触点中间,从而“卡”住了机器的运行。于是,霍波诙谐的把程序故障统称为“臭虫(BUG)”,把排除程序故障叫DEBUG,而这奇怪的“称呼”,后来成为计算机领域的专业行话。从而debug意为程序除错的意思。
一、实验目的1、熟悉使用DEBUG调试可执行文件的基本方法2、掌握在DEBUG中显示寄存器内容与显示存储器内容的命令3、掌握利用DEBUG中的反汇编命令对可执行文件进行反汇编与置断点的命令4、掌握在EMU8086环境下查看寄存器、存储器内容,并设置断点的方法。二、实验原理1、DEBUG的作用DEBUG是一个专门为汇编语言设计的交互式调试工具,它提供一个控制测试的环境,以便用户能够监视和控制被调试程序的执行;可以直接确定直接确定程序中出现的问题,然后立即修改程序以便判定这些问题是否已经解决,而不必重新去编写一个程序;可以直接设置寄存器和存储器的值,也可设置断点使程序暂停执行以便察看中间结果;总之,它为汇编语言程序员提供了非常有效的调试手段。2、DEBUG的常用命令
DEBUG在字符界面下以单字符命令方式工作,现将本次试验所用命令介绍如下:1) -R 寄存器名 显示并允许修改指定寄存器的值2) -T 地址 单步执行机器指令,缺省地址则从上一T命令继续。另,继续跟踪m条指令:-T m3) -D 始址 终址 以16进制/Asc字符对照方式显示指定内存范围的数据,每行显示10H个字节4) -E 地址 值表 用给出的值表(空格分隔)替换指定地址开始的内存单元,例:-E 100 'v' 1F 'hello'5) -U 地址 从指定地址开始反汇编32字节的机器指令,缺省地址则从上一U命令继续6) -G 始址 终址 执行指定内存中的机器指令程序7) -Q 退出DEBUG3、DEBUG的启动方法启动 Debug,Debug [[drive:][path] filename [parameters]]参数 [drive:][path] filename 指定要测试的可执行文件的位置和名称。
parameters
指定要测试的可执行文件所需要的任何命令行信息。三、实验仪器或实验条件IBM-PC兼容计算机,Microsoft操作系统,MASM宏汇编或EMU8086。四、实验内容与实验步骤1、DOS环境(测试第一次实验所生成的可执行文件)1) 在DOS方式下键入DEBUG
new.exe&CR&2) 在DEBUG的提示符“-”下输入R,显示各寄存器的值3) 输入D,察看指定存储单元的值4) 使用命令T,单步执行程序
5) 使用命令U,对文件进行反汇编6) 使用G命令,设置相应断点
2、Windows环境1) 在Windows中进入EMU80862) 输入源程序并保存3) 单步运行程序,并在仿真窗口中观察各个寄存器的变化,并能随时查看数据段中数据的变化五、实验程序stack segment
dup(?) stack
ends data BUFB BUFW OBUF data code main
segment DB
9AH,0AFH DW
9 DUP (?) ends segment proc
far assume
ss:stack, cs:code, ds:datadsax, axax, datads, axCX, 8BX, 0AL, BUFAH,0AX, 1 start: push sub
AGAIN: MOV
endAH, 30H OBUF[BX], AH BX AGAIN OBUF[BX], '$' DX, OFFSET
OBUF AH, 9 21Hendp ends start六、实验注意事项或实验现象分析1、 记录初始化前各寄存器的值和数据段前16个字节的值。表2.1初始化前各寄存器及数据段存储器
2、 记录初始化后各寄存器与数据段前16个字节的值。表2.2初始化前各寄存器及数据段存储器
3、 分别在循环开始与结束时设置断点,记录循环结束时各个寄存器与数据段前16字节的值表2.3循环结束后各寄存器及数据段存储器
七、思考题1、 比较表2.1与表2.2,说明为何不同2、 比较表2.2与表2.3有何不同,试说明其原因
实验三 基本输入输出实验I/O端口是接口电路中能被CPU直接访问的寄存器的地址。一个接口电路拥有多个端口,如命令口,状态口,数据口,各端口具有不同读写特性。访问端口就是访问接口电路中的寄存器。地址信号和控制信号为输入信号,产生的输出信号就是1根选中线,低电平有效。实现对接口芯片的选择,被选中的芯片的内部数据线打开,与总线建立连接。一般把地址线分为两部分:1) 高位地址线与CPU的控制信号线组合,经译码电路产生片选信号。2) 低位地址线不参加译码,直接连接到I/O接口芯片,进行I/O接口芯片内部的端口寻址。3) 故低位地址线又称为接口电路中的寄存器寻址线。
一、实验目的1、熟悉试验台环境,了解微机各组成部分及其引脚。2、熟悉汇74LS273,74LS244的应用接口方法。3、理解端口地址的概念,能编程控制不同的地址线接法。4、掌握用锁存器、三态门扩展简单并行输入、输出口的方法。
二、实验原理1、74 LS27374LS273是一种带清除功能的8D触发器, 1D~8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发,低电平清除,常用作数据锁存器,地址锁存器。第一脚WR:主清除端,低电平触发,即当为低电平时,芯片被清除,输出全为0(低电平);CP(CLK):触发端,上升沿
触发,即当CP从低到高电平时,D0~D7的数据通过芯片,为0时将数据锁存,D0~D7的数据不变。
2、74 LS24474LS244为3态8位缓冲器,一般用作总线驱动器。74LS244没有锁存的功能。地址锁存器就是一个暂存器,它根据控制信号的状态,将总线上地址代码暂存起来。数据和地址总线采用分时复用操作方法,即用同一总线既传输数据又传输地址。 1A1~1A4,2A1~2A4
输入端1G,2G
三态允许端(低电平有效)1Y1~1Y4,2Y1~2Y4
输出端。3、输入输出指令1、 在IBM PC机里,所有I/O端口与CPU之间的通信都由IN和OUT指令来完成。其中IN完成从I/O到CPU的信息传送,而OUT完成从CPU到I/O的信息传送。2、 CPU只能用累加器(AL或AX)接收或发送信息。外部设备最多可有65536个I/O端口,端口号(即外设的端口地址)为0000到FFFFH。其中前256个端口(0到FFH)可以直接在指令中指定,当端口号≥256时,必须先将端口号放到DX寄存器中(端口号可以从0000到0FFFFH),然后再用IN或OUT指令来传送信息。必须注意,这里的端口号或DX的内容均为地址,而传送的是端口中的信息。3、 IN和OUT指令提供了字和字节两种使用方式,选用哪一种,则取决于外设端口宽度。如端口宽度只有8位则只能用字节指令传送信息。
三、实验仪器或实验条件IBM-PC兼容计算机,微机原理实验套件。
四、实验内容与实验步骤用常用输入输出芯片244扩展输入,273扩展输出控制开关输入、发光二极指示灯显示输出结果。1) 设计出244、273与8086接口对应硬件电路,并完成相应的连接。2) 调试对应244、273、开关硬件接口电路及相应接口软件。3) 用开关接输入部分,当拨动开关对应发光二极管亮,显示输出结果。五、实验程序assume cs:codecode segment publicorg 100hSTART: MOVINMOVOUTJMPcode endsend startDX,04A0H74LS244地址 AL,DX读输入开关量 DX,04B0H74LS273地址 DX,AL
START ;输出至LED六、实验注意事项或实验现象分析1) 填写任意四种开关状态及对应发光二极管亮灭状态。
输入输出状态
2) 74LS 244或74LS273的片选信号可以改变,此时应同时修改程序中相应的地址,将变换片选信号与程序中对应地址修改记录下来。
片选信号与程序地址对应表七、思考题1) 本实验中端口地址如何确定?2) 绘制硬件连接图。3) 如果用只访问一个I/O地址(而不是二个I/O地址)的方法来实现输入端状态送输出端,电路应怎样连接?程序应如何修改?画出电路图。 Cs0:CA0-CAF,偶地址有效
实验四 8255并口芯片应用实验简单的接口芯片特点:功能单一、使用简便、无需编程,一旦与硬件连接起来,其功能就固定了。常见不可编程控制芯片(芯片功能固定)74LS373、74LS245、可编程接口芯片特点:具有多种功能和多种工作方式,使用灵活、通用性强,通过编程可以选择其功能、改变其工作方式。常见可编程控制芯片(芯片功能可变)8255A、A、8237A、82501、 芯片内部可以有多个寄存器,通过不同的端口地址进行读/写访问:1) 写控制字到控制口,用来 设置芯片功能;2) 从状态口读状态字;3) 读/写数据,以实现CPU与数据口之间的信息交换。2、 芯片有片选信号 CS及片内端口选择信号:1) 系统高位地址线经译码产生片选线CS;2) 在CS有效的前提下,由系统低位地址线选择片内寄存器,由此确定芯片内各端口的地址3、 并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位、32位等。
一、实验目的1、掌握多地址芯片的连接方法及对各端口的读写方法2、掌握8255的工作方式及应用编程。3、掌握8255的典型应用电路接法。
二、实验原理1、8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/出方式方式1--选通输入/出方式方式2--双向选通工作方式。2、8255的内部结构及引脚如图4-1所示。
图4-1 8255的内部结构及引脚
8255内部有四个端口地址,由芯片引脚CS所接高位地址线决定其片选地址,A0、A1所输入信号状态确定当前端口地址,不同接法其地址范围不同,8255工作须先进行初始化设置,即向其控制端口内写入方式选择控制字。常规接法中,地址中线中A0接8255的A0,地址总线中A1接8255的A1,其余高位地址线经过译码器译码产生的片选信号接片选端CS:
A1 0 0 A0 0 1 端口 端口A 端口B
1 1 0 1 端口C 控制端口3、8255工作方式控制字和C口按位置位/复位控制字格式如图4-2所示。
8255控制字格式
三、实验仪器或实验条件IBM-PC兼容计算机,微机原理实验套件。四、实验内容与实验步骤1、 基本输入输出实验。编写程序,使8255的A口为输出,B口为输入,完成拨动开关到数据灯的数据传输。要求只要开关拨动,数据灯的显示就改变。本实验使8255端口A工作在方式0并作为输出口,端口B工作在方式0并作为输入口。用一组开关信号接入端口B,端口A输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入输出功能。参考程序
流程如图4-3所示。
图4-3 8255并口应用实验(1)参考程序流程图
图4-4 8255并口应用实验(1)参考接线图2、 流水灯显示实验。编写程序,使8255的A口和B口均为输出,实现16位数据灯的相对循环显示。首先分别向A口和B口写入80H和01H,然后分别将该数右移和左移一位,再送到端口上,这样循环下去,从而实现流水灯的显示。参考实验
程序流程如图4-3所示。
图4-3 8255并口应用实验(2)参考程序流程图
图4-4 8255并口应用实验(2)参考接线图五、实验程序;8255基本输入输出实验代码;*************根据查看端口资源修改下列符号值**************IOY0
04A0H片选CS对应的端口始地址;*********************************************************
IOY0+00H*28255的A口地址MY8255_B
IOY0+01H*28255的B口地址MY8255_C
IOY0+02H*28255的C口地址MY8255_MODE
IOY0+03H*2STACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODESTART: MOV DX,MY8255_MODE初始化8255工作方式MOV AL,82H工作方式0,A口输出,B口输入
OUT DX,ALLOOP1: MOV DX,MY8255_B读B口IN
AL,DXMOV DX,MY8255_A写A口OUT DX,ALJMP LOOP1QUIT:CODE ENDSEND START
;8255流水灯显示实验代码;************根据查看端口资源修改下列符号值*************** IOY0
04A0H片选IOY0对应的端口始地址 ;********************************************************* MY8255_A
IOY0+08255的A口地址MY8255_B
IOY0+28255的B口地址MY8255_C
IOY0+48255的C口地址MY8255_MODE
IOY0+68255的控制寄存器地址 STACK1 SEGMENT STACK AT 2000H;8255的控制寄存器地址
DW 16 DUP(?)STACK1 ENDSCODE SEGMENT PUBLICASSUME CS:CODE,SS:STACK1ORG 100HSTART: JMP START1
01H,03H,07H,0FH,1FH,3FH,7FH,0FFH定义数据变量 TAB2
81H,42H,24H,18H,81H,42H,24H,18H LB
? EVENSTART1:MOV AX, CSMOV DS, AX
MOV SP,100H MOV DX, MY8255_MODE定义8255工作方式
MOV AL, 82H工作方式0,A口输出B口为输入
OUT DX, ALMOV DX, MY8255_AA口清零MOV AL, 00HOUT DX, ALNEXT:
MOV DX,MY8255_B IN
AL, DX TEST AL,0FFH JZ
NEXT TEST AL,01H JZ TEST2 LEA BX, TAB1 JMP LOP1
TEST2: TEST AL,2
JZ NEXT LEA BX,TAB2LOP1:
CALL DELAY
MOV AL,[BX][SI]输出TAB1中的数据 NOT ALMOV DX,MY8255_AOUT DX, ALINC SICMP SI,8JNZ LOP1JMP NEXTQUIT:
HLTDELAY PROC NEAR软件延时子程序
PUSH CXPUSH AXMOV CX, 7FHD1:
MOV AX, 0FFHD2:
DEC AXJNZ D2LOOP D1POP AXPOP CXRETDELAY ENDPCODE ENDSEND START六、实验注意事项或实验现象分析
1) 本实验中采用DOS功能调用中4CH号调用退出程序,若运行环境中并无DOS操作系统,可调整程序,以死循环方式运行或采用其他方式运行。2) 本实验中采用BIOS调用中1号调用检查键盘输入,从而判断是否继续循环,若运行环境中并无BIOS系统,可调整程序,以其他方式进行循环。
七、思考题1、 LED走马灯花样(点亮花样)实验。利用8位开关,控制LED产生8种走马灯花样。例如,将1号开关合上时,8个LED彩灯从两端向中间依次点亮;2号开关合上时,彩灯从中间向两端依次点亮等等。0号开关闭合时时,LED彩灯熄灭。实现方法,先设置LED点亮花样的8组数据,再利用8位开关进行调用,并通过接口送到LED。2、 根据程序列出实验中8255的各个端口的地址,如果8255CS的改接译码信号04B0H,其它信号不变,那么对应的端口地址又是多少?
实验五 步进电机实验步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
一、实验目的1、掌握步进电机基本工作原理。2、掌握软件延时的控制方法。3、掌握过程的定义和调用方法。4、掌握利用8255A控制步进电机正反转、快慢转的程序设计方法和硬件电路的连接方法。
二、实验原理1、 步进电机是一种感应电机,它的工作原理是利用电子电路,将直流电变成分时供电的,多相时序控制电流,用这种电流为步进电机供电,步进电机才能正常工作。通常电机的转子为永磁体,当电流流过定子绕组时,定子绕组产生一矢量磁场。该磁场会带动转子旋转一角度,使得转子的一对磁场方向与定子的磁场方向一致。当定子的矢量磁场旋转一个角度。转子也随着该磁场转一个角度。每输入一个电脉冲,电动机转动一个角度前进一步。它输出的角位移与输入的脉冲数成正比、转速与脉冲
频率成正比。改变绕组通电的顺序,电机就会反转。所以可用控制脉冲数量、频率及电动机各相绕组的通电顺序来控制步进电机的转动。2、 结构: 电机转子均匀分布着很多小齿,定子齿有三个励磁绕阻,其几何轴线依次分别与转子齿轴线错开。 0、1/3て、2/3,(相邻两转子齿轴线间的距离为齿距以て表示),即A与齿1相对齐,B与齿2向右错开1/3て,C与齿3向右错开2/3て,A'与齿5相对齐,(A'就是A,齿5就是齿1)下面是定转子的展开图:て图5-1 定子转子展开图
3、 旋转: 如A相通电,B,C相不通电时,由于磁场作用,齿1与A对齐,(转子不受任何力以下均同)。 如B相通电,A,C相不通电时,齿2应与B对齐,此时转子向右移过1/3て,此时齿3与C偏移为1/3て,齿4与A偏移(て-1/3て)=2/3て。如C相通电,A,B相不通电,齿3应与C对齐,此时转子又向右移过1/3て,此时齿4与A偏移为1/3て对齐。 如A相通电,B,C相不通电,齿4与A对齐,转子又向右移过1/3て 这样经过A、B、C、A分别通电状态,齿4(即齿1前一齿)移到A相,电机转子向右转过一个齿距,如果不断地按A,B,C,A??通电,电机就每步(每脉冲)1/3て,向右旋转。如按A,C,B,A??通电,电机就反转。由此可见:电机的位置和速度由导电次数(脉冲数)和频率成一一对应关系。而方向由导电顺序决定。不过,出于对力矩、平稳、噪音及减少角度等方面考虑。往往采用A-AB-B-BC-C-CA-A这种导电状态,这样将原来每步1/3て改变为1/6て。甚至于通过二相电流不同的组合,使其1/3て变为1/12て,1/24て,这就是电机细分驱动
的基本理论依据。不难推出:电机定子上有m相励磁绕阻,其轴线分别与转子齿轴线偏移1/m,2/m??(m-1)/m,1。并且导电按一定的相序电机就能正反转被控制――这是旋转的物理条件。只要符合这一条件我们理论上可以制造任何相的步进电机,出于成本等多方面考虑,市场上一般以二、三、四、五相为多。
图5-2 二相步进电机示意图4、 步进电机的静态指标术语1) 相数:产生不同对极N、S磁场的激磁线圈对数。常用m表示。拍数:完成一个磁场周期性变化所需脉冲数或导电状态用n表示,或指电机转过一个齿距角所需脉冲数,以四相电机为例,有四相四拍运行方式即AB-BC-CD-DA-AB,四相八拍运行方式即A-AB-B-BC-C-CD-D-DA-A2) 步距角:对应一个脉冲信号,电机转子转过的角位移用θ表示。θ=360度/(转子齿数*运行拍数),以常规二、四相,转子齿为50齿电机为例。四拍运行时步距角为θ=360度/(50*4)=1.8度
(俗称整步),八拍运行时步距角为θ=360度/(50*8)=0.9度(俗称半步)。3) 定位转矩:电机在不通电状态下,电机转子自身的锁定力矩(由磁场齿形的谐波以及机械误差造成的)4) 静转矩:电机在额定静态电作用下,电机不作旋转运动时,电机转轴的锁定力矩。此力矩是衡量电机体积(几何尺寸)的标准,与驱动电压及驱动电源等无关。虽然静转矩与电磁激磁安匝数成正比,与定齿转子间的气隙有关,但过分采用减小气隙,增加激磁安匝来提高静力矩是不可取的,这样会造成电机的发热及机械噪音。5、 动态指标及术语:1) 步距角精度: 步进电机每转过一个步距角的实际值与理论值的误差。用百分比表示:误差/步距角*100%。不同运行拍数其值不同,四拍运行时应在5%之内,八拍运行时应在15%以内。2) 失步: 电机运转时运转的步数,不等于理论上的步数。称之为失步。3) 失调角: 转子齿轴线偏移定子齿轴线的角度,电机运转必存在失调角,由失调角产生的误差,采用细分驱动是不能解决的。4) 最大空载起动频率: 电机在某种驱动形式、电压及额定电流下,在不加负载的情况下,能够直接起动的最大频率。5) 最大空载的运行频率: 电机在某种驱动形式,电压及额定电流下,电机不带负载的最高转速频率。6) 运行矩频特性: 电机在某种测试条件下测得运行中输出力矩与频率关系的曲线称为运行矩频特性,这是电机诸多动态曲线中最重要的,也是电机选择的根本依据。电机一旦选定,电机的静力矩确定,而动态力矩却不然,电机的动态力矩取决于电机运行时的平均电流(而非静态电流),平均电流越大,电机输出力矩越大,即电机的频率特性越硬。要使平均电流大,尽可能提高驱动电压,使采用小电感大电流的电机。
7) 电机的共振点:步进电机均有固定的共振区域,二、四相感应子式的共振区一般在180-250pps之间(步距角1.8度)或在400pps左右(步距角为0.9度),电机驱动电压越高,电机电流越大,负载越轻,电机体积越小,则共振区向上偏移,反之亦然,为使电机输出电矩大,不失步和整个系统的噪音降低,一般工作点均应偏移共振区较多。8) 电机正反转控制: 当电机绕组通电时序为AB-BC-CD-DA(四相四拍)时为正转,通电时序为DA-CD-BC-AB(相四拍)为反转。
三、实验仪器或实验条件IBM-PC兼容计算机,微机原理实验套件。四、实验内容与实验步骤1、 步进电机基本实验实验。编写程序,使8255的A口为输出,C口为输入,检测开关或按钮状态,从而控制电机的启动与停止。本实验使8255端口A工作在方式0并作为输出口,端口C工作在方式0并作为输入口。用开关或按钮接入端口C的某一个引脚,查询端口C该引脚的状态,由不同的状态决定端口A的是否输出数据。参考程序流程如图5-3所示。
图5-3 步进电机控制流程图
2、 正反转实验。编写程序,接入两个开关或按钮,一个控制启动停止,另一个控制步进电机正转或反转。本实验使8255端口A工作在方式0并作为输出口,端口C工作在方式0并作为输入口。用开关或按钮接入端口C的两个引脚,启动后每走一步,均查询两个引脚状态,一个决定是否退出,另一个决定该取哪一个相序表的数据,从而控制正反转。参考实验程序流程如图5-4所示。
图5-4步进电机正反转控制流程图五、实验程序;*------------------------------------------------------* ;*
StepM.asm(步进电机控制接口实验)
步进电机控制程序 Source File
Copyright (c) 2012 by LHF
* ;*------------------------------------------------------*code segmentassume
cs:codeorg 100hstart:jmp beginpsta1 db B,B,B,B;相序表1
dx,4A6H初始化8255Amov
dx,4A4H查K1按下?(PC1=0 )
al,02未按下,等待jnz
si,offset psta1设相序表指针mov
cx,8设8拍循环次数lop:
dx,4A4H查K8按下?(PC0=0 ?)
al,01h psta2 db b,b,b,相序
quit 已按下,退出mov
al,[si]未按下,送相序代码到A口
dx,4A0Hout
di,030hdelay1:mov
bx,02延时delay:
相序表指针+1;循环次数-1LOOP
未到8次,继续jmp
reloa已到8次,重新赋值 quit:JMP
endsend start六、实验注意事项或实验现象分析1、 本实验中采用查询方式输入端口A数据,每步进一次便查询一次,查询方式效率很低,如已掌握中断概念,可调整程序,以中断方式控制正反转方式。2、 本实验中为便于理解,正反转控制分别编写了两段程序,但此方式代码效率低,可采用其他效率更高的方式控制,例如,每按一次按钮2,将CF求反,然后根据CF的状态,选择不同的相序表。
七、思考题
1、 若需同时实现快慢转控制,程序应如何修改?2、 若需实现调速控制,即加入两个按钮,其中一个每按一次,步进电机转速减慢一次,另一个每按一次,步进电机加速一次,程序又应该如何修改?
实验六 音乐发生器实验蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。电磁式蜂鸣器:电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。给蜂鸣器不同频率的方波信号就可以产生不同的音调。控制方波的持续时间长度就可以控制音长。动圈式扬声器也是常见的发声元件。它由三部分组成:①振动系统,包括锥形纸盆、音圈和定心支片等;②磁路系统,包括永久磁铁、导磁板和场心柱等;③辅助系统,包括盆架、接线板、压边和防尘盖等。当处于磁场中的音圈有音频电流通过时,就产生随音频电流变化的磁场,这一磁场和永久磁铁的磁场发生相互作用,使音圈沿着轴向振动,由于扬声器结构---简单、低音丰满、音质柔和、频带宽,但效率较低。根据法拉第定律,当载流导体通过磁场时,会受到一个电动力,其方向符合弗来明左手定则,力与电流、磁场方向互相垂直,受力大小与电流、导线长度、磁通密度成正比。当音圈输入交变音频电流时,音圈受到一个交变推动力产生交变运动,带动纸盆振动,反复推动空气而发声。intel8253是NMOS工艺制成的可编程计数器/定时器,有几种芯片型号,外形引脚及功能都是兼容的,只是工作的最高计数速率有所差异,例如MHz),MHz)8253内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同。每个计数器的输入和输出都决定于设置在控制寄存器中的控制
字,互相之间工作完全独立。每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。执行部件实际上是一个16位的减法计数器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通过程序设置的。输出锁存器的值是通过程序设置的。输出锁存器OL用来锁存计数执行部件CE的内容,从而使CPU可以对此进行读操作。顺便提一下,CR、CE和OL都是16位寄存器,但是也可以作8位寄存器来用。
一、实验目的1、掌握动圈式扬声器的基本工作原理。2、掌握8253芯片的的编程控制方法。3、掌握利用8255A控制8253的方法。4、掌握利用8253控制蜂鸣器或动圈式扬声器的程序设计方法和硬件电路的连接方法。
二、实验原理8253具有3个独立的计数通道,采用减1计数方式。在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。当计数脉冲是已知周期的时钟信号时,计数就成为定时。1、 8253内部结构8253芯片有24条引脚,封装在双列直插式陶瓷管壳内。1) 数据总线缓冲器数据总线缓冲器与系统总线连接,8位双向,与CPU交换信息的通道。这是8253与CPU之间的数据接口,它由8位双向三态缓冲存储器构成,是CPU与8253之间交换信息的必经之路。如图6-1所示。
内部数据总线GATE0 CLK1 GATE1 OUT1CLK2 GATE2 OUT2图6-1 8253内部结构
2) 读/写控制读/写控制分别连接系统的IOR和IOW, 由CPU控制着访问8253的内部通道。接收CPU送入的读/写控制信号, 并完成对芯片内部各功能部件的控制功能, 因此, 它实际上是8253芯片内部的控制器。A1A0:端口选择信号,由CPU输入。8253内部有3个独立的通道,加上控制字寄存器,构成8253芯片的4个端口,CPU可对3个通道进行读/写操作3对控制字寄存器进行写操作。 这4个端口地址由最低2位地址码A1A0来选择。如表6-1所示。表6-1
8253输入信号组合的功能表
3) 通道选择CS――片选信号,由CPU输入,低电平有效,通常由端口地址的高位地址译码形成。RD、WR――读/写控制命令,由CPU输入,低电平有效。RD有效时,CPU读取由A1A0所选定的通道内计数器的内容。WR有效时,CPU将计数值写入各个通道的计数器中,或者是将方式控制字写入控制字寄存器中。4) 计数通道0~2每个计数通道内含1个16位的初值寄存器、减1计数器和1个16位的(输出)锁存器。8253内部包含3个功能完全相同的通道,每个通道内部设有一个16位计数器,可进行二进制或十进制(BCD码)计数。采用二进制计数时,写入的初值范围为0000H~FFFFH,最大计数值是0000H,代表65536。 采用BCD码计数时,写入的初值范围为,最大计数值是0000,代表10000。与此计数器相对应,每个通道内设有一个16位计数值锁存器。必要时可用来锁存计数值。当某通道用作计数器时,应将要求计数的次数预置到该通道的计数器中、被计数的事件应以脉冲方式从CLK端输入,每输入一个计数脉冲,计数器内容减“1”,待计数值计到“0”。OUT端将有输出。表示计数次数到。当某个通道用作定时器时。 由CLK输入一定频率的时钟脉冲。根据要求定时的时间长短确定所需的计数值。并预置到计数器中,每输入一个时钟脉冲,计数器内容减“1”, 待计数值计到“0”。OUT将有输出,表示定时时间到。允许从CLK输入的时钟频在1~2MHz范围内。因此,任一通道作计数器用或作定时器用,其内部操作完全相同,区别仅在于前者是由计数脉冲进行减“1”计数。 而后者是内时钟脉冲进行减“1”计数。作计数器时,要求计数的次数可直接作为计数器的初值预置到减“1”计数器中。作定时器时,计数器的初值即定时系数应根据要求定时的时间进行如下运算才能得到:定时系数=需要定时的时间/时钟脉冲周期
①设置通道:向方式控制字寄存器端口写入方式选择控制字,用于确定要设置的通道及工作方式;②计数/定时:向通道写入计数值,启动计数操作;③读取当前的计数值:向指定通道读取当前计数器值时,8253将计数器值存入锁存器,从锁存器向外提供当前的计数器值,计数器则继续作计数操作。④计数到:当计数器减1为0时,通过引脚OUTi向外输出“到”的脉冲信号。计数初值输入存放在初值寄存器中,计数开始或重装入时被复制到计数器中。锁存器在非锁存状态,其值随计数器的变化而变化;一旦锁存了计数器的当前值,直到锁存器值被读取后才能解除锁存状态。5) 方式选择控制字在8253的初始化编程中,由CPU向8253的控制字寄存器写入一个控制字来规定8253的工作方式。如图6-2所示
图6-2 8253的控制字2、 8253的通道工作方式8253中各通道可有6种可供选择的工作方式, 以完成定时、计数或脉冲发生器等多种功能。8253的各种工作方式如下:1) 方式0:计数结束则中断工作方式0被称为计数结束中断方式,它的定时波形如图6-3所示。当任一通道被定义为工作方式0时,OUTi输出为低电平;若门控信号GATE
为高电平,当CPU利用输出指令向该通道写入计数值WR#有效时,OUTi仍保持低电平,然后计数器开始减“1”计数,直到计数值为“0”,此刻OUTi将输出由低电平向高电平跳变,可用它向CPU发出中断请求,OUTi端输出的高电平一直维持到下次再写入计数值为止。
8253工作方式0在工作方式0情况下,门控信号GATE用来控制减“1”计数操作是否进行。当GATE=1时,允许减“1”计数;GATE=0时,禁止减“1”计数;计数值将保持GATE有效时的数值不变,待GATE重新有效后,减“1”计数继续进行。如图6-4所示。
8253工作方式0的GATE控制显然,利用工作方式0既可完成计数功能, 也可完成定时功能。当用作计数器时,应将要求计数的次数预置到计数器中,将要求计数的事件以脉冲方式从CLKi端输入, 由它对计数器进行减“1”计数,直到计数值为0,此刻OUTi输出正跳变, 表示计数次数到。当用作定时器时,应把根据要求定时的时间和CLKi的周期计算出定时系数,预置到计数器中。从CLKi,输入的应是一定频率的时钟脉冲,由它对计数器进行减“1”计数, 定时时间从写入计数值开始,到计数值计到“0”为止,这时OUTi
输出正跳变,表示定时时间到。有两点需要说明,任一通道工作在方式0情况下, 计数器初值一次有效,经过一次计数或定时后如果需要继续完成计数或定时功能,必须重新写入计数器的初值。2) 方式1:单脉冲发生器工作方式1被称作可编程单脉冲发生器,其定义波形如图6-5。进入这种工作方式, CPU装入计数值n后OUTi输出高电平, 不管此时的GATE输入是高电平还是低电平, 都不开始减“1”计数,必须等到GATE由低电平向高电平跳变形成一个上升沿后,计数过程才会开始。与此同时,OUTi输出由高电平向低电平跳变,形成了输出单脉冲的前沿,待计数值计到“0”,OUTi输出由低电平向高电平跳变,形成输出单脉冲的后沿,因此,由方式l所能输出单脉冲的宽度为CLKi周期的n倍。
8253工作方式1
如果在减“1”计数过程中, GATE由高电平跳变为低电乎,这并不影响计数过程,仍继续计数;但若重新遇到GATE的上升沿,则从初值开始重新计数,其效果会使输出的单脉冲加宽。如图6-6所示。图6-6
8253工作方式1的GATE控制
这种工作方式下,计数值也是一次有效,每输入一次计数值,只产生一个负极性单脉冲。3) 方式2:速率波发生器工作方式2被称作速率波发生器,其定时波形如图6-7所示。进入这种工作方式, OUTi输出高电平,装入计数值n后如果GATE为高电平,则立即开始计数,OUTi保持为高电平不变; 待计数值减到“1”和“0”之间, OUTi将输出宽度为一个CLKi周期的负脉冲,计数值为“0”时,自动重新装入计数初值n,实现循环计数,OUTi将输出一定频率的负脉冲序列, 其脉冲宽度固定为一个CLKi周期, 重复周期为CLKi周期的n倍。 CW=14WRCLKGATE=1OUT3213213LSB=3图6-7
8253工作方式2如果在减“1”计数过程中,GATE变为无效(输入0电平),则暂停减“1”计数,待GATE恢复有效后,从初值n开始重新计数。这样会改变输出脉冲的速率。如图6-8所示。CW=14WRCLKGATELSB=3OUT3223213图6-8
8253工作方式2的GATE控制如果在操作过程中要求改变输出脉冲的速率,CPU可在任何时候,重新写人新的计数值, 它不会影响正在进行的减“1”计数过程,而是
从下一个计数操作用期开始按新的计数值改变输出脉冲的速率。4) 方式3:方波发生器工作方式3被称作方波发生器,其定时波型如图6-9所示。任一通道工作在方式3, 只在计数值n为偶数,则可输出重复周期为n、占空比为1:1的方波。
8253工作方式3初值为偶数进入工作方式3,OUTi输出低电平, 装入计数值后,OUTi立即跳变为高电平。如果当GATE为高电平, 则立即开始减“1”计数,OUTi保持为高电平,若n为偶数,则当计数值减到n/2时,OUTi跳变为低电平,一直保持到计数值为“0”,系统才自动重新置入计数值n,实现循环计数。这时OUTi端输出的周期为n×CLKi周期,占空比为1:1的方波序列; 若n为奇数, 则OUTi端输出周期为n×CLKi周期,占空比为((n+1)/2)/((n-1)/2)的近似方波序列。如图6-10所示。
CW=16WRLSB=5
8253工作方式3初值为奇数如果在操作过程中, GATE变为无效,则暂停减“1”计数过程,直到GATE再次有效,重新从初值n开始减“l”计数。计数过程中写入新的计数值将在半周期结束时装入计数器。
如果要求改变输出方波的速率, 则CPU可在任何时候重新装入新的计数初值n,并从下一个计数操作周期开始改变输出方波的速率。5) 方式4:软件触发方式计数工作方式4被称作软件触发方式,其定时波形如图6-11所示。进入工作方式4,OUTi输出高电平。 装入计数值n后, 如果GATE为高电平,则立即开始减“1”计数,直到计数值减到“0”为止,OUTi输出宽度为一个CLKi周期的负脉冲。由软件装入的计数值只有一次有效,如果要继续操作, 必须重新置入计数初值n。如果在操作的过程中,GATE变为无效,则停止减“1”计数, 到GATE再次有效时,重新从初值开始减“1”计数。 CW=18WRCLKGATE=1OUT3210FFFEFDLSB=3图6-11
8253工作方式4显然,利用这种工作方式可以完成定时功能,定时时间从装入计数值n开始,则OUTi输出负脉冲(表示定时时间到),其定时时间=n×CLK周期。 这种工作方式也可完成计数功能,它要求计数的事件以脉冲的方式从CLKi输入,将计数次数作为计数初值装入后,由CLKi端输入的计数脉冲进行减“1”计数,直到计数值为“0”,由OUTt端输出负脉冲(表示计数次数到)。 当然也可利用OUTj向CFU发出中断请求。 因此工作方式4与工作方式0很相似,只是方式0在OUTi端输出正阶跃信号、方式4在OUTi端输出负脉冲信号。若在计数过程中,改变计数值,则按新的计数值重新开始计数。如图6-12所示。
CW=18WRCLKGATE=1OUTLSB=3LSB=2321210FF图6-12
8253工作方式4计数过程中改变计数值6) 方式5:硬件触发方式计数工作方式5被称为硬件触发方式,其定时波形如图6-13所示。进入工作方式5, OUTi输出高电平, 硬件触发信号由GATE端引入。 因此,开始时GATE应输入为0, 装入计数初值n后,减“1”计数并不工作,一定要等到硬件触发信号由GATE端引入一个正阶跃信号,减“1”计数才会开始,待计数值计到“0”, OUTi将输出负脉冲,其宽度固定为一个CLKi周期,表示定时时间到或计数次数到。 CW=1AWRCLKGATEOUT321FF3LSB=3图6-13
8253工作方式5这种工作方式下,当计数值计到“0”后, 系统将自动重新装入计数值n,但并不开始计数, 一定要等到由GATE端引入的正跳沿,才会开始进行减“1”计数, 因此这是一种完全由GATE端引入的触发信号控制下的计数或定时功能。如果由CLKi输入的是一定频率的时钟脉冲,那么可完成定时功能,定时时间从GATE上升沿开始,到OUTi端输出负脉冲结束。如果从CLKi端输入的是要求计数的事件,则可完成计数功能,计数过程从GATE上升沿开始,到OUTi输出负脉冲结束。GATE可由外部电路或控制现场产生,故硬件触发方式由此而得名。
如果需要改变计数初值, CPU可在任何时候用输出指令装入新的计数初值m,它将不影响正在进行的操作过程, 而是到下一个计数操作周期才会按新的计数值进行操作。若在计数过程中改变计数值,只要没有GATE信号触发,不影响计数过程。有新的GATE信号触发则按新的计数值开始计数。 CW=1AWRCLKGATEOUT323210FFLSB=3
8253工作方式5的GATE控制从上述各工作方式可看出,GATE作为各通道的门控信号,对于各种不同的工作方式,它所起的作用各不相同。在8253的应用中,必须正确使用GATE信号,才能保证各通道的正常操作。7) 读取计数器的当前值⑴直接读计数器:输出锁存器在非锁存状态会跟随计数器计数的变化而变化,直接读计数器是从锁存器得到计数器的当前值。但由于计数器处于工作状态,读出值不一定能稳定。⑵先锁存再读取:①通过方式选择控制字对指定通道(SC1、SC0)的计数值锁入锁存器(RL1RL0=00), 锁存器一旦锁存了当前计数值,就不再随计数器变化直到被读取。②读计数器通道(有锁存器)。三、实验仪器或实验条件IBM-PC兼容计算机,微机原理实验套件。四、实验内容与实验步骤1、 音乐发生器实验。编写程序,使8253的某一个输出端OUTi输出指定周期,指定时间的方波信号,从而控制扬声器发出不同频率的声音。
本实验由8255端口C的引脚PC6控制8253计数器2的门控端,PC与OUT2通过一个与门接入无源扬声器的一个输入端,故PC0、PC6均可控制关闭扬声器。参考程序流程如图6-15所示。
主程序流程图
(a)主程序(b)延时子程序 图6-15 音乐ASM程序流程图
2、 音乐发生器扩展实验。修改程序,输入任意自定义曲谱,使扬声器能发出不同的乐曲。五、实验程序;*-------------------------------------*/;*
Music.asm(音乐发生器接口实验)
音乐发生器程序Source File
Copyright (c) 2001 by LUOHAIFENG*/;*
*/;*------------------------------------*/assume cs:code, ds:code,ss:stackstack segment at 0280hdw 200 dup(?)stack endscode segment publicorg 100hstart: jmp程序开始freq dw 2 dup(262,294,330,262) ;&两只老虎&乐曲中,音符的频率(音阶)
dw 2 dup(330,349,392)其中,0频率表示结尾dw 2 dup(392,440,392,349,330,262)dw 2 dup(294,196,262),0time dw 10 dup(8),16,8,8,16 &两只老虎&乐曲中,音符的延时(节拍)
dw 2 dup(4,4,4,4,8,8)其中4,8,16表示延时的次数dw 2 dup(8,8,16)old_seg dw ?old_off dw ?begin: mov al,908255初始化mov dx,4b6hout dx,almov al,0关闭8253的T2计数器(8255的PC6=0)mov dx,4b6hout dx,alNEXT:mov dx,4b0hin
al,1jz nextmov al,0b68253mov dx,4a6hout dx,alresing:mov si,mov bp,pp:
mov di,[si]cmp di,0je
end_mov dx,0mov ax,71b0750KHzdiv dimov dx,4a4out dx,mov al,ahout dx,mov dx,4b6mov al,01hout dx,almov al,0out dx,almov bx,ds:[bp]call delay2mov dx,4b6 初始化 设置频率指针→si 设置延时指针→bp 取1个音符的频率→di 检测是否是乐曲结尾 若是,则结束演凑 计算音符的频率所对应的8253计数初值向8253装入计数初值 先装低字节 再装高字节 打开喇叭(8255的PC0=1) 打开8253的T2(PC6=1),开始发声 取1个音符的延时次数→bx 调用延时子程 关闭8253的T2(PC6=0)
mov al,0chout dx,almov al,00关闭喇叭(PC0=0)
out dx,aladd si,2取下1 个音符的频率add bp,2取下1 个音符的延时次数
end_sing:mov dx, 4b6mov al, 0chout dx, almov al, 00out dx, aljmp beginexit: hltdelay2 procpush
bx,[bp]dl4:
cx,800hdl3:
cxretdelay2 endp
继续 关闭8253的T2 关闭二极管 延时子程2
code endsend start
程序结束六、实验注意事项或实验现象分析1、 本实验中采用自定义中断服务程序控制延时,可适当修改中断系统获取更合适的延时。若不使用中断,可用简单的循环实现延时。2、 本实验使用8255A控制8253的门控端,此为软件控制,门控端也可接一开关,由硬件进行控制,此时,程序中应做相应调整。3、 本实验中8253的CLK信号为1.19318MHZ,若提供信号与此信号频率不同,程序中计算部分应做适当调整。
七、思考题1、 若需由8253的OUT0输出音频信号,程序应如何修改,硬件连线又该如何修改?2、 实验中的频率值是否就是计数器的计数初值?如何由频率值得出计数初值?
实验七8259中断控制器实验中断是一种发生了一个外部的事件时调用相应的处理程序的过程。
按照TI(Texas Instruments德州仪器)官方文档的解释:中断是由于软件的或硬件的信号,使得CPU放弃当前的任务,转而去执行另一段子程序。可见中断是一种可以人为参与(软件)或者硬件自动完成的,使CPU发生的一种程序跳转。通常,程序中断是由外部设备通过CPU的终端请求线向CPU提出的。在一定条件下,CPU响应中断后,暂停源程序的执行,转至为外设服务的中断处理程序。中断处理程序可以按照所要完成的任务编写与过程类似的程序段。在程序段最后执行一条中断返回指令返回主程序,继续按原顺序执行。引起中断的原因或者说发出中断请求的来源叫做中断源。根据中断源的不同,可以把中断分为硬件中断和软件中断两大类,而硬件中断又可以分为外部中断和内部中断 两类。外部中断一般是指由计算机外设发出的中断请求,如:键盘中断、打印机中断、定时器中断等。外部中断是可以屏蔽的中断,也就是说,利用中断控制器可以屏蔽这些外部设备 的中断请求。内部中断是指因硬件出错(如突然掉电、奇偶校验错等)或运算出错(除数为零、运算 溢出、单步中断等)所引起的中断。内部中断是不可屏蔽的中断。软件中断其实并不是真正的中断,它们只是可被调用执行的一般程序。例如:ROM BIOS中的各种外部设备管理中断服务程序(键盘管理中断、显示器管理中断、打印机管理 中断等,)以及DOS的系统功能调用(INT 21H)等都是软件中断。 CPU为了处理并发的中断请求,规定了中断的优先权,中断优先权由高到低的顺序是: (1)除法错、溢出中断、软件中断 (2)不可屏蔽中断 (3)可屏蔽中断 (4)单步中断。一、实验目的
1、掌握中断的概念。2、掌握中断系统的组成,包括软件中断和硬件中断。3、掌握中断向量的设置,中断服务程序入口地址的获取,中断服务程序的编写。4、掌握8259A中断控制器的初始化,并能设置不同优先级的中断。
二、实验原理1、 8259A的主要功能功能:在有多个中断源的系统中,接受外部的中断请求,并进行判断,选中当前优先级最高的中断请求,再将此请求送到CPU的INTR端;当CPU响应中断并进入中断子程序的处理过程后,中断控制器仍负责对外部中断请求的管理。2、 8259A如何处理中断请求一个外部中断请求信号通过中断请求线IRQ,传输到IMR(中断屏蔽寄存器),IMR根据所设定的中断屏蔽字(OCW1),决定是将其丢弃还是接受。如果可以接受,则8259A将IRR(中断请求暂存寄存器)中代表此IRQ的位置位,以表示此IRQ有中断请求信号,并同时向CPU的INTR(中断请求)管脚发送一个信号。但CPU这时可能正在执行一条指令,因此CPU不会立即响应。而当这CPU正忙着执行某条指令时,还有可能有其余的IRQ线送来中断请求,这些请求都会接受IMR的挑选。如果没有被屏蔽,那么这些请求也会被放到IRR中,也即IRR中代表它们的IRQ的相应位会被置1。当CPU执行完一条指令时后,会检查一下INTR管脚是否有信号。如果发现有信号,就会转到中断服务,此时,CPU会立即向8259A芯片的INTA(中断应答)管脚发送一个信号。当芯片收到此信号后,判优部件开始工作,它在IRR中,挑选优先级最高的中断,将中断请求送到ISR(中断服务寄存器),也即将ISR中代表此IRQ的位置位,并将IRR中相应位置零,表明此中断正在接受CPU的处理。同时,将它的编号写入中断向量寄存器IVR的低三位(IVR正是由ICW2所指定的,不知你是否还记得ICW2的最低三位在指定时都是0,而在这里,它们被利用了!)这时,CPU还会送来第
二个INTA信号,当收到此信号后,芯片将IVR中的内容,也就是此中断的中断号送上通向CPU的数据线。这个内容看起来仿佛十分复杂,但如果我们用一个很简单的比喻来解释就好理解了。CPU就相当于一个公司的老总,而8259A芯片就相当于这个老总的秘书。现在有很多人想见老总,但老总正在打电话,于是交由秘书先行接待。每个想见老总的人都需要把自己的名片交给秘书,秘书首先看看名片,有没有老总明确表示不愿见到的人,如果没有就把它放到一个盒子里面。这时老总的电话还没打完,但不停的有人递上名片求见老总,秘书就把符合要求的名片全放在盒子里了。老总打完电话了,探出头来问秘书:有人想见我吗?这时,秘书就从盒子里挑选一个级别最高的,并把他的名片交给老总。这里需要理解的是中断屏蔽与优先级判定并不是一回事,如果被屏蔽了,那么参加判定的机会也都没了。在默认情况下,IRQ0的优先级最高,IRQ7最低。当然我们可以更改这个设定,这样在下面有详细描述。当芯片把中断号送上通往CPU的数据线后,就会检测ICW4中的EOI是否被置位。如果EOI被置位表示需要自动清除中断请求信号,则芯片会自动将ISR中的相应位清零。如果EOI没有被置位,则需要中断处理程序向芯片发送EOI消息,芯片收到EOI消息后才会将ISR中的相应位清零。这里的机关存在于这样一个地方。优先权判定是存在于8259A芯片中的,假如CPU正在处理IRQ1线来的中断,这时ISR中IRQ1所对应的位是置1的。这时来了一个IRQ2的中断请求,8259A会将其同ISR中的位进行比较,发现比它高的IRQ1所对应的位被置位,于是8259A会很遗憾的告诉IRQ2:你先在IRR中等等。而如果这时来的是IRQ0,芯片会马上让其进入ISR,即将ISR中的IRQ0所对应的位置位,并向CPU发送中断请求。这时由于IRQ1还在被CPU处理,所以ISR中IRQ1的位也还是被置位的,但由于IRQ0的优先级高,所以IRQ0的位也会被置位,并向CPU发送新的中断请求。此时ISR中IRQ0与IRQ1的位都是被置位的,这种情况在多重中断时常常发生,非常正常。
如果EOI被设为自动的,那么ISR中的位总是被清零的(在EOI被置位的情况下,8259A只要向CPU发送了中断号就会将ISR中的相应位清零),也就是如果有中断来,芯片就会马上再向CPU发出中断请求,即使CPU正在处理IRQ0的中断,CPU并不知道谁的优先级高,它只会简单的响应8259A送来的中断,因此,这种情况下低优先级的中断就可能会中断高优先级的中断服务程序。所以在PC中,我们总是将EOI位清零,而在中断服务程序结束的时候才发送EOI消息。3、 8259A的内部结构8259A的内部结构图如图7-1所示。它有8根中断请求输入线IR7~IR0,内部有8个主要的功能块。其中3个寄存器是可编程的,即用户可用程序访问它们,这3个寄存器都是8位的。D7~D0
A0CAS0 CSA1 CAS2 图7-1 8259A内部结构1) 中断请求寄存器IRR(Interrupt Request Register)IRR用来存放中断请求。某位为l表示相应的中断请求线IR有请求,为O表示该引脚无请求。将IRR某位置1的方式称为触发方式。有两种触发方式:边沿触发和电平触发,前者是利用IR线由低到高的跳变,后者要求IR线为高电平并保持到第一个中断响应信号INTA结束之前。在电平触发方式下,要求中断请求得到响
应之后请求输入端必须及时撤除高电平。如果在CPU进入中断处理过程并且开放中断前未去掉高电平信号,则可能引起不应该发生的第二次中断。相比之下,边沿触发方式用起来要方便一些。触发方式由初始化命令字ICWl来设置。2) 中断屏蔽寄存器IMR(Interrupt Mask Register)IMR存放着8个屏蔽位信息,某位为0表示对应的中断源未被屏蔽,为1表示对应的中断源被屏蔽。被屏蔽的中断源的请求不能参与中断判优,也就不可能向CPU提出中断请求。3) 正在服务寄存器ISR(In-Service Register)ISR存放着当前正在服务的所有中断级。某位为1表示相应的中断正在服务中。ISR中可能有多位为l,这表明当前出现了中断嵌套。4) 控制逻辑控制逻辑含一组初始化命令寄存器和一组操作命令寄存器,按预置的工作方式(初始化命令字)或程序员的干预(操作命令字)来管理8259A的全部工作。5) 优先权判决电路优先权判决电路对保存在IRR中的各种中断请求以及IMR的内容进行判断,确定出最高优先级,如果当前没有正在服务的中断或者它比当前正在服务的级别高,则在CPU中断响应期间把它选通至ISR。简言之,在中断响应期间,优先权判决电路找出应该服务的中断,将ISR相应位置位。6) 级联缓冲器/比较器级联是指使多片8259A连接起来,管理更多级中断。该功能部件在级联方式的主片一从片结构中用来存放和比较系统中各从片标识(ID)。7) 数据总线缓冲器数据总线缓冲器是8259A与系统数据总线的接口,它是双向三态缓冲器。所有CPU对8259A编程时的控制命令字都是通过它写入
的;且8259A的状态信息以及中断响应期间的中断向量也是通过它提供给CPU。作为一个能与系统数据总线直接相连的芯片,都应设置数据总线缓冲器。在该芯片被选中时提供与系统数据总线的传送通道;在该芯片未被选中时使芯片内部的数据线与系统数据总线“脱开”(呈现高阻抗),这样不影响CPU与其他芯片的联系。8) 读/写控制逻辑该电路接收CPU的读/写命令,完成命令字的写入和状态字的读出等操作。4、 8259A的引脚8259A是28个引脚的双列直插式芯片,其引脚如图7-2 所示。
图7-2 8259A 引脚图D7~D0为数据线,双向,三态,可与系统数据总线直接相连。IR7~IR0为中断请求输入线,接收来自外界的中断请求。INT为送至CPU的中断请求输出线。高电平有效。INTA为中断响应输入线,接收CPU在中断响应周期中发来的中断响应信号。RD读命令线,低电平有效。有效时,使信息由8259A读至CPU。
WR是写命令线,低电平有效。有效时,控制信息由CPU写入8259A。
A0是片内端口选择输入线。对8259A内部寄存器的操作需要通过端口进行。一片8259A占用两个端口地址,用A0来选择。一般情况下,A0直接接系统地址总线的最低位A0,在8086系统中,一般接系统地址总线的A1。
CAS2~CASO为级联信号线,当8259A作为主片时,这三条线是输出线;作为从片时,则为输入线。SP/EN为从片编程/允许缓冲器信号,这是一个多功能引脚。这里涉及到缓冲器方式的概念,在此先作一些解释。8259A的数据线引脚设计是可与系统数据总线直接相连,但有时有一片或多片8259A希望有自己的局部数据总线,这时需要在8259A的数据线与系统数据总线之间加一个缓冲器,因为数据传送是双向的,所以,该缓冲器也应是双向的。在缓冲器方式下,SE/EN为输出信号,用作允许缓冲器接收和发送的控制信号(EN)。当不处于缓冲方式时,它为输入信号,用来指明该8259A是主片(SP=1)还是从片(SP=0)。在一个系统中可将多片(最多9片)8259A级联,但只能有一片是主片,其他都为从片。所谓主片,是INT线接至CPU的INTR端的8259A。从片的INT线都接到主片的IR输入端。D0~D7INTAINTRCAS0~CAS2=010图7-3是8259A级联(非缓冲器方式)的示意图。5、 8259A的工作方式IR0IR7
8259A对中断的管理涉及多个方面,因此它有多种工作方式,如中断嵌套方式、优先级管理方式、中断结束方式、中断屏蔽方式等。由于8259A是一个可编程的芯片,所以这些方式都可以通过编程方法设置,用户可根据自己的需要选择相应的工作方式。1) 编程角度看8259A用户(程序员)在使用一个可编程接口或控制芯片时,一般是从编程角度看,对8259A也是如此,它有10个可编程寄存器,可分成两组。一组是在内部结构框图(图5.8)中明显表示的,它们是中断请求寄存器IRR、中断屏蔽寄存器IMR和正在服务寄存器ISR。这3个寄存器的作用前面已经介绍了。另一组在内部结构框图中没有被表示,属于内部寄存器,它们是4个初始化命令寄存器和3个操作命令寄存器。初始化命令寄存器用来存放初始化命令字,4个初始化命令字分别为ICW1~ICW4(Initial Command Word)。在对8259A进行初始化编程时,要根据需要写入相应的初始化命令字。一旦初始化完成,8259A就按照这些初始化命令字来管理外部的8级中断。在8259A工作期间,可通过操作命令字对它进行必要的干预,使其改变某方面的工作方式。操作命令字有三种:OCWl~OCW3(Operation Commancd word),它们被存放在操作命令寄存器中。2) 中断嵌套方式8259A的嵌套方式有两种:一般全嵌套方式和特殊全嵌套方式。a、一般全嵌套方式一般全嵌套方式是8259A最常用和最基本的一种嵌套方式,如果对8259A初始化后没有用操作命令字设置为其他嵌套方式,则8259A就自动按一般全嵌套方式工作。在这种方式下,在为某中断服务期间禁止同级和较低级的中断请求,而较高级的中断请求仍可经INT端向CPU提出。b、特殊全嵌套方式特殊全嵌套方式与一般全嵌套方式的区别在于:在为某中断服务期间不禁止同级的中断请求,即允许同级的和较高级的中断进入。这种方式所要解决的问题是:在多片级联的情况下,当某从片的中断得到响应、进入中断服务期间,来自该从片的更高级的中断请求仍能为主8259A所识别(对主8259A
来说,同一从8259A的8个中断都是一个级别),并向CPU提出请求。所以,在级联的情况下,主片应设置为特殊全嵌套方式,从片一般设置为一般全嵌套方式。3) 优先级方式a、固定优先级这是大多数应用中采用的优先级方式。在该方式下,各中断源的优先级是固定的:IR0最高,IRl次之,然后依次降低级别。b、优先级自动循环方式在该方式下,某一中断源的请求被响应后,其优先级自动降为最低,其他中断源的优先级也随之改变。例如,IR4提出请求并得到响应后,自动降为最低优先级,IR5变为最高优先级,优先级从高向低依次为:IR5、IR6、IR7、IR0、IRl、IR2、IR3、1R14。8259A设置为优先级自动循环方式后,最初的优先级是:IR0最高、IR7最低,其他依次类推。该方式适用于系统中多个中断源的优先级相等(难以分清它们的级别)的情况,使得各中断源的请求得到响应的机会均等。c、优先级特殊循环方式该方式是通过编程(OCW2)人为地指定某个中断源的优先级降为最低,其他中断源的级别也随之改变。4) 中断结束方式当某一个中断请求被CPU响应后,该中断在ISR中的相应位被置位,表示CPU正在为该中断服务。在中断服务结束、中断返回之前的适当时刻应将该ISR位复位,否则8259A就不能响应该中断源新的请求。这项工作称为中断结束处理。中断结束的方式分自动结束和非自动结束两种,而非自动结束方式又有一般中断结束和特殊中断结束之分。a、自动中断结束方式该方式需要通过ICW4设置。设置成该方式后,对每一个中断,在中断响应时(对,是在第二个中断响应周期的INTA的后沿时),由8259A自动将ISR对应位清除。当然,为该中断的服务并不因此而受到影响。
这种方式是为没有经验的程序员忘了在中断服务程序中给出中断结束命令而设立的。b、一般中断结束方式这种方式配合一般全嵌套方式使用。采用这种方式反映在程序中是在具体的中断服务已做完、返回之前向8259A发一个一般中断结束命令,8259A就将ISR中当前已置l的最高位复位。因为在一般全嵌套方式下,ISR中当前已置1的级别最高的位对应了最后一次被响应和被处理的中断,也就是当前正在处理的中断,所以,将该位复位相当于结束了当前正在处理的中断。
c、特殊中断结束方式在特殊全嵌套方式下,不能确定ISR中哪一位是最后置位的,即哪一个中断请求是最后被响应的,这时就要采用特殊中断结束方式。采用这种方式反映在程序中就是要发一条特殊中断结束命令,这个命令中指出了要清除哪个ISR位。特殊中断结束方式可理解成人为地将ISR中某一位复位。而一般中断结束方式要复位的ISR位是8259A自动寻找的。在此,对级联系统中的从片的中断结束处理作一些说明。在将主片设置成特殊全嵌套方式的情况下,从片可能出现中断嵌套,在从片的某中断服务结束时,必须用软件检查被服务的中断是否为该从片惟一的中断。为此,先向从8259A发一个一般的中断结束命令,清除已完成服务的ISR中优先级最高的位,然后再读出ISR的内容,检查它是否为0,如果为0,则向主8259A发一个中断结束命令,清除(主8259A)ISR中与该从片相对应的位(这一步不能忘记);如果从8259A的ISR的内容不为0,则不向主8259A发中断结束命令,该中断返回后,CPU继续为该从片被打断的中断服务。5) 屏蔽中断源的方式8259A有两种屏蔽中断源方式:普通屏蔽方式和特殊屏蔽方式。前者用得较多,后者仅用于一些特殊应用场合。a、普通屏蔽方式在普通屏蔽方式下,将中断屏蔽寄存器IMR的某位置1,则它所对应的中断就被屏蔽,从而使这个中断请求不能由8259A送到CPU。如果IMR某位置0,则允许该中断起作用。
b、特殊屏蔽方式有些应用场合,希望一个中断服务程序能动态改变系统的优先权结构。例如,在执行中断服务程序的某一部分时,希望禁止较低级的中断请求,而在执行中断服务程序的另一部分时,又能够开放比本身级别低的中断。
为达到这样的目的,自然会想到使IMR中本身对应的位置l,使本级中断受到屏蔽,从而为开放较低的中断提供可能。但是,这样做有一个问题:每当一个中断请求被响应时,就会使ISR对应位置1,只要没有发出中断结束命令,8259A就会禁止所有比它低的中断。所以,尽管当前处理的较高级的中断被屏蔽,但由于ISR位未被复位,较低级的中断请求在发出中断结束命令之前仍然不会得到响应。引进了特殊屏蔽方式。设置了此方式后,使IMR某位置l,就会同时使ISR的相应位复位。这样,可真正开放级别较低的中断。当然未被屏蔽的更高级中断也可以得到响应。
三、实验仪器或实验条件IBM-PC兼容计算机,微机原理实验套件。四、实验内容与实验步骤用中断控制器8259A来管理硬件中断,发光二极管显示输出结果。1) 设计出8259A与8086接口对应硬件电路,并完成相应的连接。2) 设定单级中断管理,任一外部中断源可通过8259A中断原程序,观察边沿触发和电平触发不同的效果。3) 设定两级或更多级中断,高级中断可以中断低级中断,当高级中断结束时,程序返回被中断的程序,继续执行。
五、实验程序assume cs:code,ss:stack,ds:code
segment at 0200hdw
50h dup(?)stack
endscode segment publicorg 100hstart: jmp
begindata0 db 7fh,3fh,1fh,0fh,07h,03h,01h,00h data1 db 0,
dw 0time1 dw 0,0begin: mov
ax,stackmov
ax,0100hmov
ds,axstart1:climov
dx,04a0hmov
ax,1bhout dx,axmov dx,04a2hmov ax,80hout dx,axmov ax,01out dx,axmov ax,0hout dx,axmov ax,0mov es,axmov si,200初始化中断向量表OCW1, 开放所有中断ICW4ICW2 中断类型80ICW1, ICW4 NEEDED
mov ax,offset hint0mov es:[si],axadd si,2mov es:[si],100hadd si,2mov ax,offset hint1mov es:[si],axadd si,2mov es:[si],100hnew:mov ax,55hmov dx,04b0hout dx,axcall delay2stijmp new
procclipush
data1 ;LED的点亮代码next:mov al,[si]mov dx,04b0从74LS273的A口输出LED点亮代码 out
dx,alcallinc
没发生中断,则等待
si,offset data1+8jne
nextmovmovoutclipoppopstiirethint0
procclipush
axstimovnext1:movmovoutcall
sicmpjnemovmovout
ax,20h dx,04a0h dx,设置ocw2操作命令字,清除中断服务标志 ax si si,offset
data0LED的点亮代码 al,[si]
dx,04b0从74LS273的A口输出LED点亮代码 dx,al
si,offset data0+8 next1 ax,20h dx,04a0h dx,设置ocw2操作命令字,清除中断服务标志
sistiirethint1
delay2 proc
cx,04fhdl4: mov
bx,02ffhdl3:
cxretdelay2 endp
code endsend start
延时子程2 六、实验注意事项或实验现象分析
1) 填写本程序中两个中断请求信号所对应的中断向量码及其在中断向量表中的地址。
中断向量 2) 若将8259A的中断请求输入端分别改为IN4、IN6,则上表中的数据又分别为多少?
七、思考题1) 中断类型码如何获取?2) 中断服务程序的入口地址如何获取?3) 若要通过8259A实现一个外部中断,需要完成哪些工作?
实验八 数模转换实验数模转换就是将离散的数字量转换为连接变化的模拟量,实现该功能的电路或器件称为数模转换电路,通常称为D/A转换器或DAC(Digital Analog Converter)。最原始的DAC电路由以下几部分构成:参考电压源、求和运算放大器、权产生电路网络、寄存器和时钟基准产生电路,寄存器的作用是将输入的数字信号寄存在其输出端,当其进行转换时输入的电压变化不会引其输出的不稳定。时钟基

我要回帖

更多关于 8255控制步进电机 的文章

 

随机推荐