微机原理实验指导书-5

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微机原理实验指导书
(版本0.1)
余有灵副教授
控制科学与工程系
2007年12月11日
说明
本实验指导书是依据西安唐都科教仪器公司的产品手册编制,在实验中心相关领导和实验工作人员的帮助下完成的,在此表示感谢。

本次实验包括三个实验系统。

任意完成其中两个即可。

但严重建议都完成三个实验。

实验5-1 8254定时/计数器应用实验
1.实验目的
(1)掌握8254的工作方式及应用编程。

(2)掌握8254的典型应用电路接法。

2.实验设备
PC微机一台、TD-PIT+ 实验系统一套。

3.实验内容
(1)计数应用实验。

编写程序,应用8254的计数功能,用开关模拟
计数,使每当按动KK1-五次后,产生一次计数中断,并在屏幕
上显示一个字符…5‟。

(2)定时应用实验。

编写程序,应用8254的定时功能,实现一个秒
表计时并在屏幕上显示。

4.实验原理
8254是Intel公司生产的可编程间隔定时器。

是8253的改进型,比8253具有更优良的性能。

8254具有以下基本功能:
(1)有3个独立的16位计数器;
(2)每个计数器可按二进制或十进制(BCD)计数;
(3)每个计数器可编程工作于6种不同工作方式;
(4)8254每个计数器允许的最高计数频率为10MHz(8253为2MHz);
(5)8254有读回命令(8253没有),除了可以读出当前计数单元的内
容外,还可以读出状态寄存器的内容。

(6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。

计数初
值公式为n=fCLKi÷fOUTi、其中fCLKi是输入时钟脉冲的频率,
fOUTi是输出波形的频率。

图5-1-1是8254的内部结构框图和引脚图,它是由与CPU的接口、内部控制电路和三个计数器组成。

8254的工作方式如下述:
(1)方式0:计数到0结束输出正跃变信号方式。

(2)方式1:硬件可重触发单稳方式。

(3)方式2:频率发生器方式。

(4)方式3:方波发生器。

(5)方式4:软件触发选通方式。

(6)方式5:硬件触发选通方式。

图5-1-1 8254的内部接口和引脚
8254的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。

这两个控制字共用一个地址,由标识位来区分。

控制字格式如表5-1-1所示。

读回控制字格式如表5-1-2所示。

当读回控制字的D4位为0时,由该读回控制字D1~D2位指定的计数器的状态寄存器内容将被锁存到状态寄存器中。

状态字格式如表5-1-3所示。

表5-1-1 8254的方式控制字格式
表5-1-2 8254读出控制字格式
表5-1-3 8254状态字格式
5.实验说明及步骤
(1)定时应用实验
编写程序,将8254的计数器2设置为方式3,用1.8432MHz作为CLK2时钟,计数值为64H,OUT2输出为18.432KHz的时钟。

将OUT2连接到计数器0的CLK0,设置计数器0也工作在方式3,计数值为18432,相当于18432分频,则在OUT0得到1Hz的输出。

参考程序流程如图5-1-2所示。

图5-1-2 8254定时应用实验接线图
实验步骤如下。

a)确认从PC机引出的两根扁平电缆已经连接在实验平台上。

b)首先运行CHECK程序,查看I/O空间始地址。

c)利用查出的地址编写程序,然后编译链接。

d)参考图5-1-2所示连接实验线路。

e)运行程序,看数据灯显示是否正确。

8254定时应用实验代码输出1Hz
;*** *********根据查看端口资源修改下列符号值******************* IOY0 EQU 9C00H
;************************************************************** MY8254_COUNT0 EQU IOY0+00H*4 ;8254计数器0端口地址
MY8254_COUNT1 EQU IOY0+01H*4 ;8254计数器1端口地址
MY8254_COUNT2 EQU IOY0+02H*4 ;8254计数器2端口地址
MY8254_MODE EQU IOY0+03H*4 ;8254控制寄存器端口地址STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE
START: MOV DX,MY8254_MODE ;初始化8254工作方式
MOV AL,0B6H ;计数器2,方式3
OUT DX,AL
MOV DX,MY8254_COUNT2 ;装入计数初值
MOV AL,64H ;100分频
OUT DX,AL
MOV AL,00H
OUT DX,AL
MOV DX,MY8254_MODE ;初始化8254工作方式
MOV AL,36H ;计数器0,方式3
OUT DX,AL
MOV DX,MY8254_COUNT0 ;装入计数初值
MOV AL,00H ;18432分频
OUT DX,AL
MOV AL,48H
OUT DX,AL
QUIT: MOV AX,4C00H ;结束程序退出
INT 21H
CODE ENDS
END START
(2)计数应用实验
编写程序,将8254的计数器0设置为方式3,计数值为十进制5,用微动开关KK1-作为CLK0时钟,OUT0连接INTR,每当KK1-按动5次后产生中断请求,在屏幕上显示字符“5”。

