微机课程设计zuixin.docx
《微机课程设计zuixin.docx》由会员分享,可在线阅读,更多相关《微机课程设计zuixin.docx(29页珍藏版)》请在冰豆网上搜索。
微机课程设计zuixin
课程设计
课程名称微机课程设计
题目名称计时器(计数3)
学生学院自动化学院
专业班级13电气
(2)班
学号3113001318
学生姓名彭浩
指导老师廉迎战
2015年10月23日
1、概述
1.课程设计的目的
1)巩固和掌握对“微机原理”课程内容的认识和理解,提高应用水平。
2)掌握汇编语言程序的编制方法。
8253编程。
2.课程设计的要求
1)系统硬件设计
✧设计8053定时器计时,8253地址为40H\41H\42\H\43H,控制电路如图:
2)软件编程内容
✧显示器工作于查询方式,键盘工作于中断方式。
✧16个按键定义的键值为:
0~F,按任意键在显示器上显示对应键值。
✧设定8253的通道2工作于方式0,用于事件计数,当计数值为8,按键9次后,发出中断请求信号并显示“EEEEEE”。
显示满30秒时数字清除。
✧8253只写高8位计数值时,8253的计数是8位计数,还是16位计数?
✧A、软件实现:
计数结束后,读取计数值,看是0还是0FFH?
✧B、软件实现:
定时结束后,读取定时数值,看是0还是0FFH?
2、设计思路
微型计算机由微处理器,存储器,接口电路以及连接在这些部件上的总线组成。
微处理器,存储器和所有I\O设备之间的信息交换都通过总线进行。
总线包括地址总线,数据总线和控制总线,他们始于CPU或终于CPU,现代微机大部分都是这种以总线为中心的结构。
8086CPU的地址\数据总线AD15-AD0和地址\状态总线A16/S3-A19/S6是复用的,必须通过地址锁存器把地址总线和数据总线分离。
控制总线直接和8086CPU相连,这样8086CPU就工作在最小工作方式。
微型计算机及外围设备组成微型计算机系统的硬件,外围设备必须通过接口电路才能与系统总线相连,因此构建一个基于8086CPU的简单微型计算机系统就是工作于最小工作方式的8086CPU系统总线上挂上一定规模的存储器和接口电路,然后在把合适的外围设备连接到接口电路上。
一个基于8088CPU的简单微型计算机系统框图如图所示。
图中键盘与显示器作为外围设备通过接口芯片与系统总线相连。
本次课程设计使用软件是wmd86硬件是TP-PITE5.4板,通过8255可编程并行I/O接口芯片可以对4X4键盘进行扫描,从而可以确定哪一个键被按下,同时又可对七段数码管的输出显示进行控制,从而可以做到按下某个键后在数码管上显示出自己需要显示的相应的字符。
8254可编程定时和计数芯片有三个计数器,利用其中任何一个计数器设置其工作方式为0,其中的out端口接到8259A中断控制器芯片的中断请求端口上,CLK接到板子的KK1+接口上,通过人工触发的方式给计时器送计时脉冲,将计数次数8送进计数器,那么按键KK1+九次后计数器计数终止计数,同时out端口送出一个高电平,这个就是中断请求信号,由此进入中断,中断服务程序里面利用8255芯片对七段数码管进行输出显示控制,让数码管显示“EEEEEE”,最后再在显示程序后设定一个30s的延时子程序,由此实现了“设定8253的通道2工作于方式0,用于事件计数,当计数值为8,按键9次后,发出中断请求信号并显示“EEEEEE”。
显示满30秒时数字清除”。
3、系统详细原理
1.硬件电路系统设计
1)确定组成电路所用元器件
本次课程设计使用实验室提供的元器件,分别为:
Ø8086微处理器
Ø可编程接口芯片8255A
Ø可编程定时器/计数器8253
Ø可编程中断控制器8259A
Ø74LS07芯片
Ø键盘及数码管显示单元
2)8086CPU的引脚信号和功能
a.引言
如下图所示,是8088/8086CPU的外部结构,即引脚信号图。
图2-58086/8088CPU引脚功能
8088/8086CPU芯片都是双列直插式集成电路芯片,都有40个引脚,其中32个引脚在两种工作模式下的名称和功能是相同的,还有8个引脚在不同的工作模式下,具有不同的名称和功能。
下面,我们分别来介绍这些引脚的输入/输出信号及其功能。
b.两种模式下,名称和功能相同的32个引脚
1 VCC、GND:
电源、接地引脚(3),8088/8086CPU采用单一的+5V电源,但有两个接地引脚。
2 AD15—AD0(AddressDataBus):
地址/数据复用信号输入/输出引脚(16),分时输出低16位地址信号及进行数据信号的输入/输出。
3 A19/s6—A15/s3(AddressStatusBus):
地址/状态复用信号输出引脚(4),分时输出地址的高4位及状态信息,其中s6为0用以指示8086/8088CPU当前与总线连通;s5为1表明8086/8088CPU可以响应可屏蔽中断;s4、s3共有四个组态,用以指明当前使用的段寄存器,00—ES,01—SS,10—CS,11—DS。
4 NMI(Non-MaskableInterrupt)、INTR(InterruptRequest):
中断请求信号输入引脚
(2),引入中断源向CPU提出的中断请求信号,高电平有效,前者为非屏蔽中断请求,后者为可屏蔽中断请求信号。
5
(Read):
读控制输出信号引脚
(1),低电平有效,用以指明要执行一个对内存单元或I/O端口的读操作,具体是读内存单元,还是读I/O端口,取决于
控制信号。
6 CLK/(Clock):
时钟信号输入引脚
(1),时钟信号的方波信号,占空比约为33%,即1/3周期为高电平,2/3周期为底电平,8088/8088的时钟频率(又称为主频)为4.77MHz,即从该引脚输入的时钟信号的频率为4.77MHz。
7 Reset(Reset):
复位信号输入引脚
(1),高电平有效。
8088/8086CPU要求复位信号至少维持4个时钟周期才能起到复位的效果,复位信号输入之后,CPU结束当前操作,并对处理器的标志寄存器、IP、DS、SS、ES寄存器及指令队列进行清零操作,而将CS设置为0FFFFH。
8 READY(Ready):
“准备好”状态信号输入引脚
(1),高电平有效。
9
(Test):
测试信号输入引脚
(1),低电平有效,TEST信号与WAIT指令结合起来使用,CPU执行WAIT指令后,处于等待状态,当TEST引脚输入低电平时,系统脱离等待状态,继续执行被暂停执行的指令。
10 MN/MX(Minimum/MaximumModelControl)最小/最大模式设置信号输入引脚
(1),该输入引脚电平的高、低决定了CPU工作在最小模式还是最大模式,当该引脚接+5V时,CPU工作于最小模式下,当该引脚接地时,CPU工作于最大模式下。
c.最小模式下的24--31引脚
当8088/8086CPU的
引脚固定接+5V时,CPU处于最小模式下,这时候剩余的24—31共8个引脚的名称及功能如下:
1
(InterruptAcknowledge)中断响应信号输出引脚
低电平有效,该引脚是CPU响应中断请求后,向中断源发出的认可信号,用以通知中断源,以便提供中断类型码,该信号为两个连续的负脉冲。
2 ALE(AddressLockEnable):
地址锁存允许输出信号引脚
高电平有效,CPU通过该引脚向地址锁存器8282/8283发出地址锁存允许信号,把当前地址/数据复用总线上输出的是地址信息,锁存到地址锁存器8282/8283中去。
注意:
ALE信号不能被浮空。
3
(DataEnable):
数据允许输出信号引脚
低电平有效,为总线收发器8286提供一个控制信号,表示CPU当前准备发送或接收一项数据。
4
(DataTransmit/Receive):
数据收发控制信号输出引脚
CPU通过该引脚发出控制数据传送方向的控制信号,在使用8286/8287作为数据总线收发器时,
信号用以控制数据传送的方向,当该信号为高电平时,表示数据由CPU经总线收发器8286/8287输出,否则,数据传送方向相反。
5
(Memory/Input&Output):
存储器/I/O端口选择信号输出引脚
这是CPU区分进行存储器访问还是I/O访问的输出控制信号。
当该引脚输出高电平时,表明CPU要进行I/O端口的读写操作,低位地址总线上出现的是I/O端口的地址;当该引脚输出低电平时,表明CPU要进行存储器的读写操作,地址总线上出现的是访问存储器的地址。
6
(Write):
写控制信号输出引脚
低电平有效,与
配合实现对存储单元、I/O端口所进行的写操作控制。
7 HOLD(HoldRequest):
总线保持请求信号输入引脚
高电平有效。
这是系统中的其它总线部件向CPU发来的总线请求信号输入引脚。
8 HLDA(HoldAcknowledge):
总线保持响应信号输出引脚
高电平有效,表示CPU认可其他总线部件提出的总线占用请求,准备让出总线控制权。
3)8255A芯片基本资料
a.8255A内部结构如下图所示
图2.5.18255A内部结构
1 8255A有3个8位数据接口,即接口A、接口B和接口C。
使用者可以用软件使它们分别作为输入端口或输出端口。
(1)端口A:
一个8位数据输入锁存器和一个8位数据输出锁存器/缓冲器,用来传送数据。
数据输入均被锁存。
(2)端口B:
一个8位数据输入缓冲器和一个8位数据输出锁存器/缓冲器,用来传送数据。
数据输入时不被锁存,数据输出时被锁存。
(3)端口C:
一个8位数据输入缓冲器和一个8位数据输出锁存器/缓冲器,用作输入端口时,数据不被锁存;而作为输出端口是,数据被锁存。
2 A组控制和B组控制
这两组控制电路一方面接收芯片内部总线上的控制字,一方面接收来自读/写控制逻辑电路的读/写命令,从而解决端口的工作方式和读/写操作。
其中,A组控制电路控制端口A和端口C高4位(PC7-PC4)的工作方式和读/写操作:
而B组控制电路控制端口B和端口C低4位(PC3-PC0)工作方式和读写操作。
3 读/写控制逻辑电路
读/写控制逻辑电路负责管理8255A的数据传输过程。
它接收来自系统总线的信号A1,A0和控制总线信号RESET、WR、RD,将这些信号组合后,得到A组控制部件和B组控制部件的控制命令,并将命令发给这两个部件,完成对数据、状态信息的传输。
4 数据总线缓冲器
这是个双向三态8位数据缓冲器,8255A通过它与系统数据总线相连。
输入数据、输出数据、CPU发给8255A的控制字都是通过这个缓冲器传递的。
b.8255的引脚信号
1 与外部设备端相连的引脚
◆PA7-PA0:
A端口的输入/输出引脚。
◆PB7-PB0:
B端口的输入/输出引脚。
◆PC7-PC0:
C端口的输入/输出引脚。
2 与CPU相连的引脚
◆RESET:
复位信号,低电平有效。
当RESET信号来到时,所有内部寄存器都被清0,同时3个端口被自动设为输入端口。
◆D7-D0:
8255A的数据线,和系统数据总线相连。
◆CS:
芯片选择信号。
只有当CS有效时,读出信号RD和写入信号WR才对8255A有效。
◆RD:
读出信号。
CPU通过IN指令使RD有效,将数据或状态信息从8255A中读到CPU。
◆WR:
写入信号。
CPU通过OUT指令使WR有效,将数据或状态信息从CPU中写道8255A.
◆A1,A0:
端口选择信号。
8255A内部有3个数据端口和1个控制端口,共4个端口。
规定A1,A0为00、01、10和11时,分别选中端口A、端口B、端口C和控制端口。
c.8255的控制字
1 方式选择控制字
(1)方式选择控制字把A、B、C三个端口分为A、B两组来设定工作方式。
A组包括端口A和端口C的上半部,B组包括端口B和端口C的下半部。
(2)端口A可工作于3种方式中的任何一种;端口B只能工作于方式0和方式1;而端口C除用作输入、输出口(方式0)外,通常用来配合端口A和端口B提供联络控制信号和状态信号。
(3)归在同一组的两个端口可分别作为输入端口或输出端口,不要求同为输入或输出。
2 端口C按位置位/复位控制字
(1)端口C按位置位/复位控制字尽管是对端口C进行操作的,但此控制字必须写入控制口,而不写入端口C。
(2)一个控制字只能完成端口C中某一位置的置1或置0,要对多位置1或置0,必须使用多个控制字。
d.实验中8253对应端口地址
如下表所示:
实验系统中8255A对应的端口地址表
信号线
A口
B口
C口
控制寄存器
IOY0
0600H
0602H
0604H
0606H
IOY1
0640H
0642H
0644H
0646H
IOY2
0680H
0682H
0684H
0686H
IOY3
06C0H
06C2H
06C4H
06C6H
4)8253工作原理
a.8253工作方式
8253可编程计数器/定时器的工作频率为0~2MHz,它有3个独立编程的计数器,每个计数器有三个引脚,分别为时钟CLK、门控GATE、计数器和计时结束输出OUT,每个计数器分别有6种工作方式。
下面仅对方式1和方式2的工作原理进行简述。
1 方式1:
可编程单稳,即由外部硬件产生的门控信号GATE触发8253而输出单稳脉冲。
计数器装入计数初值后,在门控信号GATE由低电平变高电平并保持时,计数器开始计数,此时输出端变成低电平并开始单稳过程。
当计数结束时,输出端OUT转变成高电平,单稳过程结束,在OUT端输出一个单稳脉冲。
硬件再次触发。
OUT端可再次输出一个同样的单稳脉冲。
单稳脉冲的宽度由装入计数器的计数初值决定。
在WR信号的上升沿(CPU写控制字之后),输出端OUT保持高电平(若OUT原为低电平则变为高电平)。
CPU写入计数值后,计数器并不马上开始计数,而要等到门控信号GATE启动之后的下一个CLK的下降沿才开始。
在整个计数过程中,输出端OUT保持低电平直至计数值至0,OUT变为高电平为止。
2 方式2:
速率发生器,其功能如同一个N分频计数器。
其输出是将输入时钟按照N计数值分频后得到的一个连续脉冲。
在该方式下,当计数器装入初始值开始工作后,输出端OUT将不断地输出负脉冲,其宽度为一个时钟周期的时间,而两个负脉冲间的时间脉冲个数等于计数器装入的计数初值。
若计数初值为N,则每N个输入脉冲输出一个脉冲。
当CPU写完控制字后,输出端OUT转变成高电平,计数器将立即自动开始对输入CLK时钟计数。
在计数过程中,OUT端始终保持高电平,直至计数器的计数值减到1时,OUT端才变为低电平,其保持的宽度为一个输入CLK时钟周期的时间,然后输出端OUT恢复高电平,计数器重新开始计数。
b.8253控制字格式
SC1SC0为计数器选择位,RL1RL0为计数器读写操作选择位,以确定计数器进行装入或读出是单字节还是双字节,M2、M1、M0为计数器工作方式选择位,BCD表示计数器计数方式选择位。
c.8253的内部结构框及引脚
如下图所示:
8253引脚图
8253内部结构框图
1 数据总线缓冲器及数据总线D0~D7
这是8253与CPU数据总线连接的8位双向三态缓冲器,是8253内部总线与CPU系统的8位数据总线之间的接口。
CPU通过它写方式控制字到控制字寄存器,写计数初值到计数通道,读取计数通道的当前计数值。
即数据总线缓冲器有三个基本功能:
通过编程向8253写入确定8253工作方式的命令;向计数寄存器装入计数初值;读出当前计数值。
2 读/写控制逻辑及控制引脚
这是8253内部操作的控制部分,按照CPU发来的读写信号及地址信号来控制对各个计数器的读写,以及对控制寄存器的写入。
当片选信号
为高电平时,数据总线缓冲器处于高阻状态。
当片选信号有效时(低电平),CPU可以对8253某端口进行读/写操作。
8253内部有3个独立的计数通道和1个控制字寄存器共4个端口,由A1和A0加以选择,但对控制字寄存器仅能进行写操作。
各个端口的读/写操作的选择见下表。
注意点是控制寄存器只能写入不能读出。
3 控制字寄存器
在初始化编程时,CPU写入方式控制字到控制字寄存器中,用以选择计数通道及其
相应的工作方式。
4 计数通道
8253有3个计数通道,分别为计数通道0、计数通道1和计数通道2,3个计数通道内部结构完全相同。
每个计数通道都由一个16位计数初值寄存器、一个16位减法计数器和一个16位计数值锁存器组成。
3个计数通道操作完全独立。
初始化编程时,虽然3个计数通道共用一个控制字寄存器端口地址,但CPU可以分别写3个方式控制字到控制字寄存器,分别选择各计数通道的工作方式。
在写计数初值到计数通道或CPU读取计数通道到当前计数值时,各计数通道都有各自的端口地址。
3个计数通道功能完全相同。
d.实验中8253对应端口地址
如下表所示:
实验系统8253对应的端口地址表
信号线
计数器0
计数器1
计数器2
控制寄存器
IOY0
0600H
0602H
0604H
0606H
IOY1
0640H
0642H
0644H
0646H
IOY2
0680H
0682H
0684H
0686H
IOY3
06C0H
06C2H
06C4H
06C6H
5)8259A中断控制器
a.引言
8259A芯片是一个中断管理芯片,中断的来源除了来自于硬件自身的NMI中断和来自于软件的INTn指令造成的软件中断之外,还有来自于外部硬件设备的中断,这些中断是可屏蔽的。
这些中断也都通过PIC(ProgrammableInterruptController)进行控制,并传递给CPU。
一个8259A芯片的可以接最多8个中断源,但由于可以将2个或多个8259A芯片级连(cascade),并且最多可以级连到9个,所以最多可以接64个中断源。
如今绝大多数的PC都拥有两个8259A,这样最多可以接收15个中断源。
通过8259A可以对单个中断源进行屏蔽。
在一个8259A芯片有如下几个内部寄存器:
InterruptMaskRegister(IMR)、InterruptRequestRegister(IRR)、InServiceRegister(ISR)。
IMR被用作过滤被屏蔽的中断,IRR被用作暂时放置未被进一步处理的Interrupt,当一个Interrupt正在被CPU处理时,此中断被放置在ISR中。
除了这几个寄存器之外,8259A还有一个单元叫做PriorityResolver,当多个中断同时发生时,PriorityResolver根据它们的优先级,将高优先级者优先传递给CPU。
b.工作原理
当一个中断请求从IR0到IR7中的某根线到达IMR时,IMR首先判断此IR是否被屏蔽,如果被屏蔽,则此中断请求被丢弃;否则,则将其放入IRR中。
在此中断请求不能进行下一步处理之前,它一直被放在IRR中。
一旦发现处理中断的时机已到,PriorityResolver将从所有被放置于IRR中的中断中挑选出一个优先级最高的中断,将其传递给CPU去处理。
IR号越低的中断优先级别越高,比如IR0的优先级别是最高的。
8259A通过发送一个INTR(InterruptRequest)信号给CPU,通知CPU有一个中断到达。
CPU收到这个信号后,会暂停执行下一条指令,然后发送一个INTA(InterruptAcknowledge)信号给8259A。
8259A收到这个信号之后,马上将ISR中对应此中断请求的Bit设置,同时IRR中相应的bit会被reset。
比如,如果当前的中断请求是IR3的话,那么ISR中的bit-3就会被设置,IRR中IR3对应的bit就会被reset。
这表示此中断请求正在被CPU处理,而不是正在等待CPU处理。
随后,CPU会再次发送一个INTA信号给8259A,要求它告诉CPU此中断请求的中断向量是什么,这是一个从0到255的一个数。
8259A根据被设置的起始向量号(起始向量号通过中断控制字ICW2被初始化)加上中断请求号计算出中断向量号,并将其放置在DataBus上。
比如被初始化的起始向量号为8,当前的中断请求为IR3,则计算出的中断向量为8+3=11。
CPU从DataBus上得到这个中断向量之后,就去IDT中找到相应的中断服务程序ISR,并调用它。
如果8259A的EndofInterrupt(EOI)通知被设定位人工模式,那么当ISR处理完该处理的事情之后,应该发送一个EOI给8259A。
8259A得到EOI通知之后,ISR寄存器中对应于此中断请求的Bit会被Reset。
如果8259A的EndofInterrupt(EOI)通知被设定位自动模式,那么在第2个INTA信号收到后,8259AISR寄存器中对应于此中断请求的Bit就会被Reset。
在此期间,如果又有新的中断请求到达,并被放置于IRR中,如果这些新的中断请求中有比在ISR寄存中放置的所有中断优先级别还高的话,那么这些高优先级别的中断请求将会被马上按照上述过程进行处理;否则,这些中断将会被放在IRR中,直到ISR中高优先级别的中断被处理结束,也就是说知道ISR寄存器中高优先级别的bit被Reset为止。
c.实验中8259A对应端口地址
如下表所示:
8259A主从芯片的端口地址
主片
从片
偶地址20H
偶地址A0H
奇地址21H
奇地址A1H
主片中断向量表地址与中断类型码的关系
主片中断序号
IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
中断类型码
08H
09H
0AH
0BH
0CH
0DH
0EH
0FH
中断向量表地址
20H~23H
24H~27H
28H~2BH
2CH~2FH
30H~33H
34H~37H
38H~3BH
3CH~3FH
说明
未开放
未开放
未开放
未开放
串行口
未开放
可用
可用
6)存储器芯片,接口芯片与系统总线的连接
存储器芯片,接口芯片与系统总线的连接就是如何把存储器芯片和接口芯片挂到系
统的三类总线上。
存储器芯片和接口芯片与数据总线的连接比较简单,因为是简单系统,对数据总线
的负载能力没有特别的要求,所以只要把存储器芯片和接口芯片的数据引脚与数据总线
相应各位作并联就可以。
连接到芯片上的控制总线不多,常用的有IO/M,RD,WR,RESET等信号,这些信号线也都是与各芯片的有关引脚做并联连接。
存储器芯片,接口芯片与地址总线的连接原则上是一样的,低地址线与存储器芯片或接口芯片的地址引脚直接并联连接,用来作为芯片内部单元的选择,高位地址线经译码器译码后一般连接到芯片的片选端作为芯片的选择。
一般高位地址线的低位部分作为译码器的译码输入,高位部分则作为译码器译码的许可条件。
由于80886CPU的端口地址采用独立编址方式,为了区分是存储器芯片地址还是接口芯片地址,一定要把IO/M信号参与到芯片的片选端控制。
本次设计的连接图如下所示:
7)接口芯片与外围设备的连接
采用8255A接口芯片作为4*4键盘与6位七段数码管显示器的接口。
如下图所示:
a.8255A接口芯片与4*4键盘的连接
图