微机原理课程设计.docx
- 文档编号:9025608
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:11
- 大小:253.49KB
微机原理课程设计.docx
《微机原理课程设计.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计.docx(11页珍藏版)》请在冰点文库上搜索。
微机原理课程设计
《微机原理与接口技术》
课程设计
学院:
机械与电子工程学院
专业:
电子信息工程专业
班级:
10306101
学号:
1030610101
姓名:
易绍江
指导老师:
胡老师
2013年1月4日
目錄
一、课程设计任务及要求-2-
二、实验内容-2-
(一)、编程环境的熟悉-2-
1、芯片简介-2-
①、可编程并行接口接口芯片8255A-2-
②、可编程定时器/计数器8253-3-
2、演示实验指导书实验-4-
(二)、系统流程图-5-
(三)、实验代码-6-
三、实验心得体会-9-
1、课程设计任务及要求
要求
1、学会8253芯片和微机接口的原理和方法。
2、掌握8253定时器/计数器的工作方式和编程原理。
3、掌握8255A和微机接口方法。
4、掌握8255A的工作方式和编程原理。
5、熟悉编程软件及实验箱的使用。
任务
设计一个跑马灯程序,满足下列要求
1、用4个LED灯实现跑马灯
2、一个灯闪烁
3、用一个开关控制
开关闭合时:
跑马灯跑(8255控制)
开关打开时:
跑马灯灭,闪烁灯闪烁(8253分频控制)
2、实验内容
(一)、编程环境的熟悉
1、芯片简介
①、可编程并行接口接口芯片8255A
(1)8255A内部结构:
8255A芯片是一个采用NMOS工艺制造的40引脚双列直插式(DIP)封装组件。
8255A有3个8位数据端口,即A口、B口及C口,它们都可以分别作为输入口或输出口使用;A组控制与B组控制;读/写控制逻辑;数据总路线缓冲器。
(2)8255A主要的外部引脚
PA7~PA0:
A口的8条I/O线。
8条线只能同时作为输入或输出,不能分开使用,可设置成双向口,也只有A口允许这样做。
PB7~PB0:
B口的8条I/O线。
不可以设置成双向口,其它和A口一样。
PC7~PC0:
C口的8条I/O线。
不可以设置成双向口,但它可以分拆为两组。
即高4位和低4位,这两组可以任意设置为输入或输出。
除了作为独立的I/O线外,C口还经常为A口、B口服务,配合A口、B口作联络线使用。
A1、A0:
端口地址选择信号。
用于选择8255A的3个数据端口和一个控制口。
当A1A0=00时,选择端口A;为01时,选择端口B;为10,选择端口C;为11时,选择控制口。
(3)8255A工作方式
方式0:
基本的输入/输出方式。
A口、B口、C口都可以工作在些方式下。
方式1:
选通输入/输出方式(应答方式)。
A口、B口工作在此方式下。
方式2:
双向传输方式。
只有A口可以工作在此方式下。
(4)8255A方式控制字格式[2]
D7
D6、D5
D4
D3
D2
D1
D0
1
A口
A口
C口
高4位
B口
B口
C口
低4位
00方式0
01方式1
1x方式2
0输出
1输入
0输出
1输入
0方式0
1方式1
0输出
1输入
0输出
1输入
表2.48255A方式控制字格式
②、可编程定时器/计数器8253
(1)8253的内部结构[:
8253采用NMOS工艺制成,有24个引脚,所有输入、输出端均TTL电平兼容,单一电源(Vcc=+5V)供电,最高计数速率为2.6MHz。
它包括3个计数器(即计数器0、1、2)、数据总路线缓冲器、读/写逻辑以及控制寄存器等4个部分。
(2)8253的外部引脚
A1、A0:
地址输入线,用来址8253内部的4个端口,即3个计数器和1个控制字寄存器与CPU系统地址线相连。
CLK0、CLK1、CLK2:
时钟脉冲输入端,用于输入定时脉冲或计数脉冲信号。
CLK可以是系统的时钟脉冲,也可以由系统时钟分频或者其他脉冲源提供。
当用于定时时,这个脉冲必须是均匀的、连续的、周期精确的,而用于计数时,这个脉冲可以是不均匀的、断续的、周期不定的。
GATE0、GATE1、GATE3:
门控输入端,用于外部控制计数器的启动计数和停止计数的操作。
两个或两个以上计数器连用时,可用此信号同步,也可用于与外部某信号的同步。
OUT0、OUT1、OUT2:
计数输出,当计数器从初值开始完成计数操作进,OUT引脚输出相应的信号。
(3)8253的工作方式
方式0:
减1计数到0,产生中断请求信号。
方式1:
减1计数到0,产生可重复触发的单稳态负脉冲信号。
方式2:
减1计数到1,分频器(速率信号发生器)。
方式3:
减1计数到初值的1/2,方波发生器。
方式4:
减1计数到0,软件触发产生选通负脉冲信号。
方式5:
减1计数到0,硬件触发产生选通负脉冲信号。
(4)8253方式控制字格式
D7D6
D5D4
D3D2D1
D0
00选计数器0
01选计数器1
10选计数器2
00计数器锁存
01只读写低8位
10先读写高8位
11先读写低8位再读写高8位
000方式0
001方式1
X10方式2
X11方式3
100方式4
101方式5
0二进制计数
1BCD计数
2、演示实验指导书实验
根据实验指导书演示实验8255A并行口实验
(一)、8255A并行口实验
(二)
以及电子琴实验等,熟悉编程软件的装载编译,调试运行。
看懂实验指导书相关实验内容电路图,按电路图连接实验电路,学会使用实验箱。
(2)、系统流程图
YN
(3)、实验代码
根据实验要求及流程图编写实验代码。
代码如下:
CODESEGMENT
ASSUMECS:
CODE
IOCONPTEQU0FF2BH
IOBPTEQU0FF29H
IOAPTEQU0FF28H
ORG11B0H
START:
movdx,43h;8253写入方式字
moval,36h;方式字格式
outdx,al;写入方式
movax,0ffffh;计数次数,ffffh次
movdx,40h;选择计数器0
outdx,al;写入低8位
moval,ah
outdx,al;写入高8位
movdx,43h;8253写入方式字
moval,54h;方式字格式
outdx,al;写入方式
movdx,41h;选择计数器1
moval,20h;计数次数,20h次
outdx,al;写入计数次数
MOVAL,90H;8255方式字格式
MOVDX,IOCONPT;8255写入方式字
OUTDX,AL;写入方式
paoma:
movbh,11111110b;bh初始值11111110b,(0为亮灯,1为灭灯)
lp1:
movdx,IOAPT;读a口,判断是否开关发生变化
inal,dx;写入到al
andal,1h;判断最后一位是否为0
jzsansuo;是则闪烁
movdx,IOBPT;选择b口
moval,bh;将bh赋给al
outdx,al;将al写到b口,即要亮的灯
ROLal,1;循环左移,例如11111110变成11111101,则下一盏灯亮
cmpal,11011111b;为11011111时已经亮到了最后一盏灯,则应亮第一盏,所以跳到paoma(11111110)
jzpaoma;判断是否是亮到了最后一盏
movbh,al;将al先存起来,应为后面会改变al
movcx,0ffffh;
lp2:
looplp2;上下两句为延时
jmplp1;循环lp1
sansuo:
movbl,11111111b;11111111b使全部的灯都灭掉所需要
ll2:
movdx,IOAPT;读a口,判断是否开关发生变化
inal,dx;写入到al
andal,1h;判断最后一位是否为1
jnzpaoma;是则跑马
moval,bl;将bl赋给al
movdx,IOBPT;选择b口
outdx,al;将al写到b口
movdx,IOAPT;读a口,要的只是pa4口
inal,dx;将a口写到al
addal,1h;al加1,应为pa0是低电平,这样第一盏灯会亮,不是我们想要,所以加1使它灭掉
movbl,al;将al先存起来,应为后面会改变al
jmpll2;循环lp1
CODEENDS
ENDSTART
(4)、实验线路接线图
用一个开关控制电平,开关闭合时:
跑马灯跑(8255控制);开关打开时:
跑马灯灭,闪烁灯闪烁(8253分频控制)。
3、实验心得体会
本次课程设计的任务是用一个开关控制电平,开关闭合时:
跑马灯跑马(8255控制);开关打开时:
跑马灯灭,闪烁灯闪烁(8253分频控制)。
知道课程设计任务时,不知道怎么入手,还好在老师和同学的帮助下开始编写代码,设计电路图。
在设计中,我更深的了解到了8255、8253等一些芯片的工作原理,学到了课本上没有的知识,加强了自己的动手能力,学会了如何应用自己学的知识去处理一些实际问题,如何去处理一些常见的错误。
通过自己动手做我知道了,只有自己做出来了才是自己的。
这两天的课程设计,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
以前在上课的时候,老师经常强调在写一个程序的时候,一定要事先把程序原理方框图化出来,但是我开始总觉得这样做没必要,很浪费时间。
但是,这次课程设计完全改变了我以前的那种错误的认识,以前我接触的那些程序都是很短、很基础的,但是在课程设计中碰到的那些需要很多代码才能完成的任务,画程序方框图是很有必要的。
因为通过程序方框图,在做设计的过程中,我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,而且在程序测试的过程中也有利于查错。
其次,以前对于编程工具的使用还处于一知半解的状态上,但是经过一段上机的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎么去了解每个寄存器的内容以确保程序的正确性上都有了很大程度的提高。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
通过这次设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。
使我在学习微机的过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在同学的帮助下,终于游逆而解。
对给过我帮助的所有同学和指导老师再次表示忠心的感谢!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理 课程设计 微机 原理