参考程序流程如图5-1-3所示。

单元中GATE0已经连接了一个上拉电阻,所以GATE0不用连接。

图5-1-3 8254计数应用实验参考程序流程图
实验步骤如下。

a)确认从PC机引出的两根扁平电缆已经连接在实验平台上。

b)首先运行CHECK程序,查看I/O空间始地址。

c)利用查出的地址编写程序,然后编译链接。

d)参考图5-1-4所示连接实验线路。

e)运行程序,按动KK1-微动开关,观察是否5次后屏幕显示字符“5”。

f)可以改变计数初值,从而实现不同要求的计数。

图5-1-4 8254计数应用实验参考接线图
8254计数应用实验代码
;************根据CHECK配置信息修改下列符号值****************** INTR_IVADD EQU 01CCH ;INTR对应的中断矢量地址
INTR_OCW1 EQU 0A1H ;INTR对应PC机内部8259的OCW1地址INTR_OCW2 EQU 0A0H ;INTR对应PC机内部8259的OCW2地址INTR_IM EQU 0F7H ;INTR对应的中断屏蔽字
PCI_INTCSR EQU 9438H ;PCI卡中断控制寄存器地址
IOY0 EQU 9C00H
;**************** ********************************************** MY8254_COUNT0 EQU IOY0+00H*4 ;8254计数器0端口地址
MY8254_COUNT1 EQU IOY0+01H*4 ;8254计数器1端口地址
MY8254_COUNT2 EQU IOY0+02H*4 ;8254计数器2端口地址
MY8254_MODE EQU IOY0+03H*4 ;8254控制寄存器端口地址STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS
DATA SEGMENT
CS_BAK DW ? ;保存INTR原中断处理程序入口段地址的变量
IP_BAK DW ? ;保存INTR原中断处理程序入口偏移地址的变量IM_BAK DB ? ;保存INTR原中断屏蔽字的变量
STR1 DB 'COUNT: $' ;显示的字符串
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX, DATA
MOV DS, AX
CLI
MOV DX, PCI_INTCSR
SUB DX, 19H
IN AL, DX
MOV DX,PCI_INTCSR ;初始化PCI卡中断控制寄存器
MOV AX,1F00H ;向PCI_INTCSR中写入003F1F00H
OUT DX, AX
ADD DX, 2
MOV AX, 003FH
OUT DX, AX
MOV AX,0000H ;替换INTR的中断矢量
MOV ES, AX
MOV DI, INTR_IVADD
MOV AX, ES:[DI]
MOV IP_BAK,AX ;保存INTR原中断处理程序入口偏移地址
MOV AX, OFFSET MYISR
MOV ES:[DI],AX ;设置当前中断处理程序入口偏移地址
ADD DI,2
MOV AX, ES:[DI]
MOV CS_BAK,AX ;保存INTR原中断处理程序入口段地址
MOV AX, SEG MYISR
MOV ES:[DI],AX ;设置当前中断处理程序入口段地址
MOV DX, INTR_OCW1 ;设置中断屏蔽寄存器,打开INTR的屏蔽位
IN AL, DX
MOV IM_BAK, AL ;保存INTR原中断屏蔽字
AND AL, INTR_IM
OUT DX, AL
STI
MOV DX,OFFSET STR1 ;显示字符串
MOV AH,9
INT 21H
MOV DX,MY8254_MODE ;初始化8254工作方式
MOV AL,10H ;计数器0,方式0
OUT DX,AL
MOV DX,MY8254_COUNT0 ;装入计数初值
MOV AL, 4
OUT DX, AL
WAIT1: MOV AH,1 ;判断是否有按键按下
INT 16H
JZ WAIT1 ;无按键则跳回继续等待,有则退出QUIT: CLI
MOV DX,PCI_INTCSR ;恢复PCI卡中断控制寄存器
MOV AX, 0000H
OUT DX, AX
MOV AX, 0000H ;恢复INTR原中断矢量
MOV ES, AX
MOV DI, INTR_IVADD
MOV AX, IP_BAK ;恢复INTR原中断处理程序入口偏移地址
MOV ES:[DI],AX
ADD DI, 2
MOV AX, CS_BAK ;恢复INTR原中断处理程序入口段地址
MOV ES:[DI],AX
MOV DX,INTR_OCW1 ;恢复INTR原中断屏蔽寄存器的屏蔽字
MOV AL, IM_BAK
OUT DX, AL
STI
MOV AX,4C00H ;返回到DOS
INT 21H
MYISR PROC NEAR ;中断处理程序MYISR
MOV AL, 35H
MOV AH, 0EH
INT 10H
MOV AL, 20H
INT 10H
MOV DX,MY8254_COUNT0 ;重装计数初值
MOV AL, 4
OUT DX, AL
OVER: MOV DX,PCI_INTCSR ;清PCI卡中断控制寄存器标志位SUB DX, 19H
IN AL, DX
MOV DX, PCI_INTCSR
ADD DX, 2
MOV AX, 003FH
OUT DX, AX
MOV DX,I NTR_OCW2 ;向PC机内部8259发送中断结束命令
MOV AL, 20H
OUT DX, AL
MOV AL, 20H
OUT 20H, AL
IRET
MYISR ENDP
CODE ENDS
END START
实验5-2 16550串口控制器应用实验
1.实验目的
掌握16550的工作方式及应用。

