STOSW MOV STOSW HLT
AX,SEG INTER ;段基值写入中断向量表
7.108253-5的通道0按方式3工作,时钟CLK0的频率为1MHz,要求输出方波的重复频率为40KMHz,此时应如何写入计数值。 解:
通道0 方式3 fCLK0 =1MHz fOUT0=40KHz n0 = fCLK0 / fOUT0 = 1MHz / 40KHz = 25
MOV AL , 00010111 (17H) OUT 83H , AL MOV AL , 25H OUT 80H , AL
( 设8253的端口地址为80H~83H )
7.11设8253-5与8086相连,8253-5的时钟频率为2 MHz,其口地址为340H~343H,通道0工作于定时方式,要求每20 ms向8086发出一中断请求信号,通道1要求输出频率为1000 Hz的方波,请编写初始化程序。 解:
8253的端口地址为340H~343H , fCLK=2MHz ,TCLK = 0.5μs 8253计数器0: TOUT0 = 20ms
计数器1:fCLK1=1KHz TOUT1 = 1ms
n0 = TOUT0 / TCLK0 = 20ms / 0.5μs = 40000 n0 = TOUT0 / TCLK0 = 1ms / 0.5μs = 2000
MOV
AL,00110100B (34H) ;通道0初始化 DX,343H DX,AL AX,40000 DX,340H DX,AL AL,AH DX,AL
AL,01100111 (67H);通道1初始化
MOV OUT
MOV
MOV OUT
MOV
OUT
MOV
26
MOV OUT
DX,343H DX,AL AL,20H DX,341H
MOV
MOV
OUT DX,AL
7.128255A的PA口写8个LED管连接如习图7-4,用8253作定时器控制8个LED管自下向上闪动,8253连接如习图7-5,闪动频率为每秒10次(即每秒钟每个LED管亮10次),8253三个计数通道和控制字寄存器的地址为40H~43H,8255A的端口地址为60H~63H,其控制程序如下: 主程序 … MOV AL,80H (1) OUT 63H,AL (2) MOV AL,34H (3) OUT 43H,AL (4) MOV AL,0A8H (5) OUT 40H,AL (6) MOV AL,61H (7) OUT 40H,AL (8) MOV AL,7FH (9) OUT 60H,AL (10) STI
LOP: HLT
JMP LOP 中断服务程序: INTROUT SEGMENT AT 1480H (11) ORG 3000H (12) ROR AL,1 (13) OUT 60H,AL (14) IRET (15) 试问:(1)从程序中给出的数据,计算8253中CLK0 的时钟周期TCLK0,以及该控制程序中所使用的中断服务程
序的中断类型号n的值,中断向量表见习图7-6。
(2)若闪动频率改为1分钟1次,且为自上到下闪动, 可采用如习图7-7所示的串接形式,中断类型为(1)中 8-15
习图7-4
习7-5图
27
计算值加1,请对程序作最小程度的更改,以满足上述要求(计数通道0工作不变)。
习图7-6 习图7-7
解::
(1)从主程序看,计数初值为61A8H=25000 n0 = Tout0 / TCLK0, TCLK0= Tout0 / n0 Tout0 = 1/10s÷8 = 12.5 ms fCLK0 = 1/TCLK0 = 2MHz
从中断服务程序看,中断向量为1480H:3000H,查中断向量表得中断向量的表指针为00034H,00034H/4=13=0DH(中断类型号)。这里必须指出中断向量的高8位1480H存在表内高地址,低8位3000存在表内低地址,因此所查中断向量从低地址到高地址为00H,30H,80H,14H。
(2)闪动频率改为1分钟1次即60秒内8个LED各亮1次。每管亮60秒/8 = 7.5秒
TCLK1=TOUT0=12.5ms,TOUT1=7.5s n1=TOUT1/TCLK1=7.5s/12.5ms=600=0258H
在主程序中指令(8)与指令(9)之间插入对计数通道1的初始化程序:
TCLK0 = Tout0 / n0 = 12.5 ms / 25000 = 0.5μs
MOV OUT
AL,74H 43H,AL AL,58H 41H,AL
28
MOV OUT
MOV OUT
AL,02H 41H,AL
AL,FEH
指令9 MOV AL,7FH改为MOV
据题意此时中断类型号为上一小题的ODH+1=0EH,0EH×4=38H,查表得中断向量为3000:1480H。
7.13让8253计数器0在1ms脉冲信号源作CLK0且工作在方式3定时1分钟,
用8255的PC6提供GATE0,在定时期间,由PC7控制的灯亮(PC7=1,亮),对OUT0的检测通过PC0进行,定时结束灯灭,先画出脉冲信号源、8253、8255的连接关系图,再编写程序段。(8253,8255采用PC机上的端口地址) 解:
(1) ①连接图见图2.39 ( 图中电阻R接PC7 )
图2.39
②程序段:
MOV OUT
AL,81H ;8255方式字 63H,AL
AL,36H ;8253计0初始化 43H,AL AL,60H 40H,AL AL,0EAH 40H,AL
MOV OUT
MOV OUT
MOV OUT
29
MOV OUT
AL,0DH ;GATE0=1 63H,AL
AL,0FH ;灯亮 63H,AL
AL,62H ;等待半分钟高电平结束 AL,1 LOP1
AL,62H ;等待半分钟低电平结束 AL,1 LOP2
AL,0EH ;灯灭 63H,AL
MOV OUT
LOP1: IN
SHR JC
LOP2: IN
SHR JNC
MOV OUT HLT
7.14. 有个1μs的脉冲信号源送8253的计数器1利用软件方式扩大定时1秒,每秒钟从8255的PA口读入一组开关数并送PB口的LED管显示,设8253,8255的端口地址分别为40H~43H,60H~63H且只用10条地址线(A0~A9)用于端口译码。
(1)请完成①画出脉冲信号源与8253,8255以及开关组和LED管之间的连接关系; ②写出8253和8255的-CS的表达式;
③画出8253和8255的-CS的逻辑电路。 (2)编写程序段:
① 编写对8253计数器1初始化程序段(仅50ms); ② 编写对8253的初始化程序以及一秒到后从PA口读入一个字节开关数并送PB口显示的程序段。
解:
① a. 连接图见图2.39
30