




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录概述 1一设计内容与要求 1 二设计思想 1 三设计所用芯片及工作原理 1 四系统连线图 3 五连线图说明 六程序流程图 5 七程序源代码 7 八设计过程中遇到的问题及解决方法 九设计心得 9电子秒表概述汇编语言程序设计是计算机各专业一门重要的基础课,是必修的核心课程之一,是操作系统和微机原理和接口技术等其它核心课程必要的先修课,而且对于训练学生掌握程序设计技术,熟悉上机操作和程序调试技术都有重要作用。因此该课程在整个教学计划中占有重要地位。本课程的目的和要求是:1、 应使学生掌握8086/8088宏汇编语言程序设计的基本方法和技巧,能够运用8086/8088宏汇编语言编写应用程序。提高学生分析问题、解决问题的能力以及实际动手能力。2、应使学生基本掌握汇编语言程序设计的基本理论,方法和技巧,正确地使用结构化、模块程序设计技术。注意培养学生良好的程序设计风格。3、应使学生比较熟练地使用调试工具DEBUG调试8086/8088汇编语言程序。注意提高学生的调试能力。4、注意与前后相关课程的关系。使学生对前导课程有进一步的理解,同时为学习后继课程打好基础。一、 设计内容与要求设计一个简单的电子秒表(按一下钮启动,再按一个停止,再按一下清零,周而复始。)最小计时单位0.01S,即可显示XX.XX(秒、百分之一秒)。设计要求如下:(1)由键盘和8255作为输入部分(2)用七段数码管或液晶显示屏来显示时间(3)由8253和8259构成计时信号,通过中断完成启动计时、停止计时和动态刷新显示。二、 设计思想电子秒表要实现的功能:用键盘中断来控制整个程序,按一下回车键启动电子秒表,再按一下暂停,按一下ESC键清零,用七段数码管显示时间。整个程序涉及到8255、8253与8259三个芯片。8253的OUT2,CLK2分别连接8259的IRQ7与PCLK,8253的GATE2连接正5伏电压,采用计数器2每隔0.01秒产生一次中断并且计数,写入以偏移地址4000H开始的4个内存单元,然后利用8255将内存单元的数据输出到七段数码管。由于键盘中断优先于8259的7号中断,所以程序只有在按一下回车键才启动电子秒表,再按一下暂停,按一下ESC键清零,如果超出了60秒,整个程序自动重新开始。三、 所用芯片工作原理8255:接口电路在CPU和I/O设备之间起着信号的变换和传输的作用。 任何接口电路与CPU之间的信息传输方式都是并行的,即CPU与接口电路之间以数据字节/字为单位传送信息。接口电路与I/O设备之间的信息传送方式,有并行和串行两种,相应的接口电路称为并行接口和串行接口。 并行接口是在多根数据线上,以数据字节/字与I/O设备交换信息。在输入过程中,输入设备把数据送给接口,并且使状态线“输入准备好”有效。接口把数据存放在“输入缓冲寄存器”中,同时使“输入回答”线有效,作为对外设的响应。外设在收到这个回答信号后,就撤消数据和“输入准备好”信号。数据到达接口中后,接口会在“状态寄存器”中设置输入准备好标志,或者向CPU发一个中断请求。CPU可用查询方式或中断方式从接口中读取数据。接口中的数据被读取后,接口会自动清除状态寄存器中的标志,且撤消对CPU的中断请求。在输出过程中,每当输出寄存器可以接收数据,接口就会将状态寄存器中“输出准备好”状态置1或向CPU发一个中断请求,CPU可用查询或中断方式向接口输出数据。当CPU输出的数据到达接口后,接口会清除“输出准备好”状态,把数据送往外设,并向外设发一个“数据输出准备好”信号。外设受到驱动后,便接收数据,并向接口电路发一个“输出回答”信号,接口收到该回答信号后,又将状态寄存器中“输出准备好”置位,以便CPU输出下一个数据。8253:对CLK信号进行“减1计数”。首先CPU把“控制字”,写入“控制寄存器”,把“计数初始值”写入“初值寄存器”,然后, 定时/计数器按控制字要求计数。计数从“计数初始值 开始,每当CLK信号出现一次,计数值减1,当计数值减为0时,从OUT端输出规定的信号(具体形式与工作模式有关)。当CLK信号出现时,计数值是否减1(即是否计数),受到“门控信号”GATE的影响,一般,仅当GATE有效时,才减1.门控信号GATE如何影响计数操作,以及输出端OUT在各种情况下输出的信号形式与定时/计数器的工作模式有关。8259:1. IR线上提出了中断请求的中断源,即出现请求,IRR中断请求寄存器(共有8位D7D0)对应于连接在IR0IR7线上的外设的中断请求,哪一根输入线有请求,哪一根输入线就置1。2. 若OCW1(IMR中断屏蔽寄存器)未使该中断请求屏蔽(对应位为0时不屏蔽),该请求被送入PR(优先权分析器)比较。否则,不送入PR比较。3. PR把新进入的请求与ISR(服务中寄存器)中正在被处理的中断进行比较。如果新进入的请求优先级较低,则8259不向CPU提出请求。如果新进入的请求优先级较高,则8259使INT引脚输出高电平,向CPU提出请求。4. 如果CPU内部的标志寄存器中的IF(中断允许标志)为0,CPU不响应该请求。若IF=1,CPU在执行完当前指令后,从CPU的INTA引脚上向8259发出两个负脉冲。5.第一个 INTA负脉冲到达8259时,8259完成以下三项工作:a.使IRR(中断请求寄存器)的锁存功能失效。这样一来,在IR7IR0上的请求信号就不会被8259接收。直到第二个INTA负脉冲到达8259时,才又使IRR的锁存功能有效。b.使ISR(服务中寄存器)中的相应位置1。c.使IRR中的相应位清0。6.第二个INTA负脉冲到达8259时,8259完成以下工作:a.将中断类型码(ICW2中的值)送到数据总线上,CPU将其保存在“内部暂存器”中。b.如果ICW4(它设定级中断联方式之特定完全嵌套方式,将在8259的工作方式中详述ICW4)中设置了中断自动结束方式,则将ISR的相应位清0。四、 系统连线图数码管 A +5V DP 7407 X4X1GATE2 OUT2 CLK2 8253 PB7-PB08255PA3PA0 8259 PCLK IRQ7GATE2 OUT28253CLK2IRQ78259PCLK8253与8259的接线图PB7 | | | | | | PB0PA0PA1PA2PA38255741s07数码管 7X4 4X3 LX2 SX1 0 78255接线图五、 连线图说明六、 程序流程图修正IMR,使IRQ中断允许写8253方式控字修改IRQ7中断矢量写8255方式控制字是否按了键盘调用键盘中断 开中断调用赋初值子程序first调用赋初值子程序改变内存4004H的值Al=13? Y N读键盘值 N YAl=27? N YIRQ7调用显示程序4004=00?? Y N调用addn程序 关中断返回Disp从端口A输出取内存单元的值指向数码缓冲区得到显示代码从端口B输出延时指向下一内存单元是否显示完?? N Y指向下一个数码管返回七、 程序源代码主程序:push ds ;保存数据段mov ax,0000mov ds,ax ;数据段清零mov ax,offset irq7 ;取中断程序入口地址add ax,2000;加装时IP2000地址 mov si,003c;填8259中断7中断矢量mov wsi,ax ;填偏移量矢量mov ax,0000;段地址CS0000Hmov si,003emov wsi,ax ;填段地址矢量pop ds;弹栈in al,21;读8259中断屏蔽字and al,7f;开8259中断7out 21,almov al,b4;8253的计数器2为方式2,采用二进制计数,先低后高写入计数值10110100out 43,al;写入方式控制字mov ax,2e9c0010 1110 1001 1100B 11932Dout 42,al;写入低字节计数值1001 1100mov al,ahout 42,al;写入高字节计数值 0010 1110mov al,81;8255的A口为方式0输出,B口为方式0输出,C口下部输入 1000 0001out 63,al;写方式控制字call first ;调用first子程序,赋计数初值begi:hlt 延时等待sti;开中断mov ah,01int 16;检测是否按了键盘jz begimov ah,00 ;读键值int 16cmp al,0d;是否按了回车jnz A1mov si,4000not si+04;偏移地址为4004的内存单元内容取反jmp begiA1:cmp al,1b;是否按了ESC键jnz A2call first;重新赋初值,相当于清零A2:jmp begi中断程序:irq7:call disp ;调用disp子程序,用来在数码管显示数据mov si,4000cmp si+04,00;判断是否按了第2次回车键je A4call addn;调用addn子程序,用来计数A4:mov al,20out 20,alcli;关中断iret;返回addn程序:addn:mov si,4000add si+03,01 ;百分之一秒加1cmp si+03,0a;判断是否大于10jz A5jmp A9A5:mov si+03,00Add si+02,01;十分之一秒加1cmp si+02,0a;判断是否大于10jz A6jmp A9A6:mov si+02,00add si+01,01;秒位加1cmp si+01,0a;判断是否大于10jz A7jmp A9A7:mov si+01,00add si,01;十秒位加1cmp si,06;判断是否大于6jz A8jmp A9A8:mov si,00;大于60:00重新开始A9: ret赋初值程序:first:mov si,4000mov al,00mov si,almov si+01,almov si+02,almov si+03,almov si+04,alret显示程序:disp:push ax;保存AXmov si,4000;指向数据缓冲区mov dl,f7;1111 0111 指向数码管mov al,dl ;al=1111 0111again:out 60,al;写端口Amov al,simov bx,4100 ;指向数码缓冲区 bx=0100 0001 0000 0000and ax,00ff ; ax=0000 0000 aladd bx,ax;得到显示代码 bx=0100 0001 almov al,bxout 61,al;写端口Bcall dally:调用延时程序dallyinc simov al,dltest al,01jz out ror al,1;指向下一个数码管mov dl,aljmp againout:pop ax;弹出AXretdally:push cx;延时程序 push axmov cx,0010t1 :mov ax,0010t2 dec axjnz t2loop t1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大二基础实验考试题及答案
- 常微分方程考试卷及答案
- 新质生产力区域经济发展
- 安全生产应急管理手册讲解
- 发展宠物行业新质生产力
- 民族知识科普课课件
- 学校消防日教育宣传活动方案(模板)
- 新质生产力赋能供应链贸易
- 华工科技新质生产力研究
- 新质生产力代表物品解析
- 2025-2030中国废弃光伏组件回收处理技术路线与经济性分析报告
- 2025水利安全员C证考试题库(含答案)
- 一级建造师-机电工程管理与实务-案例专题突破教学课件
- 全校教学质量提升会上校长讲话:把每一节课教好是我们最实在的荣耀
- 体适能教学课件培训
- 市场监督局知识培训课件
- 咖啡店服务知识培训课件
- 仓储物流部门绩效考核标准与激励方案
- 机关办公室工作课件
- 2025年民数记每章测试题及答案
- 2025年注安实务《化工安全》真题及参考答案
评论
0/150
提交评论