2.实验设备
PC微机一台、TD-PIT+ 实验系统一至两套、示波器一台。

3.实验内容
串行通讯基础实验。

编写程序,向串口连续发送一个数据(55H)。

将串口输出连接到示波器上,用示波器观察数据输出产生的波形,分析串行数据格式。

4.实验原理
16550是一种连接任何类型虚拟串行接口的可编程通信接口,与Intel 微处理器完全兼容的使用非常广泛的异步接收器/发送器(UART)。

它内置了16字节的FIFO缓冲,最大通讯速率可达115Kb/s,是现代基于微处理器设备包括PC机和许多调制解调器的最普遍的通信接口。

16550的引脚如图5-2-1所示,其内部结构如图5-2-2所示。

图5-2-1 16550引脚图
图5-2-2 16550的内部结构图
(1)端口地址的使用
16550内部有11个寄存器,在芯片选择有效的前提下,由芯片的寄存器选择输入线A2,A1和A0来确定访问的寄存器,芯片中采用两条措施
来解决端口地址少的问题(只有8个地址)。

●保持寄存器和接收数据寄存器共用一个地址,以“写入”访问前者、
“读出”访问后者加以区分。

●除数寄存器的高字节与中断允许寄存器使用相同地址,高字节和接
收数据寄存器、发送保持寄存器使用相同的地址,为了区分,借
用线路控制寄存器的最高位DLAB位来区分。

访问除数寄存器时,
令DLAB位为“1”;访问接收数据寄存器、发送保持寄存器和中
断允许寄存器时,则将DLAB位置“0”。

具体说明如表5-2-1所示。

表5-2-1 16550内部寄存器地址及其选择方法
(2)寄存器控制字说明
线路控制寄存器(LCR),主要用于指定异步串行通信的数据格式。

见表5-2-2。

表5-2-2 LCR格式
线路状态寄存器(LSR),主要是向处理器提供有关数据传输的状态。

见表5-2-3。

表5-2-3 LSR格式
波特率除数寄存器,用该寄存器设置串行数据的传送波特率。

除数寄存器值=基准时钟频率÷(16×波特率)
16550芯片输入的基准时钟频率为1.8432MHz,若波特率为9600b/s,则除数寄存器值为000CH,DLH中应填00H,DLL中应填0CH。

16550常用波特率参数见表5-2-4。

表5-2-4 常用的波特率参数表
FIFO控制寄存器(FCR),16550增加了一个FIFO缓冲器,用于缓冲正在发出或接收的数据,这是早期的UART器件所没有的。

FCR各位意义见表5-2-5。

表5-2-5 FCR格式
5.实验说明及步骤
串行通讯基础实验
对16550进行编程,不断向发送寄存器写数,用示波器观察TXD信号脉冲变化,仔细分析波形,理解波形原理。

串行传输的数据格式可设定如下:传输波特率为9600baut,每个字节有一个逻辑“0”的起始位,8位数据位,1位逻辑“1”的停止位,如图5-2-3所示。

图5-2-3 16550串口应用实验参考程序流程图
实验步骤如下。

(1) 确认从PC机引出的两根扁平电缆已经连接在实验平台上。

(2) 首先运行CHECK程序,查看I/O空间始地址。

(3) 利用查出的地址编写程序,连续向发送寄存器写55H,然后编译链接。

(4) 参考图5-2-5所示连接实验线路。

并将TXD与实验装置GND同示波器相连接。

(5) 运行程序,在示波器上观察波形。

