收藏 分销(赏)

微机原理与接口综合设计.doc

上传人:二*** 文档编号:4746445 上传时间:2024-10-11 格式:DOC 页数:26 大小:163.04KB 下载积分:5 金币
下载 相关 举报
微机原理与接口综合设计.doc_第1页
第1页 / 共26页
本文档共26页,全文阅读请下载到手机保存,查看更方便
资源描述
学 生 实 训 设 计 报 告 设计题目: 时钟控制系统设计 院 别: 专 业: 班 级: 姓 名: 学 号: 指导教师: 教务处制 七月二日 课程名称:微机原理与接口综合设计 课程代码: 09402707 实训周数: 1 学 分: 1 实训单位: 机电学院 实训地点: 机电学院 实训时间: 2023-6-28至2023-7-2 设计说明书 目录 一.课程设计任务与规定 3 二.课程设计过程 3 1.中断程序设计 3 2. 8259A中断屏蔽与恢复 4 3. 8253初始化程序设计 5 4.中断服务程序的编写 5 5. DOS功能调用 5 6.时间调整模块设计 6 7.硬件电路图 6 三.软件思想 7 1.主流程图 8 2.时间显示流程图 9 3.日期显示流程图 10 附录A:源程序及程序注释 11 参考文献 17 四.心得体会总结 18 时钟控制系统设计 一、课程设计任务与规定 1.设计一个时钟,可以显示时、分、秒、日、月、年,并可以调整。 2.运用PC系列微机现有的硬件和软件资源,编写程序,使在CRT屏幕上显示XXXX年XX月:XX日:XX(时):XX(分):XX(秒),并且每秒钟更新一次显示。 3.编写程序,运用主机内的8253/8254-2的计数器0产生10ms对称方波输出,该输出送至IRQ0使8259A每10ms产生一次中断,100次中断后秒量+1,然后调全年、月、日、时、分、秒并显示在屏幕上。程序从按下任意键开始显示数据区中存放的时间值,运营中按下空格键则停止运营返回DOS。 4.调整程序,直至运营正常。 二、课程设计过程 1. 中断程序设计 (1)IBM PC/XT系统板上使用了一片8253-5,其地址40~43H,其中0通道工作于方式3,每55ms向中断控制器8259A的IRQ端发一次中断请求。此定期中断的用途之一是系统报时。现在借用原有电路,重新设立定期器、编写服务程序来做硬件时钟实验,为此程序开始应一方面保护原系统的08H中断的中断向量(中断服务程序入口地址),以便程序退出时恢复原系统的设立。保护原系统08H中断矢量可用DOS 35H功能调用读出加以适当保存,也可以用以下指令,将中断矢量压入堆栈保存。 CLI ;关中断 CLD ;DF=0 MOV AX,0000H MOV DS,AX ;DS:SI指向08中断矢量在中断矢量表中的位置 MOV SI,0020H LODSW MOV BX,AX ;BX=原中断服务入口偏移地址 LODSW :AX=原中断服务程序入口地址 PUSH AX ;压栈保护 PUSH BX (2)将现中断服务程序入口地址填入中断矢量表中除了可用DOS 25H功能调用外也可使用以下指令。 MOV AX,0000H MOV ES,AX MOV DI,0020H;ES:DI指向08H中断矢量在中断矢量表中的存放位置 MOV AX,OFFSET TIMER STOSW;写入中断服务程序的偏移地址 MOV AX,SEG TIMER STOSW ;写入中断服务程序的段地址 2. 8259A中断屏蔽与恢复 借用系统用的08H中断还应注意保护原8259A的中断屏蔽寄存器内容。读或写8259A的奇地址可以得到和改写IMR寄存器的内容。执行 IN AL,21H PUSH AX 两条指令可以得到IMR的值并压入堆栈保护。执行 MOV AL,0FCH OUT 21H,AL 两条指令又可以重写IMR,使之只开放时钟和键盘的中断。 在程序退出前又应恢复IMR值。用 POP AX OUT 21H,AL 指令可以将原压堆栈保护的IMR值重新写入中断屏蔽寄存器。 3. 8253初始化程序设计 MOV AL,00110110B ;8253初始化,0通道,工作方式3,采用二进制 OUT 43H,AL MOV AX,11932 ;初值=11932 OUT 40H,AL MOV AL,AH OUT 40H,AL 4.中断服务程序的编写 中断服务程序重要完毕秒,分,时的调整并重写入数据区中。中断服务程序中所用寄存器如与主程序有冲突,应当在中断服务程序一开始用压栈指令保护主程序中寄存器内容,中断返回前用出栈指令恢复此内容。注意,先压入的寄存器应当后弹出。最后在中断返回前还应向8259A发中断结束命令,使8259A内的在服务寄存器中的相应位复位; MOV AL,20H OUT 20H,AL 5.有关字符输入的DOS功能调用 直接控制台输入输出(DOS6号功能调用) 调用格式;MOV DL,X MOV AH,06H INT 21H 功能;从控制台(或键盘)输入或向屏幕输出字符。 本设计在程序运营过程中检测是否按下空格键或C键,按下空格键则停止运营返回DOS,按下C键则转到调整时间程序。不按键则显示时间。 FOREVER: MOV DL,0FFH ;有键按下么? MOV AH,06H INT 21H JZ DISP ;无按键下则转显示DISP CMP AL,20H ;是有空格键么? JZ EXIT ;是则退出 CMP AL,'C' ;是有C键么? JZ TET ;是则调整时间 DISP: LEA DX,YEAR ;不是则显示时间 MOV AH,09H INT 21H 6. 时间调整模块设计 当程序运营过程中,若有C键按下,则关掉中断,设立好日期时间后打开中断 TET:CLI ;调整日期时间 PUSH AX MOV AH,01H INT 21H MOV YEAR,AL …………… POP AX STI JMP FOREVER 7. 硬件电路图 三、软件思想 主流程图和中断服务程序流程图 1. 程序主流程图 2. 时间显示流程图 3. 日期显示流程图 N 等待键按下 取原8H中断矢量并压栈保护 建立数据段的可寻址性 装载现中断服务程序 8253初始化长生10MS的方波,10MS中断一次 保护原8259A 的IMR(中断屏蔽寄存器)内容 重写IMR,只开放时钟和键盘中断 检测键盘(DOS6号调用) 开中断 有键按下? 秒值变否? 是空格键? 显示时间值(DOS9号调用) 取秒值 关中断 恢复IMR 重新设立8253.,55MS中断一次 回复原中断矢量 关中断 返回DOS Y N Y 3.1主流程图 Y N N N N N N Y Y Y Y Y Y 发EOI中断结束命令 中断返回 COUNT-1送COUNT 秒量加一 COUNT=0? 秒十位加一,秒个位清0 秒个位小于=9? 秒十位小于6? 分个位加一,秒十位清0 分个位小于9? 分个位清0,分十位加1 分十位小于6? 取时个位,时十位均清0,日个位加1 时+1 取时个位,时十位,组合成BCD码 时小于24? 时个位,时十位转换位ASCII码,放回数据区,结束中断 3.2 时间显示流程图 分十位清0 N N N N 发EOI中断结束命令 中断返回 日个位小于9? 日十位加一,日个位清0 日十位小于3? 日十位清0 取月个位,月十位,组合成BCD码 日个位+1 月小于12? 月+1 取月个位1,月十位清0 年个位加1 年个位小于9? 年个位清0,年十位加1 月个位,月十位转换位ASCII码,放回数据区 Y Y Y Y 3.3 日期显示流程图 附录A:源程序及程序注释 PAGE 60,78 STACK SEGMENT DB 256 DUP(0) STACK ENDS DATA SEGMENT COUNT DB 100 YEAR DB '2' YEAR1 DB '0' YEAR2 DB '0' YEAR3 DB '9' DB '-' MH DB '1' MONTH DB '2' DB '-' TEND DB '2' DATE DB '9' DB '-' TENH DB '2' HOUR DB '3:' TENM DB '5' MINUTE DB '9:' TENS DB '5' SECOND DB '5',0DH,'$' DATA ENDS CODE SEGMENT START PROC FAR ASSUME CS:CODE,DS:DATA MOV AX,0 PUSH AX MOV AH,01H ;等待按键按下 INT 21H CLI CLD MOV AX,0 MOV DS,AX MOV SI,0020H ;DS:SI指向08H中断向量 LODSW ;取08中断入口的偏移地址 MOV BX,AX LODSW ;取08中断入口段地址 PUSH AX ;压栈保护 PUSH BX MOV AX,DATA ;建立数据段的可寻址性 MOV DS,AX MOV AX,0000H MOV ES,AX MOV DI,0020H ;ES:DS指向08中断向量存放地址 MOV AX,OFFSET TIMER STOSW ;写入偏移地址 MOV AX,CS STOSW ;写入段地址 MOV AL,00110110B ;8253初始化,0通道,3方式,HEX OUT 43H,AL MOV AX,11932 ; 将11932赋给AX初值 OUT 40H,AL MOV AL,AH OUT 40H,AL IN AL,21H ;读8259的中段屏蔽寄存器IMR PUSH AX MOV AL,0FCH OUT 21H,AL ;写IMR,只准许定期器和键盘中断 STI FOREVER: MOV DL,0FFH ;有按下键没有? MOV AH,06H INT 21H JZ DISP ;无按键情况下则转显示DISP CMP AL,20H ;是有空格键吗? JZ EXIT ;是则退出 CMP AL,'C' ;是有C键吗? JZ TET ;是则调整时间 DISP: LEA DX,YEAR ;不是则显示时间 MOV AH,09H INT 21H MOV AL,SECOND ;取秒单位值 WAITCHA: CMP AL,SECOND ;改变否? JZ WAITCHA ;没改变则等待 JMP FOREVER ;改变则跳到FOREVER TET:CLI ;调整日期时间 PUSH AX MOV AH,01H INT 21H MOV YEAR,AL MOV AH,01H INT 21H MOV YEAR1,AL MOV AH,01H INT 21H MOV YEAR2,AL MOV AH,01H INT 21H MOV YEAR3,AL MOV AH,01H INT 21H MOV MH,AL MOV AH,01H INT 21H MOV MONTH,AL MOV AH,01H INT 21H MOV TEND,AL MOV AH,01H INT 21H MOV DATE,AL MOV AH,01H INT 21H MOV TENH,AL MOV AH,01H INT 21H MOV HOUR,AL MOV AH,01H INT 21H MOV TENM,AL MOV AH,01H INT 21H MOV MINUTE,AL POP AX STI JMP FOREVER EXIT: CLI ;有空格键按下则退出 CLD POP AX OUT 21H,AL ;恢复IMR MOV AL,36H ;8253初始化,55MS OUT 43H,AL MOV AL,0 OUT 40H,AL OUT 40H,AL MOV AX,0 ;恢复08H中断的中断向量 MOV ES,AX MOV DI,4*8 POP AX STOSW POP AX STOSW STI RET TIMER PROC FAR ;中断服务程序 PUSH AX DEC COUNT JNZ L2 ;不到1秒L2 MOV COUNT,100 ;到1秒,重置COUNT,并修改时间 INC SECOND CMP SECOND,'9' JLE TIMEXT MOV SECOND,'0' INC TENS CMP TENS,'6' JL TIMEXT MOV TENS,'0' INC MINUTE CMP MINUTE,'9' JLE TIMEXT MOV MINUTE,'0' INC TENM CMP TENM,'6' JL TIMEXT MOV TENM,'0' JMP L3 L2: JMP TIMEXT L3: MOV AL,HOUR :取时个位,时十位,组合成BCD码 AND AL,0FH MOV Ah,TENH AND AH,0FH MOV CL,4 ROL AH,CL OR AL,AH ADD AL,1 DAA CMP AL,24 JL L1 MOV TENH,'0' MOV HOUR,'0' INC DATE CMP DATE,'9' JLE TIMEXT MOV DATE,'0' INC TEND CMP TEND,'3' JL TIMEXT MOV TEND,'0' MOV DATE,'1' MOV AL,MONTH ; 取月个位,月十位,组合成BCD码 AND AL,0FH MOV AH,MH AND AH,0FH MOV CL,4 ROL AH,CL OR AL,AH ADD AL,1 DAA CMP AL,13 JL L4 MOV MH,'0' MOV MONTH,'1' INC YEAR3 CMP YEAR3,'9' JLE TIMEXT MOV YEAR3,'0' INC YEAR2 CMP YEAR2,'9' JLE TIMEXT MOV YEAR2,'0' JMP TIMEXT L4: MOV AH,AL ;月个位,月十位转换位ASCII码,放回数据区 AND AL,0FH OR AL,30H MOV MONTH,AL MOV CL,4 ROR AH,CL AND AH,0FH OR AH,30H MOV MH,AH JMP TIMEXT L1: MOV AH,AL ; 时个位,时十位转换位ASCII码,放回数据区 AND AL,0FH OR AL,30H MOV HOUR,AL MOV CL,4 ROR AH,CL AND AH,0FH OR AH,30H MOV TENH,AH TIMEXT:MOV AL,20H OUT 20H,AL POP AX IRET TIMER ENDP START ENDP CODE ENDS END START 参考文献 1. 《微型计算机系统原理及应用》 清华大学出版社 杨素行等编著1995年 2. 《微机原理与接口技术》学习指导与实验 电子工业出版社 蔡征宇 缪均达 编 1998.8 3. 《新编微机原理与接口技术》天津大学出版社 耿仁义主编 2023年9月 4. 《微机原理、汇编语言与接口技术》中国水利水电出版社 唐瑞庭等编著 2023年 5. 《微型计算机原理与接口技术》北京大学出版社 刘彦文等编著2023年 6. 《微型计算机原理与接口技术》清华大学出版社 冯博琴 吴宇 主编 2023.8 7. 《微机原理与接口技术》(第2版)清华大学出版社 冯博琴 吴宁编著2023年3月 四.心得体会总结 课程设计是培养学生综合运用所学知识去发现、分析和解决实际问题的能力,同时也是锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。 这一次的微机原理课程设计历时一个星期,在这整整一个星期里,基本上也都是在忙碌中渡过,在设计过程中一开始还是挺茫然的,特别是找资料一点也不容易,当然,通过了苦苦的查找之后得出的结果肯定是苦中带着甜的,此外在正式开始过程中,我们需要考虑许多的问题,时不时都要上网查找资料,对此,我们虽然觉得麻烦,但也学到了不少的东西,同时巩固了以前所学过的知识,更涉及到自己之前忽略的知识点。先前在上课的时候,老师经常强调在写一个程序的时候,一定要事先把程序原理方框图化出来,但是我开始总觉得这样做没必要,很浪费时间。但是,但通过了这次的课程设计完全改变了我以前的那种错误的结识,以前我接触的那些程序都是很短、很基础的,或者是一个片段,但是在课程设计中要设计一个完整的程序,碰到的那些需要很多代码才干完毕的任务,画程序方框图是很有必要的。由于通过程序方框图,在做设计的过程中,我们可以很直视的明白我将要做什么,以及我们证处在哪个位置上,从而使我们有明确的目的,也让我们的工作效率有所提高,不至于设计到后面就忘掉了前面的,并且在程序测试的过程中也有助于查错。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才干真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中碰到问题,可以说得是困难重重,这毕竟第一次做的,难免会碰到过各种各样的问题,同时在设计的过程中发现了自己的局限性之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。这次课程设计在老师的指导下,同学的帮助下终于完毕了。 实训 指导 教师 评语 成绩评估: 指导教师(署名): 2023年 7月 4 日
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服