微机原理及接口技术课程设计.docx
《微机原理及接口技术课程设计.docx》由会员分享,可在线阅读,更多相关《微机原理及接口技术课程设计.docx(13页珍藏版)》请在冰豆网上搜索。
微机原理及接口技术课程设计
昆明理工大学理学院
《微机原理与接口技术》
综合课程设计
成员:
谢XX(2xxxxxxxxxx8)
阳兴贤(201111103122)
毕成旭(201111103216)
专业:
电子科学与技术
指导教师:
赵建军
试验箱号:
8号
完成时间:
2013年12月
一、实验目的
1.了解简单LED灯规律工作基本原理。
2.熟悉8255A并行接口的各种工作方式和应用。
3.熟悉8253计数器/定时器的工作方式及应用编程,掌握利用软硬件相结合定时的方法。
二、实验内容
本次课程设计的内容为简单规律LED灯控制管理:
通过8253编程控制工作方式,实现精确延时。
通过8255并行接口来控制LED发光二极管的亮灭,实现试验箱上面的LED1-LED8灯的间歇闪烁。
三、实验原理
(一)8253芯片的内部结构及引脚功能
8253控制字intel8253是NMOS工艺制成的可编程计数器/定时器,工作的最高计数速率8253(2.6MHz)。
8253内部有三个计数器,分别称为计数器0、计数器1和计数器2,他们的机构完全相同。
每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。
每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。
每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。
执行部件实际上是一个16位的减法计数器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通过程序设置的。
输出锁存器的值是通过程序设置的。
输出锁存器OL用来锁存计数执行部件CE的内容,从而使CPU可以对此进行读操作。
顺便提一下,CR、CE和OL都是16位寄存器,但是也可以作8位寄存器来用。
8253具有3个独立的计数通道,采用减1计数方式。
在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。
当计数脉冲是已知周期的时钟信号时,计数就成为定时。
8253芯片有24条引脚,封装在双列直插式陶瓷管壳内。
1.数据总线缓冲器
数据总线缓冲器与系统总线连接,8位双向,与CPU交换信息的通道。
这是8253与CPU之间的数据接口,它由8位双向三态缓冲存储器构成,是CPU与8253之间交换信息的必经之路。
2.读/写控制
读/写控制分别连接系统的IOR#和IOW#,由CPU控制着访问8253的内部通道。
接收CPU送入的读/写控制信号,并完成对芯片内部各功能部件的控制功能,因此,它实际上是8253芯片内部的控制器。
A1A0:
端口选择信号,由CPU输入。
8253内部有3个独立的通道,加上控制字寄存器,构成8253芯片的4个端口,CPU可对3个通道进行读/写操作3对控制字寄存器进行写操作。
这4个端口地址由最低2位地址码A1和A0来选择。
3.计数通道0~2
每个计数通道内含1个16位的初值寄存器、减1计数器和1个16位的(输出)锁存器。
8253内部包含3个功能完全相同的通道,每个通道内部设有一个16位计数器,可进行二进制或十进制(BCD码)计数。
采用二进制计数时,写入的初值范围为0000H~0FFFFH,最大计数值是0000H,代表65536。
采用BCD码计数时,写入的初值范围为0000~9999,最大计数值是0000,代表10000。
与此计数器相对应,每个通道内设有一个16位计数值锁存器。
必要时可用来锁存计数值。
(特别说明:
8253计数器的值先减1再判断是否为0,为0就中断了,所以最大初始值为0,这样减1以后,不为0,所以为最大的,取决于CF标志位)
定时系数=需要定时的时间/时钟脉冲周期
①设置通道:
向方式控制字寄存器端口写入方式选择控制字,用于确定要设置的通道及工作方式;
②计数/定时:
向通道写入计数值,启动计数操作;
③读取当前的计数值:
向指定通道读取当前计数器值时,8253将计数器值存入锁存器,从锁存器向外提供当前的计数器值,计数器则继续作计数操作。
④计数到:
当计数器减1为0时,通过引脚OUT向外输出“到”的脉冲信号。
计数初值输入存放在初值寄存器中,计数开始或重装入时被复制到计数器中。
锁存器在非锁存状态,其值随计数器的变化而变化;一旦锁存了计数器的当前值,直到锁存器值被读取后才能解除锁存状态。
控制字的确定方式:
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位用来具体确定采用哪种计数方式。
采用方式0计数结束产生中断8253用作计数器时一般工作在方式0。
所谓计数结束产生中断,是指在计数值减到0时,输出端(OUT)产生的输出方式0有如下特点:
①当控制字写进控制字寄存器确定了方式0时,计数器的输出(OUT端口)保持低电平,一直保持到计数值减到0。
②计数初值装入计数器之后,在门控GATE信号为高电平时计数器开始减1计数。
当计数器减到0时输出端OUT才由低变高,此高电平输出一直保持到该计数器装入新的计数值或再次写入方式0控制字为止。
③GATE为计数控制门,方式0的计数过程可由GATE控制暂停,即GATE=1时,允许计数;GATE=0时,停止计数。
GATE信号的变化不影响输出OUT端口的状态。
④计数过程中,可重新装入计数初值。
如果在计数过程中,重新写入某一计数初值,则在写完新计数值后,计数器将从该值重新开始作减1计数。
方式3的特点是:
①方式3常用于波特率发生器。
方式3和方式2类似。
但输出为方波或近似方波的矩形波。
②写入方式3控制字后输出为高电平。
写入计数值后计数器自动开始对输入CLK脉冲计数,输出OUT仍保持为高;在计数完成一半时,输出OUT变为低电平,直到计数器全部完成,输出OUT又变为高电平,并重复上述计数过程。
③若计数值N为偶数时,OUT方波的占空比为1:
1;若N为奇数,其占空比为:
(N+1)/2:
(N-1)/2[即输出分频波高电平宽度为(N+1)/2CLK周期,低电平周期为(N-1)/2CLK周期]。
(二)8255芯片的内部结构及引脚功能
8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。
具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。
其各口功能可由软件选择,使用灵活,通用性强。
8255可作为单片机与多种外设连接时的中间接口电路。
8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。
同时必须具有与外设连接的接口A、B、C口。
由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:
与CPU连接部分、与外设连接部分、控制部分。
8255能并行传送8位数据,所以其数据线为8根D0~D7。
由于8255具有3个通道A、B、C,所以只要两根地址线就能寻址A、B、C口及控制寄存器,故地址线为两根A0~A1。
此外CPU要对8255进行读、写与片选操作,所以控制线为片选、复位、读、写信号。
各信号的引脚编号如下:
(1)数据总线DB:
编号为D0~D7,用于8255与CPU传送8位数据。
(2)地址总线AB:
编号为A0~A1,用于选择A、B、C口与控制寄存器。
(3)控制总线CB:
片选信号、复位信号RST、写信号、读信号。
当CPU要对8255进行读、写操作时,必须先向8255发片选信号选中8255芯片,然后发读信号或写信号对8255进行读或写数据的操作。
8255将3个通道分为两组,即PA0~PA7与PC4~PC7组成A组,PB0~PB7与PC0~PC3组成B组。
(1)A组控制器:
控制A口与上C口的输入与输出。
(2)B组控制器:
控制B口与下C口的输入与输出。
1.C口的位控字
8255A的C口具有位控功能,即允许CPU用输出指令单独对C口的某一位写“1”或“0”,C口的位控字的格式如图所示。
这是通过向8255A的控制寄存器写入(注意不是直接对C口写入)一个位控字来实现的。
最高位D7必须为“0”是C口置位/复位控制字的特征位。
D0位决定了是置“1”还是置“0”操作;D3~D1位决定了对C口中的哪一位进行操作。
2.8255A工作方式的控制字
8255工作方式:
1.方式0
基本特点:
方式0是一种基本输入或输出方式,该方式适合于通信双方不需要联络信号(应答信号)的简单输入/输出场合,CPU可以随时用输入/输出指令对指定端口进行读写操作。
该方式的特点是:
①使8255A分成彼此独立的两8位端口(A口,B口)和两个4位端口(C口高4位和低4位),4个端口的输入/输出可有16种不同的组态,可适用于各种不同的应用场合。
②方式0规定输出有无锁存能力,而输入数据不被锁存。
③方式0是单向的I/O,即一次初始化指定了输入或输出,则不能改变;若改变,则须重新初始化。
不能指定同一端口同时既作输入又作输出。
④这种方式下,无固定的I/O联络信号,联络信号线可由用户自行安排。
这种方式只能用于无条件传送和查询传送,不能实现中断传送。
2.方式1
基本特点:
方式1为选通输入/输出方式,即可借助于选通(应答式)联络信号的I/O方式。
这种方式中,A口和B口用于输入/输出的数据端口,C口某些位用作接收或产生应答联络信号。
方式1的特点是:
①有两组选通工作方式的端口,每组包含一个8位数据端口和3条控制线。
只有A口和B口可作为数据端口,C口的某些线被固定作为A口或B口与外设之间的联络信号线,其余的线只能定义为基本I/O,即只能工作于方式0。
②每组端口提供有中断请求逻辑和中断允许触发器。
对中断允许触发器INTE的操作是通过对端口C的置位/复位控制字进行的。
③方式1在输入/输出数据时都被锁存。
④方式1可以用查询方式和中断传送方式进行数据的输入/输出。
(1)方式1输入A口、B口和PC6、PC7作为数据口;端口C其余6位PC5~PC0作为控制口。
A口工作于方式1输入,固定用PC5~PC3作联络信号线;B口工作于方式1输入,固定用PC2~PC0作联络信号线。
各信号的作用说明如下:
:
SIB选通信号,输入,低电平有效。
它将外设的信号输入8255A的锁存器中。
IBF(INPUTBUFFERFULL)输入缓冲器满信号,输出,高电平有效,这是8255A输出的状态信号,通知外设送来的数据已接收。
当CPU用输入指令读走数据后,此信号被清除。
INTR中断请求信号,输出,高电平有效。
当输入数据时,若IBF有效或输出数据时ACK有效,则INTR变成有效,以便向CPU发出中断请求。
INTE中断允许位,INTE=0禁止中断,可事先用位控方式写入。
INTEA写入PC4,INTEB写入PC2。
(2)方式1输出A口、B口、C口的PC4、PC5作为数据口;PC3~PC0、PC6、PC7作为控制口。
A口工作于方式1输出,所用的联络信号线为PC7、PC6和PC3,而B口工作于方式1输出时,使用PC2~PC0作其联络信号线。
各联络信号的作用如下所述:
OBF输出缓冲器满,低电平有效。
当OBF有效时,表示CPU给指定端口写入一个字节数据,通知外设可以取数据。
OBF是由写信号WR的上跳沿置成有效电平的,而由ACK的有效信号使它恢复为高电平。
ACK应答信号,低电平有效。
当外设得知OBF信号,取数据时,要发出ACK信号选通,取走数据并清除OBF。
A,B两口的ACK信号分别由PC6及PC2提供。
INTR中断请求信号、INTR中断允许位,其作用及引出端都和方式1输入时相同。
3.方式2
基本特点:
方式2为分时双向输入/输出方式(双向I/O方式),即同一端口的I/O线既可以作为输入也可以作为输出。
方式2的主要特点为:
①A口可以工作于方式2,此时C口有5条线固定为A口和外设之间的联络信号线。
C口余下的3条线可以作为B口方式1下的联络线,也可以和B口一起成为方式0的I/O线。
②方式2在输入/输出数据时都被锁存。
③方式2可以用查询方式和中断传送方式进行数据的输入/输出。
④在方式2时为双向传送设置的联络信号,实际上是方式1下输入和输出两种操作时的组合。
只有中断申请信号INTR既可作输入的中断申请,又可作输出的中断申请。
四、实验步骤
实验连线为:
8255C接线:
PC0接开关K0,PC7接8253的OUT0,PA0~7接LED0~7,OUT3接8253CLK0,8255C片选CS0,8253片选CS1。
将程序在PC机上编译通过,并将PC机与硬件连好,进行连接和运行调试。
拨动开关K0,即启动该工作。
其中8255APA0~PA7接8个LED显示灯,用于显示当前定时时间工作状态。
五、实验结果
全速运行程序后,拨动开关K0后8个LED显示灯偶数序列灯先亮,奇数序列灯后亮。
关闭开关K0时,8个LED显示灯结束工作。
其中每次变换灯的工作状态时,设置计数器0的计数初值,期间时间的控制有软件程序来实现定时,每隔一秒变换一次。
每进入刷新LED显示,用对于闪烁频率实现简单规律LED灯控制管理。
六、实验总结
在本次设计中,使用了8253计数器、8255可编程并行接口实现简单规律LED灯控制管理。
熟悉8253中各通道可有6种可供选择的工作方式,以完成定时、计数或脉冲发生器等多种功能。
读取计数器的当前值采用输出锁存器在非锁存状态会跟随计数器计数的变化而变化,直接读计数器是从锁存器得到计数器的当前值。
但由于计数器处于工作状态,读出值不一定能稳定。
其中学到了:
每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。
每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,。
8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。
同时必须具有与外设连接的接口A、B、C口。
由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:
与CPU连接部分、与外设连接部分、控制部分。
附录一:
源程序
assumecs:
code
codesegmentpublic
org100h
start:
movdx,04a6h;8255控制字入口地址,
moval,10001011b;控制字:
1方式选择控制字的表识位
;00方式0基本的输入/输出方式
;0端口A的输出,1PC7~PC4输入
;011B组方式为0B口输入PC7~PC4输入
outdx,al
movdx,04a0h;控制端口A地址
moval,11111111b;A口初始化ff
outdx,al
movbl,10100101b;a组控制字p228
;方式1端口A输出,PC4、PC5输出
calljiance
again:
movdx,04a0h;控制端口A地址
moval,bl
outdx,al
calldelay
calljiance
notbl
jmpagain
;===================================================================
delay:
movdx,04b6h;8253控制字入口地址
moval,00110000b;方式3p275
;选择计数器0,先读写低8位,再读写高8位
;模式0(计数结束产生中断),计数初值为二进制
outdx,al
movcx,50;循环50次
delay1:
movdx,04b0h;8253计数器0入口地址
movax,37500
outdx,al
moval,ah
outdx,al;上面是先低8位,再高8位送到计数器0入口地址
movdx,04a4h;控制8255端口C地址
next:
inal,dx
testal,80h;比较开关k0的状态,是否开
jznext
calljiance
loopdelay1
ret
;=======================================================================
jiance:
pushax
pushdx
movdx,04a4h;控制端口C地址
wait:
inal,dx;读pc0口开关状态
testal,01h;比较,开OR关
jzon;开则跳转到on
movdx,04a0h;控制端口A地址
moval,11111111b;A口初始化ff
outdx,al
movdx,04a4h;控制端口C地址
jmpwait
on:
movdx,04a0h;控制端口A地址
moval,bl;bl=10100101
outdx,al
popdx
popax
ret;回到again
codeends
endstart