东北大学接口技术课程设计Word文件下载.docx
《东北大学接口技术课程设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《东北大学接口技术课程设计Word文件下载.docx(20页珍藏版)》请在冰豆网上搜索。
综上所述,本实验的硬件电路设计如图2.2。
图2.2硬件结构示意图
其中8255与8086连接图如下图2.3
图2.38086与8255连接图
3.硬件总体设计
(1)系统方案
该抢答器所要器件:
中断优先级管理器8259A、可编程并行接口芯片8255、可编程定时器/计数器8253,三个一样的驱动器,黄、红、绿三个发光二极管,十三个电阻,一个8输入与非门,一个非门,一个扬声器,一个LED显示器,10个按键。
(2)内存单元编址
①中断优先级管理器8259A的端口地址为20H、21H
②可编程并行接口接口芯片8255A的端口地址为80H、81H、82H、83H
3可编程定时器/计数器8253的端口地址为40H、41H、42H、43H
(3)键盘、扬声器及显示功能的定义
10个按键中,一个开始键一个复位键,另外8个用做8位选手的抢答按键。
扬声器用与黄、红、绿三个发光二极管配合使用,黄灯亮扬声器鸣叫表示抢答成功,红灯亮扬声报警表示抢答违规报警,绿灯亮扬声器不鸣则表示主持人已按下开始键。
LED显示器显示的内容与选手号对应,抢答成功或违规都要显示。
4.软件总体设计
(1)存储单元的分配、标志位的含义
①定义一个TAB变量用来存储1~9的字形码信息,如下表
LED的管脚
对应的字形
对应存放在内存
单元的字形码
dp、g、f、e、d、c、b、a
00000110
01011011
01001111
01100110
01101101
01111100
00000111
01111111
01101111
1
2
3
4
5
6
7
8
9
06H
5BH
4FH
66H
6DH
7CH
07H
7FH
6FH
②定义一个BZ变量作为标志位,用来选手抢答是否违规,BZ=0FFH时表示主持人已经按下开始键选手可以抢答,BZ=00H表示主持人未按下开始按键,选手不可以抢答。
5.硬件设计
【1】.芯片的介绍
(1)中断优先级管理器8259A
①8259A内部结构
8259A采用NMOS工艺制成,有28根引脚,所有输入、输出端与TTL电平兼容,单一电源(Vcc=+5V)供电。
8259的内部主要组成部分,包括处理部件(中断请求寄存器IRR、优先级鉴别器PR及现行服务寄存器ISR)、控制部件(控制逻辑及中断屏蔽寄存器IMR)、数据总路线缓冲器、读/写逻辑以及级联缓冲器/比较器等5个部分。
②8259A主要的外部引脚
图3.18259A引脚图
D0~D7:
双向数据线,CPU与8259间利用这个数据总路线传送数据及命令。
:
写控制输入信号,同控制总路线上的
信号相连。
读控制输入信号,同控制总路线上的
信号相连。
A0:
地址选择信号,用来对8259A内部的两个可编程寄存器进行选择。
片选输入信号,低电平有效。
有郊时可通过数据总路线设置命令并对内部寄存器进行读出。
当进入中断响应时序时,该引脚状态与进行的处理无关。
INT:
由8259A向CPU发出的中断请求信号。
输入信号,接收CPU送来的中断响应信号INTA。
IR0~IR7:
8个中断请求输入信号,高电平或上升沿有效。
用于接收外设接口来的中断请求。
③8259A工作方式
a.优先级设置方式:
全嵌套方式(固定优先级方式)、特殊全嵌套方式(可响应同级中断方式)、轮转优先级方式、特殊轮转优先级方式。
b.中断源屏蔽方式:
普通屏蔽方式、特殊屏蔽方式。
c.中断结束方式:
中断自动结束方式、中断非自动结束方式(包括一般中断结束方式、特殊中断结束方式)。
d.系统总路线连接方式:
缓冲方式、非缓冲方式。
e.中断请求信号触发方式:
边沿触发方式、电平触发方式。
④8259A初始化控制字格式
ICW1(芯片控制字)
D7D6D5
D4
D3
D2
D1
D0
000
特征位
触发方式
0边沿触发
1电平触发
单片选择信号
0多片8259级联
1单片8259
是不要ICW4
0不要(8080/8085)
1要(80X86)
ICW2(中断类型码控制字,D7~D3设置中断类型码)
D7
D6
D5
×
ICW3(主片,级联时才用设置,各位为1则表示接有从片)
IR7
IR6
IR5
IR4
IR3
IR2
IR1
IR0
ICW3(从片,级联时才用设置)
D2D1D0
ID2ID1ID0从片INT接于主片的引脚
000IR0
001IR1
…………
111IR7
ICW4(方式控制字)
嵌套方式
0全嵌套方式
1特殊全嵌套方式
缓冲方式
0非缓冲方式
1缓冲方式
缓冲方式下
0本片为从片
1本片为主片
中断结束方式
0中断非自动结束
1中断自动结束
系统类型
08080/8085
180X86
⑤8259A操作命令字格式
OCW0(中断屏蔽字,各位为1则被屏蔽)
OCW1(轮转优先级和中断结束字)
D4D3
轮转位
0非轮转
1轮转
选择标志位
1L2~L0无效
1L2~L0有效
中断结束位
0非中断结束
1中断结束
00
标志位
000IR0优先级最低
001IR1优先级最低
OCW2(特殊屏蔽、查询和状态读取字)
特殊屏蔽方式允许位
0禁止特殊屏蔽方式
1允许特殊屏蔽方式
特殊屏蔽方式位
0非特殊屏蔽方式
1特殊屏蔽方式
01
中断查询位
0非中断查询
1中断查询
读寄存器
0禁止读
1允许读
0读IRR
1读ISR
(2)可编程并行接口接口芯片8255A
①8255A内部结构
8255A芯片是一个采用NMOS工艺制造的40引脚双列直插式(DIP)封装组件。
8255A有3个8位数据端口,即A口、B口及C口,它们都可以分别作为输入口或输出口使用;
A组控制与B组控制;
读/写控制逻辑;
数据总路线缓冲器。
②8255A主要的外部引脚
图3.28255A引脚图
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时,选择控制口。
③8255A工作方式
方式0:
基本的输入/输出方式。
A口、B口、C口都可以工作在些方式下。
方式1:
选通输入/输出方式(应答方式)。
A口、B口工作在此方式下。
方式2:
双向传输方式。
只有A口可以工作在此方式下。
④8255A方式控制字格式
D6、D5
A口
C口高4位
B口
C口低4位
00方式0
01方式1
1x方式2
0输出
1输入
0方式0
1方式1
2输入
(3)可编程定时器/计数器8253
①8253的内部结构
8253采用NMOS工艺制成,有24个引脚,所有输入、输出端均TTL电平兼容,单一电源(Vcc=+5V)供电,最高计数速率为2.6MHz。
它包括3个计数器(即计数器0、1、2)、数据总路线缓冲器、读/写逻辑以及控制寄存器等4个部分。
②8253的外部引脚
图3.38253引脚图
地址输入线,用来址8253内部的4个端口,即3个计数器和1个控制字寄存器与CPU系统地址线相连。
CLK0、CLK1、CLK2:
时钟脉冲输入端,用于输入定时脉冲或计数脉冲信号。
CLK可以是系统的时钟脉冲,也可以由系统时钟分频或者其他脉冲源提供。
当用于定时时,这个脉冲必须是均匀的、连续的、周期精确的,而用于计数时,这个脉冲可以是不均匀的、断续的、周期不定的。
GATE0、GATE1、GATE3:
门控输入端,用于外部控制计数器的启动计数和停止计数的操作。
两个或两个以上计数器连用时,可用此信号同步,也可用于与外部某信号的同步。
OUT0、OUT1、OUT2:
计数输出,当计数器从初值开始完成计数操作进,OUT引脚输出相应的信号。
③8253的工作方式
减1计数到0,产生中断请求信号。
减1计数到0,产生可重复触发的单稳态负脉冲信号。
减1计数到1,分频器(速率信号发生器)。
方式3:
减1计数到初值的1/2,方波发生器。
方式4:
减1计数到0,软件触发产生选通负脉冲信号。
方式5:
减1计数到0,硬件触发产生选通负脉冲信号。
④8253方式控制字格式
D7D6
D5D4
D3D2D1
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二进制计数
3BCD计数
【2】芯片的连接
(1)各芯片与CPU的连接
8259A、8255A、8253的数据总线D7~D0端、
端、
端、INT端分别与CPU的D7~D0数据总线、片选端、
端、INTR端。
8255A、8253的A1、A0端分别接入CPU地址线的A1、A0端,8259的A0端接到CPU地址线的A0端;
(2)各芯片之间的连接和与外设的连接
8259A的IR2端接选手按键信息输出端;
8255A的A口的PA7~PA0依次接“按键1”~“按键8”,B口的PB7~PB0通过驱动器1接到LED显示器,C口的PC4、PC5分别接复位键和开始键,PC3、PC2、PC1经驱动器2分别接绿灯发光二极管、红灯发光二极管、黄灯发光二极管,PC0接到8253的GATE1端;
8253的GATE0端接+5V电压,OUT0的输出接入CLK1端,OUT1的输出经反相器后接入GATE2端,CLK0和CLK1接入1MHz的频率发生器,CLK2经驱动器3接扬声器。
三.电路原理图
四.程序流程图
(1)主程序流程图:
(2)子程序流程图:
五.实验程序
(1)主程序:
DATASEGMENT
TABDB06H,5BH,4FH,66H,6DH,7CH,07H,7FH,67H;
1~9的段码
;
(字形码)
BZDB00H
DATAENDS
STACKSEGMENTPARASTACK‘STACK’
DB100HDUP(?
)
STACKENDS
CODESEGMENT
ASSUMEDS:
DATA,CS:
CODE
START:
MOVAX,,DATA
MOVDS,AX
;
8259A初始化
MOVAL,13H;
初始化8259A的ICW1
OUT20H,AL
MOVAL,08H;
送中断类型码基值,8259A的ICW2
OUT21H,AL
MOVAL,0DH;
一般中断结束方式,8259A的ICW4
OUT21H,AL
8255A初始化
MOVAL,98H;
置8255A工作方式
OUT83H,AL
XORAL,AL;
B口、C口初始化
OUT81H,AL
OUT82H,AL
8253初始化
MOVAL,37H;
置8253通道0控制字
OUT43H,AL
MOVAL,00H;
置8253通道0计数初值为4000
OUT40H,AL
MOVAL,40H
MOVAL,73H;
置8253通道1控制字
OUT43H,AL
MOVAL,00H;
置8253通道1计数初值为3000
OUT41H,AL
MOVAL,30H
OUT41H,AL
MOVAL,B7H;
置8253通道2控制字
OUT42H,AL
置8253通道2计数初值0
MOVAL,00H
中断设置
MOVAH,25H;
设置抢答按键中断向量
MOVAL,0AH;
中断类型号为入口参数
MOVBX,SEGKEYINT;
DS:
DX指向4字节地址
MOVDS,BX
MOVDX,OFFSETKEYINT
INT21H
STI;
使IF置1,开放可屏蔽中断
主循环
LOPM:
INAL,82H;
检测开始键
TESTAL,20H;
检测C口的PC5端
JZLOP2;
开始键未按下即PC5=0,则跳转检测
复位键
LOP1:
检测开始键是否已经弹起,即PC5=0
TESTAL,20H
JNZLOP1;
开始键没有弹起再重新检测
关LED显示器
OUT81H,AL;
送到B口
绿灯亮
OUT82H,AL;
送到C口
MOVBZ,0FFH;
置标志
STI
LOP2:
检测复位键
TESTAL,10H;
检测C口的PC4端
JZLOPM;
复位键未按下即PC4=0,则跳转再检
测开始键
LOP3:
检测复位键是否弹起,即PC4=0
TESTAL,10H
JNZLOP3;
位键没有弹起,则重新检测
关LED显示器、指标灯
OUT81H,AL
OUT82H,AL
MOVBZ,00H;
清标志
JMPLOPM
中断服务子程序……
CODEENDS
ENDSTART
(2)子程序:
中断服务子程序
KEYINTPROCFAR
PUSHAX;
保护现场
PUSHBX
PUSHDX
PUSHDS
CLI;
并使本次中断压入堆栈中的IF=0
(关中断)
INAL,80H;
从8255的A口获取选手按键信息
NOTAL;
将按键字节信息取反
MOVCX,8;
计数8次
LOP4:
SHRAL,1;
获取选手号码
LOOPNZLOP4
MOVAX,CX;
把选手号传给AX
MOVBX,OFFSETTAB;
查段码(字形码)
XLAT;
将选手号转换成TAB中对应的LED
字形码
OUT81H,AL
TESTBZ,OFFH;
判断标志位是否为FFH
JZLOP5
置8253通道2计数值
MOVAL,10H
MOVAL,03H;
黄灯亮,抢答成功
OUT82H,AL
JMPKKK
LOP5:
MOVAL,00H;
MOVAL,20H
OUT42H,AL
MOVAL,05H;
红灯亮,抢答违规
KKK:
MOVAL,20H;
给8259发中断结束命令,写OCW2
OUT20H,AL
POPAX;
恢复现场
POPBX
POPDX
POPDS
IRET
KEYINTENDP