(6) 可以改变发送的数据,再仔细观察波形。

图5-2-4 串行传输的数据格式
图5-2-5 16550串口应用实验参考接线图
;16550串行通讯基础实验
;************根据查看端口资源修改下列符号值******************** IOY0 EQU 9C00H ;片选IOY0对应的端口始地址;************************************************************** MY16550_0 EQU IOY0+00H*4 ;16550数据缓冲寄存器端口地址MY16550_1 EQU IOY0+01H*4 ;16550中断允许寄存器端口地址MY16550_3 EQU IOY0+03H*4 ;16550线路控制寄存器端口地址STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE
START: MOV DX,MY16550_3 ;设置16550线路控制寄存器MOV AL,80H ;准备设置波特率除数寄存器
OUT DX,AL
MOV DX,MY16550_0 ;设置除数寄存器低字节0CH
MOV AL,0CH ;000C对应9600 bit/s
OUT DX,AL
MOV DX,MY16550_1 ;设置除数寄存器高字节00H
MOV AL,00H
OUT DX,AL
MOV DX,MY16550_3 ;设置线路控制寄存器,初始化数据格式
MOV AL,1BH ;偶校验,1位停止位,字符宽度为8
OUT DX,AL
MOV DX,MY16550_1 ;设置中断允许寄存器
MOV AL,00H ;中断不打开
OUT DX,AL
SEND: MOV DX,MY16550_0 ;向发送缓冲寄存器写数
MOV AL,55H
OUT DX,AL
CALL DALLY
MOV AH,1 ;判断是否有按键按下
INT 16H
JZ SEND ;无按键则跳回继续等待,有则退出QUIT: MOV AX,4C00H ;结束程序退出
INT 21H
DALLY PROC NEAR ;软件延时子程序
PUSH CX
PUSH AX
MOV CX,0100H
D1: MOV AX,1000H
D2: DEC AX
JNZ D2
LOOP D1
POP AX
POP CX
RET
DALLY ENDP
CODE ENDS
END START
实验5-3 8259中断控制器应用实验
1.实验目的
(1)学习中断控制器8259的工作原理。

(2)掌握可编程控制器8259的应用编程方法。

2.实验设备
PC微机一台、TD-PIT+ 实验系统一套。

3.实验内容
(1)利用PC机给实验系统分配的中断线,设计一个单中断应用。

使
用单次脉冲模拟中断产生。

编写中断处理程序,在显示器屏幕上
显示一个字符。

(2)利用实验平台上8259控制器对扩展系统总线上的中断线INTR进
行扩展。

编写程序对8259控制器的IR0和IR1中断请求进行处理。

4.实验原理
(1)8259控制器的介绍
中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片。

它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。

同时,在不需增加其他电路的情况下,通过多片8259A的级连,能构成多达64级的矢量中断系统。

它的管理功能包括:
a)记录各级中断源请求;
b)判别优先级,确定是否响应和响应哪一级中断;
c)响应中断时,向CPU传送中断类型号。

8259A的内部结构和引脚
如图5-3-1所示。

8259A的命令共有7个,一类是初始化命令字,另一类是操作命令。

8259A的编程就是根据应用需要将初始化命令字ICW1-ICW4和操作命令字OCW1- OCW3分别写入初始化命令寄存器组和操作命令寄存器组。

ICW1-ICW4各命令字格式如图5-3-2所示,OCW1-OCW3各命令字格式如图5-3-3所示,其中OCW1用于设置中断屏蔽操作字,OCW2用于设置优先级循环方式和中断结束方式的操作命令字,OCW3用于设置和撤销特殊屏蔽方式、设置中断查询方式以及设置对8259内部寄存器的读出命令。

图5-3-1 8259内部结构和引脚图
图5-3-2(a)ICW1格式
图5-3-2(b)ICW2格式
图5-3-2(c)ICW3格式
图5-3-2(d)ICW4格式
图5-3-3 OCW命令字格式
(2)8259寄存器及命令的控制访问
在硬件系统中,8259仅占用两个外设接口地址,在片选有效的情况下,利用A0来寻址不同的寄存器和命令字。

对寄存器和命令的访问控制如表5-3-1所示。

表5-3-1 8259寄存器及命令的控制访问
(3)PC微机系统中的8259
在80x86系列PC微机系统中,系统中包含了两片8259A中断控制器,经级连可以管理15级硬件中断,但其中部分中断号已经被系统硬件占用,具体使用情况如表5-3-2示。

两片8259A的端口地址为:主片8259使用020H和021H两个端口;从片使用0A0H和0A1H两个端口。

