(3)在微机系统中,利用总线实现芯片内部、印刷电路板各部件之间、机箱内各插件板之间、主机与外部设备之间或系统与系统之间的连接与通信。总线是构成微型计算机应用系统的重要技术,总线设计好坏会直接影响整个微机系统的性能、可靠性、可扩展性和可升级性。
第7章作业 P281
6. 如果中断类型号n=4,它的中断服务子程序的入口地址为CS:IP=0485:0016H,它在中断向量表中如何存放? 解:
中断类型号n=4,中断向量指针=中断类型号×4=n×4=10H
从内存中断向量指针00010H开始的单元开始存放中断向量, CS占高2个字节, IP占低2个字节。具体如下:
00010H 00011H 00012H 00013H
11. 8086中断响应和处理有哪些主要步骤? 答:
(1)CPU响应中断的条件为:外设提出中断申请,CPU允许中断(本中断位未被屏蔽,本中断位优先级别最高),当前指令执行完。
(2)CPU在INTR引脚上接到一个中断请求信号,如果此时IF=1,本中断位未被屏蔽,CPU就会在当前指令执行完以后开始响应外部的中断请求,这时,CPU在INTA引脚连续发两个负脉冲,第一个负脉冲用来通知外设,CPU准备响应中断,外设在接到第二个负脉冲以后,在数据线上发送中断类型码,接到这个中断类型码后,CPU做如下动作:
① 将中断类型码放入暂存器保存; ② 将标志寄存器内容压入堆栈; ③ 将IF和TF标志清0; ④ 保护断点;
⑤ 根据取到的中断类型码,计算中断向量指针,在中断向量表中找出相应的中断向量,将其装入IP和CS,即自动转向中断服务子程序;
⑥ 中断返回。 第8章 作业 P253
1. 8253芯片有几个计数通道?每个计数通道可工作于哪几种工作方式?这些操作方式的主要特点是什么? 答:
(1)8253芯片有3个计数通道。
(2)每个计数通道均可工作于6种工作方式。方式1—可重复触发的单稳态触发器,方式2—自动重装初值的N分频器,方式 3 —方波发生器,方式4—软件触发的选通信号发生器,方式5—硬件触发的选通信号发生器。
输出波形:0、1 单稳输出,2、4、5 为单次负脉冲,3 为方波。2、3 为连续波形,其余为不连续波形;1、5 可硬件重复触发。
初始电平:写入控制字,只有0为低电平,其余均为高电平;写入初值,在GATE有效的情况下(计数期间),0、1为低电平,2、3、4、5均为高电平。
16H 00H 85H 04H 37
触发方式:
0、4为电平触发,上升沿继续。0是GATE=0停止计数, GATE再次为1,从中止处继续。4是GATE=0停止, GATE再次为1,从原装初值开始计数。
1、5为边沿触发,计数过程中再次出现GATE上升沿,计数器按原装初值开始计数。
2、3为电平触发,上升沿有效,GATE=0停止计数,计数过程中再次出现GATE上升沿,计数器按原装初值开始计数。
计数过程重新写入初值:
0、4----在GATE=1时,立即按新初值开始计数。
1、5----不影响目前的计数,只有在GATE再次出现上升沿时,按新初值开始计数。
2、3----不影响本次输出,本次计数结束后,若GATE=1,(重装新初值)按新初值开始计数。 自动重装能力:2、3 具有自动重装能力(其余没有),可输出连续的波形。 可重复触发能力:1、5具有可重复触发能力(其余没有)。
2. 8253的最高工作频率是多少?8254与8253的主要区别是什么?
解:8253的最高工作频率是2MHz。8254是8253的增强型产品,引脚兼容,功能几乎完全相同,其主要区别在于:
(1)8253的最高工作频率是2MHz,而8254的最高工作频率是10MHz;
(2)8254具有读回功能,可以同时锁存1----3个计数器的计数值及状态值,供CPU读取,而8253每次只能锁存和读取一个通道的计数器,且不能读取状态值。
4. 设8253的通道0----2和控制口的地址分别为300H、302H、304H、306H,设系统的时钟脉冲频率为2MHz。要求:
(1)通道0输出1KHz的方波;
(2)通道1输出频率为500Hz的序列负脉冲; (3)通道3输出单脉冲,宽度为400μs。 试画出硬件电路图,编写各通道的初始化程序。
解:8253的口的地址分别为300H、302H、304H、306H,连续的偶地址,说明CPU为8086.
(1)通道0输出1KHz的方波,应工作在方式3。2MHz/1KHz=2000,则可得通道0的定时初值为2000。 (2)通道1输出频率为500Hz的序列负脉冲,应工作在方式2。2MHz/500Hz=4000, 通道1的定时初值=4000
(3)通道2输出单脉冲,宽度为400μs,应工作在方式0 , 通道2的定时初值=400μs/(1/ 2MHz)-1=799。 硬件连结图如下图所示。
38
8253的初始化程序: ;通道0初始化程序
MOV DX,306H
MOV AL,00110111B ;通道0控制字,读写两字节,方式3,BCD码计数 OUT DX, AL MOV DX,300H
MOV AL, 00H OUT DX, AL ;写人低字节 MOV AL, 20H
OUT DX, AL ;写人高字节 ;通道1初始化程序
MOV DX,306H
MOV AL,01110101B ;通道1控制字,读写两字节,方式2,BCD码计数 OUT DX, AL ;写人方式字 MOV DX,302H
MOV AL, 00H ;低字节 OUT DX,AL ;写人低字节 MOV AL, 40H
OUT DX, AL ;写人高字节 ;通道2初始化程序
MOV DX,306H
MOV AL, 10110001B ;通道2方式字,读写两字节,方式0,BCD码计数 OUT DX,AL MOV DX,304H
MOV AL,99H ;计数初值字节 OUT DX,AL ;写人低字节
MOV AL, 07H
OUT DX, AL ;写人高字节 HLT
5. 设8254的端口地址为40----43H,时钟频率f=5MHz,通道2接1个LED指示灯。要求LED指示灯点亮4秒钟后,再熄灭4秒钟后。并不断重复该过程。试编写8254初始化程序。 解:
LED指示灯点亮4秒钟后,再熄灭4秒钟后。并不断重复该过程。利用通道2输出接LED指示灯,需要产生周期为8秒的方波。
将5MHz时钟加到CLK2端,OUT2输出的方波脉冲周期最大为0.2μs×65536=13107.2μs=13.1072ms,达不到8秒。此时可以使用2个8254通道级连方式来实现。若级连1、2通道,设其初值分别为N1和N2,8s/(1/5MHz) =40000000,则级连后作为一个整体的计数值为N=20000000=N1×N2=5000×8000。
通道1,可选方式2或3,
通道2,选方式3,连续波形,实现不断重复。 N1=5000 N2=8000 ;通道1初始化程序
MOV AL, 01110101B ;通道1方式字,读写两字节,方式2,BCD码计数 OUT 43H,AL
MOV AX, 5000H
OUT 41H,AL ;写人低字节
MOV AL, AH
OUT 41H, AL ;写人高字节 HLT
;通道2初始化程序
MOV AL,10110111B ;通道2控制字,读写两字节,方式3,BCD码计数 OUT 43H, AL
MOV AX, 8000H OUT 42H, AL ;写人低字节
39
MOV AL, AH
OUT 42H, AL ;写人高字节
14. 设8253的通道0----2和控制口的地址分别为300H、302H、304H、306H,定义通道0工作在方式3,CLK0=2MHz,使编写初始化程序,并画出硬件连接图。要求通道0输出1.5KHz的方波,通道1用通道0的输出作计数脉冲,输出频率为300Hz的序列负脉冲。通道2每秒钟向CPU发50次中断请求。 解:
8253的口的地址分别为300H、302H、304H、306H,连续的偶地址,说明CPU为8086.
(1)通道0输出1.5KHz的方波,应工作在方式3,2MHz/1.5K Hz=1334,则可得通道0的定时初值为1334=536H。
(2)通道1用通道0的输出作计数脉冲,输出频率为300Hz的序列负脉冲,应工作在方式2, 1.5K Hz /300Hz =5。通道1的定时初值为5。
(3)通道2每秒钟向CPU发50次中断请求,可工作在方式2(或方式3),以2MHz信号作计数脉冲, 2MHz /50Hz=40000=9C40H。通道2的定时初值9C40H(也可用通道1的输出作计数脉冲) 硬件连结图如下图所示。
8253的初始化程序: ;通道0初始化程序
MOV DX,306H
MOV AL,00110110B ;通道0控制字,读写两字节,方式3,二进制计数 OUT DX, AL MOV DX,300H
MOV AX, 536H OUT DX, AL ;写人低字节 MOV AL, AH
OUT DX, AL ;写人高字节 ;通道1初始化程序
MOV DX,306H
MOV AL,01010100B ;通道1控制字,只读写低宇节,方式2,二进制计数 OUT DX, AL ;写人方式字 MOV DX,302H
40