微机原理课程设计 定时器系统文档格式.docx
《微机原理课程设计 定时器系统文档格式.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计 定时器系统文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
![微机原理课程设计 定时器系统文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/11/560b178c-453d-4766-94d5-2c87f0d88f23/560b178c-453d-4766-94d5-2c87f0d88f231.gif)
周二
初步设计阶段(查文献)
对原始资料进行分析
周三
拟定初步方案
周四
硬件电路图设计,软件程序设计
周五
硬件图与软件程序联机调试并验证
16
周一
撰写设计报告
周二
提交设计报告
指导教师签字:
一、概述
微机原理和接口技术是一门实践性强的学科,其中很多的原量、规则、现象等仅仅靠学习教科书是无法完全掌握的,必须通过实践才能比较直观和深刻的理解。
在进行课程设计的过程中,可以让学生体验分析问题、提出解决方案、通过编程等手段实现解决方案、不断调试最终达到设计要求的全过程,从而帮助学生系统地掌握微机原理的接口技术的相关知识,达到将知识融会贯通的目的。
主要特点:
微结微机原理和接口技术教材的重点内容编写,涵盖课程的主要知识点,具有通用性,适合开设计课程的不同学校采用。
对课程设计的原理有比较详细的描述,课程设计的步骤循序渐进,便于学生独立完成课程设计。
实例丰富,既有小型的适合一个学生独立完成的项目,也有比较大型的适合团队完成的项目,不仅可以培养学生的动手能力,也有助于培养学生的团队意识。
对于抽象的概念和工作原理,老师要精心设计课堂教学,使晦涩难懂的知识变得浅显易懂课堂教学是使学生获得知识最有效最快捷的方式。
在教学过程中,真正做到“以学生为本”,提高课堂效率,我的体会是精心的进行合理、有效的课堂教学设计。
合理、有效的课堂教学设计可以在最短的时间得到最好的教学效果。
比如,本课程的教学安排中,先讲cpu内部寄存器后讲存储器分段,讲cpu内部寄存器时就要涉及到存储器分段,这样一来知识点前后交叉多,学生听不明白,老师也会觉得讲不清楚。
换种思路,重新调整一下次序,先介绍存储器分段,讲清楚四种段、段地址和偏移地址以及物理地址的形成,再介绍cpu内部寄存器,4个段寄存器分别存放4个段的段地址,地址指针寄存器和指令指针寄存器用来存放偏移地址,这样讲符合学生接受知识的规律,用时较少而且教学效果好。
二、报告内容
2.1课设题目:
利用8253芯片设计定时器
2.2课设目的、内容:
1 进一步熟悉8086芯片的知识。
2 学习和掌握扩展接口8255、8253芯片的结构及编程方法。
3 培养学生独立分析的解决的工作能力及实际工程设计的基本技能。
4 培养和锻炼在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力。
5 通过课程设计,要求熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,得到微机开发应用方面的初步训练。
6 同时并了解综合问题的程序设计掌握实时处理程序的编制和调试方法,掌握一般的设计步骤和流程,使我们以后搞设计时逻辑更加清晰。
2.3设计思路及原因:
Intel系列的8253是常用的可编程定时/计数器,它通过编程来控制电路的定时值及定时的范围,功能强,使用灵活。
在计算机系统中,定时中断、定时检测、定时扫描等等都是用可编程定时器来完成定时控制的。
1)8253的功能:
1.延时终端;
2.可编程频率发生器;
3.事件计数器;
4.倍频器;
5.实时时钟;
6.数字单稳;
7.复杂的电机控制器;
2)8253的引线:
CLK:
输入时钟周期不能小于380ns.
GATE:
门控信号输入引脚,这是控制计数器工作的一个外部信号。
当GATE引脚为低(无效)时,通常都是禁止计数器工作;
只有当GATE为高时,才允许计数器工作。
OUT:
输出引脚。
当计数到“0”时,OUT引线上必然有输出,输出信号的波形取决于工作方式。
8253的编程:
微处理器写入方式控制字,设定工作方式;
微处理器写入预置寄存器,设定计数初值。
3)8253内部结构:
图18253内部结构图
Intel8253—PIT,即可编程间隔计数器有3个独立的16位计数器每个计数器都可以按照二进制或者BCD码进行计数,计数速率可达2MHz,每个计数器有6种工作方式,可编程设置和改变。
Intel8253可以广泛应用在方波发生器、分频器、实时时钟、事件计数等方面。
8253内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同。
每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。
每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。
每个计数还有一个16位的计数初值寄存器CR、一个计器内部有一个8位的控制寄存器,数执行部件CE和一个输出锁存器OL。
执行部件实际上是一个16位的减法计数器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通过程序设置的。
输出锁存器的值是通过程序设置的。
输出锁存器OL用来锁存计数执行部件CE的内容,从而使CPU可以对此进行读操作。
顺便提一下,CR、CE和OL都是16位寄存器,但是也可以作8位寄存器来用。
SC1,SC0——计数通道选择位。
由于8253内部3个计数通道各有一个8位的控制字寄存器,而这三个控制字寄存器共享同一个控制端口地址,所以控制字中设置SC1,SC0
这两位来确定CPU当前发出的控制字是写入哪个计数通道的控制字寄存器中。
具体选择如图
.
RL1,RL0——读/写操作方式位。
这两位用来确定对选中的计数通道进行读/写操作方式。
当CPU对8253进行16位读/写操作时,可以只读/写高8位或只读/写低8位,也可以读/写16位。
读/写16位时,先读/写低8位,后读/写高8位,具体是哪种操作方式由RL1,RL0这两位的编码确定。
由于8253的数据线只有(D7~D0),一次只能传送8位数据,故传送16位数据时,要分两次进行。
M2,M1,M0——工作方式择位。
8253的每个计数通道有6种不同的工作方式,即方式0到方式5,M2M1M0这三类就是用来选择具体的工作方式,具体选择如图。
BCD——计数方式选择位。
8253的每个计数通道有两种计数方式按二进制计数或按十进制(BCD码)计数。
BCD位用来具体确定采用哪种计数方式。
例:
若选择计数器1,工作在方式3,计数初值为588H(2个字节)采用二进制计数,则其控制字为:
01110110=76H,设控制口地址为043H,则将该控制字写入控制字寄存器的指令如下:
MOVAL076H
OUT043H,AL
8253有以下几种工作方式:
方式0:
计数结束则中断
方式1:
单脉冲发生器即可编程单脉冲发生器
方式2:
速率波发生器
方式3:
方波发生器
方式4:
软件触发方式计数
方式5:
硬件触发方式计数
计数结束中断,GATE保持高电平,输出NxT的低电平,后变为高电平并保持不变。
计数中如果GATE突然变成低电平,然后变回高电平,则延长低电平输出时间,延长时间为GATE变为低电平的时间。
可编程单个触发信号。
与方式0一样,只是GATE是上升沿触发。
计数期间如果GATE变为低电平再变高电平,则重新开始计数。
速率发生器。
GATE保持高电平。
输出(N-1)xT的高电平,之后输出一个T的低电平。
方波发生器。
如果N为偶数,输出占空比50%,周期NxT的方波,如果N为计数,输出的方波中高电平为(N+1)/2xT,低电平为(N-1)/2xT。
软件触发选通。
如同方式2,只是只计数一个周期,即输出(N-1)xT的高电平和1xT的低电平之后保持高电平不变。
硬件触发选通。
如同方式4,GATE改为上升沿触发。
CLK输入的是你想要处理的信号,8253一般用作分频,即把你想处理的信号频率降低,CLK输入的信号的周期T影响输出信号的周期。
如上述。
GATE信号用于触发计数器工作。
软件触发类可以设置GATE恒为高电平。
硬件触发时可以将GATE接在别的信号上,当该控制信号发出一个上升沿,则开始计数。
8253用作计数器时,一般工作在方式0!
使用8253,要先通过程序对其进行初始化。
在初始化时主要掌握以下三点:
(1)对各个计数器分别进行初始化,顺序无要求。
(2)对某个计数器进行初始化:
先写控制字,再送计数初值;
如送16位初值,则需先送低8位,再送高8位。
(3)预置的初值需经过一个输入脉冲(CLK)的上升沿和下降沿之后才可装入计数器(此前读计数器,并非所设置的值)。
8253的初始化编程:
8253的初始化编程内容:
一是首先向控制寄存器写入控制字,以选定计数通道(三个中之一),规定该计数的工作方式和计数方式以及计数初值的长度和装入顺序(初值写入方式);
二是向已选定的计数器按控制字的要求写入计数初值。
4)8253初始化的要求:
(1)对每个计数器,控制字必须写在计数值之前。
这是因为计数器的读/写格式由它的控制字决定。
(2)计数值必须按控制字所规定的格式写入。
若控制字规定只写8位,只需写入一次(8位)计数值即可(规定写低8位则高8位自动置0,规定写高8位则低8位自动置0);
规定写16位时必须写两次,先写低8位,后写高8位。
当初值为0时,也要分两写入,因在二进制计数时,“0”表示65336,在BCD码计数时“0”表示10000=104。
(3)对所有方式计数器都可以在计数过程中或计数结束后改变计数值,重写计数值也必须遵守控制字所规定的格式,并且不会改变当前计数器的工作方式。
(4)计数值不能直接写到减1计数器中,而只能写入计数值寄存器中,并由写操作之后的下一个CLK脉冲将计数值寄存器的内容装入减1计数器开始计数。
(5)初始化编程必须明确各个计数器的控制字和计数值不是写到同一个地址单元。
各个计数器的控制字各自独立确定,但它们都写入同一个端口地址(控制字寄存器)中,各个计数器的计数值则根据需要独立确定并写入各自计数器的相应寄存器中。
控制字写入8253时,所有的控制逻辑电路立即复位,输出端OUT进入初态
计数器初值写入以后,要经过一个时钟周期,计数器才开始工作,下降沿使计数器进行减1计数,计数器容纳的最大初值为“0”时钟脉冲的上升沿采样门控信号
2.4电路设计及功能说明,硬件电路图(包括接口芯片简介):
按图6虚线连接电路,将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。
2.5软件部分的程序流程图
8253控制寄存器地址283H
计数器0地址280H
计数器1地址281H
CLK0连接时钟1MHZ
2.6汇编源程序清单,对关键的语句要给出简洁的注释:
CODESEGMENT;
段定义开始(CODE段)
ASSUMECS:
CODE;
规定CODE为代码段
START:
MOVAL,10H;
设置控制字00010000(计数器0,方式0,写两个字节,二进制计数)
MOVDX,283H;
把控制寄存器地址放在DX寄存器中
OUTDX,AL;
将AL的值送入DX端口
MOVDX,280H;
把计数器0地址放在DX寄存器中
MOVAL,0FH;
将0FH存入AL寄存器
将此时AL的值送入DX端口
LP1:
INAL,DX;
从DX端口读入8位,放在AL寄存器中
CALLDISP;
调用DISP
PUSHDX;
将DX内容保存到堆栈段
MOVAH,06H;
将06H存入AH,为了下句调用21中断
MOVDL,0FFH;
将0FFH存入DL
INT21H;
调用21中断
POPDX;
将DX的内容推出栈段
JZLP1;
如果DX的内容是0,就跳转到LP1
MOVAH,4CH;
将4CH存入AH,为了下句调用21中断
DISPPROCNEAR;
定义一个名为DISP的子程序
把DX的内容保存到堆栈段中
ANDAL,0FH;
将AL寄存器的内容与0FH进行“与”运算,再把结果存入AL中
MOVDL,AL;
将AL的值送入DL寄存器
CMPDL,9;
比较DL中的值与9的大小
JLENUM;
如果DL的值小于或等于9时,则跳转到NUM
ADDDL,7;
将DL的值与7进行相加后,再送入DL中
NUM:
ADDDL,30H;
将DL的值与30H进行相加后,再送入DL中
MOVAH,02H;
将02H存入AH
调用DOS21中断
MOVDL,0DH;
结合“MOVAH,02H”就是说输出0DH
调用中断指令
MOVDL,0AH;
结合“MOVAH,02H”就是说输出0AH
RET;
子程序在功能完成后返回调用程序继续执行
DISPENDP;
子程序结束
CODEENDS;
代码段结束
ENDSTART;
程序结束
三、设计总结及体会
这次微机原理课程设计历时两个星期,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
以前在上课的时候,老师经常强调在写一个程序的时候,一定要事先把程序原理方框图化出来,但是我开始总觉得这样做没必要,很浪费时间。
但是,这次课程设计完全改变了我以前的那种错误的认识,以前我接触的那些程序都是很短、很基础的,但是在课程设计中碰到的那些需要很多代码才能完成的任务,画程序方框图是很有必要的。
因为通过程序方框图,在做设计的过程中,我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,而且在程序测试的过程中也有利于查错。
上机实验由指令系统与汇编语言程序设计两部分组成。
从简单指令入手,熟悉和掌握8086的指令系统和8253的系统功能调用;
从程序基本结构入深,从给出程序和补充完整程序进行调试到自编程序上机调试通过,逐步掌握编程调
试方法。
硬件实验由常用可编程接口芯片应用(基础性实验)和多片可编程综
合应用(提高性实验)两部分组成,包括设计性为主的实验和研究探索性为主验。
通过完成可编程芯片硬件连线与芯片的初始化编程和应用程序的设计,使学生用
微机接口常用外围芯片的方法,培养学生使用常用可编程接口芯片并结合数字术
进行I/O接口设计的能力。
首先,高职教育的培养目标是培养重点面向基层的中高级工程技术人才,因此,加强实践教学,具有重要意义。
其次,本门课程的实践性和应用性非常强,对于大多学生来说,许多知识只有通过实践教学才能真正的理解,这就要求我们必须重视实践教学的作用,改进教学内容,把实践课教学放到和理论教学同等重要的位置。
高职学生综合运用知识的能力较差,所以实验基本上以验证性的实验为主,学生只需输入现成的程序,连接较少的导线,客观上为缺乏自觉性的学生提供了偷懒的机会,结果实验虽然做了,学生却没有多少收获,所以指导教师的要求往往不能得到很好的落实。
针对验证性实验许多学生完成以后不愿深入思考和理解的现象,教师根据实验情况,设计实验思考题,这些实验思考题需要仔细思考对实验程序和连接线作出修改后才能得到实验结果,从而引导学生去思考完成。
通过这样的做法,在以后的实验和实训中逐步培养学生的分析能力、综合运用知识的能力。
近些年来,学校每年要组织学生参加大学生挑战杯竞赛,竞赛的许多题目涉及到微机应用系统设计,学生通过参加竞赛的培训和参赛,能深入理解微机原理与接口技术的知识,并能将其运用到实际中去。
其次,以前对于编程工具的使用还处于一知半解的状态上,但是经过一段上机的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎么去了解每个寄存器的内容以确保程序的正确性上都有了很大程度的提高。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在赵老师的辛勤指导下,终于游逆而解。
同时,在赵老师的身上我学得到很多实用的知识,在次我表示感谢!
同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!
四、参考书目
1.微机原理与接口技术(复习与考试指导)
2.戴梅萼等.微型计算机技术及应用.北京:
清华大学出版社,2003
3.王成耀等.汇编语言程序设计.北京:
机械工业出版社,2004
微机原理与接口技术课程设计成绩评定表
姓名
耿杨飞
专业班级
机械制造设计及其自动化2012级5班
课程设计题目:
定时器的设计
课程设计记录:
成绩评定依据:
评定项目
评分成绩
1.选题合理、目的明确(10分)
2.设计方案可行性、创新性(20分)
3.设计结果(系统原理图、源程序、调试运行结果)(30分)
4.平时成绩(态度认真、遵守纪律)(10分)
5.设计报告的规范性、参考文献充分(不少于5篇)(10分)
6.答辩(20分)
总分
最终评定成绩(以优、良、中、及格、不及格评定)
指导教师签字:
年月日
2.