系统初始化两片8259的中断请求信号均采用上升沿触发,采用全嵌套方式,优先级的排列次序为0级最高,依次为1级、8级~15级,然后是3级~7级。

在扩展系统总线上的INTR对应的中断线就是PC机保留中断其中的一
个。

对INTR中断的初始化PC机已经完成,在使用时主要是将其中断屏蔽打开,修改中断向量。

表5-3-2 PC微机系统中的硬件中断
5.实验说明及步骤
(1)中断查询方式应用实验
8259支持查询方式检测中断请求,具体过程为:设置8259 OCW3中的P位为1即可执行查询命令,8259将下一个I/O读命令视作一次中断响应。

如果有中断请求,则置ISR中的相应位并读优先级。

从OCW3写操作到I/O读操作期间禁止中断,读出字节的最高位为1表示有中断,最低3位(D0-D2)为最高优先级中断请求源的编码。

查询字格式如图5-3-4所示。

图5-3-4 8259 OCW3查询字格式
本实验要求使用这种方法编写程序处理实验单元8259 IR0和IR1请求的中断,IR0请求在屏幕上显示字符“0”,IR0请求则在屏幕上显示字符“1”以示中断到来。

IR0和IR1分别用一个单次脉冲的上升沿模拟中断产生。


考流程如图5-3-5所示,参考实验接线图如图5-3-6所示。

图5-3-5 实验参考流程图
图5-3-6 参考实验接线图
实验步骤如下:
a)确认从PC机引出的两根扁平电缆已经连接在实验平台上。

b)运行Tdpit集成操作软件,查看系统资源分配情况,记录与所用片
选信号对应的I/O端口始地址。

c)参考实验流程图编写程序,注意使用正确的端口地址,然后编译
链接。

d)参考实验接线图连接实验线路。

e)运行程序,按动KK1+、KK1+按键,观察中断响应是否正常。

8259中断查询方式应用实验代码
;******** ***根据查看端口资源修改下列符号值******************* IOY0 EQU 9C00H ;片选IOY0对应的端口始地址
;******* ***************************************************** MY8259_ICW1 EQU IOY0+00H ;实验系统中8259的ICW1端口地址MY8259_ICW2 EQU IOY0+04H ;实验系统中8259的ICW2端口地址MY8259_ICW3 EQU IOY0+04H ;实验系统中8259的ICW3端口地址MY8259_ICW4 EQU IOY0+04H ;实验系统中8259的ICW4端口地址MY8259_OCW1 EQU IOY0+04H ;实验系统中8259的OCW1端口地址MY8259_OCW2 EQU IOY0+00H ;实验系统中8259的OCW2端口地址MY8259_OCW3 EQU IOY0+00H ;实验系统中8259的OCW3端口地址STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE
START: MOV DX,MY8259_ICW1 ;初始化实验系统中8259的ICW1 MOV AL,13H ;边沿触发、单片8259、需要ICW4
OUT DX, AL
MOV DX,MY8259_ICW2 ;初始化实验系统中8259的ICW2
MOV AL, 08H
OUT DX, AL
MOV DX,MY8259_ICW4 ;初始化实验系统中8259的ICW4
MOV AL, 01H ;非自动结束EOI
OUT DX, AL
MOV DX,MY8259_OCW1 ;初始化实验系统中8259的OCW1
MOV AL, 0FCH ;打开IR0和IR1的屏蔽位
OUT DX, AL
QUERY: MOV AH,1 ;判断是否有按键按下
INT 16H
JNZ QUIT ;有按键则退出
MOV DX,MY8259_OCW3 ;向8259的OCW3发送查询命令
MOV AL, 0CH
OUT DX, AL
IN AL, DX ;读出查询字
TEST AL, 80H ;判断中断是否已响应
JZ QUERY ;没有响应则继续查询
AND AL, 03H
CMP AL, 00H
JE IR0ISR ;若为IR0请求,跳到IR0处理程序
JNE IR1ISR ;若为IR1请求,跳到IR1处理程序
JMP QUERY
IR0ISR:MOV AL,30H ;IR0处理,显示字符0
MOV AH, 0EH
INT 10H
MOV AL,20H
INT 10H
JMP EOI
IR1ISR:MOV AL,31H ;IR1处理,显示字符1 MOV AH,0EH
INT 10H
MOV AL,20H
INT 10H
EOI: MOV DX, MY8259_OCW2 ;向实验系统中8259发送中断结束命令MOV AL, 20H
OUT DX, AL
JMP QUERY
QUIT: MOV AX,4C00H ;结束程序退出
INT 21H CODE ENDS
END START。

相关文档
最新文档