77范文网 - 专业文章范例文档资料分享平台

《现代微机原理与接口技术》第2版部分习题答案(7)

来源:网络收集 时间:2018-12-05 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

检测程序如下: MOV AL, 10000010B ; A口为输出,B口为输入,

OUT 63H, AL ; C口上下半全输出,全为方式0

MOV AL, 0 OUT 60H, AL MOV AL, 00000000B ; 将PC0(G1)清0,不使能138 OUT 62H, AL IN AL, 61H CMP AL, FFH JZ TEST1 JMP ERROR TEST1: MOV AL, 00000011B ; 将PC1 (G2A)置1,不使能138 OUT 62H, AL IN AL, 61H CMP AL, FFH JZ TEST2 JMP ERROR TEST2: MOV AL, 00000101B ; 将PC2 (G2B)置1,不使能138 OUT 62H, AL IN AL, 61H CMP AL, FFH JZ TEST3 JMP ERROR TEST3: MOV AL, 00000001B ;使能138 OUT 62H, AL MOV CX, 7 ; 从CBA为111检测到CBA为000,

MOV BX,FF7FH ; 所以第一个输出0的是Y7。也就是PB7应该为0

TEST4: MOV AL,CL

OUT 60H, AL JMP $+2 IN AL, 61H CMP AL, BL JZ TEST5 ; 如果相等则这一个CBA组合通过验证,继续检验 JMP ERROR ; 否则转出错

TEST5: CMP CX,0

JZ SUCCESS ; 如已检查到CBA输入组合为000,检验成功结束。 SAR BX,1 ; 检测138输出的0右移一位。 DEC CX ;将138的CBA组合减1 JMP TEST4

ERROR: ……

SUCCESS: ……

7. 某8255芯片的A口和B口分别与8个LED灯和8个开关连接好,通过开关控制LED

31

等的开和闭。8255的端口地址为40, 42, 44和46H。画出译码电路图,编写初始化程序和控制程序。

答:

;初始化程序如下: MOV AL, 10000010B OUT 46H, AL ;控制程序如下:(开关闭合LED亮,否则LED灭 IN AL, 42H NOT AL ;按位取反 OUT 40H, AL

电路连接图如下:

U?AD0AD1AD2AD3AD4AD5AD6AD7IOR#IOW#A1A2343332313029282753698356D0D1D2D3D4D5D6D7RDWRA0A1RESETCSPA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7PC0PC1PC2PC3PC4PC5PC6PC743214039383718192021222324251415161713121110U?A5A6A7A8A9123456ABCE1E2E374ALS138Y0Y1Y2Y3Y4Y5Y6Y715141312111097U?A0NOTVCC8255 8. 试把例7.5改成中断方式,并加软件去抖动。给出硬件连接图和有关程序段。 答:

键盘扫描程序放到中断处理程序中即可。程序略

10. 有个1μs的脉冲信号源送8253的计数器1利用软件方式扩大定时1秒,每秒钟从

32

8255的PA口读入一组开关数并送PB口的LED管显示,设8253,8255的端口地址分别为40H~43H和60H~63H,且只用10条地址线(A0~A9)用于端口译码。请完成:

① 硬件连接。

② 编写对8253计数器1初始化程序段(仅50ms)

③ 编写对8255的初始化程序以及1秒到后从PA口读入一个字节开关数并送PB口显示的程序段。

分析:题目中要求用软件方式将1μs(1MHz)的脉冲扩大定时到1秒,题目第二问又明确8253的计数器1输出脉冲周期是50ms(20Hz),显然,向系统提出的中断频率是每秒20次,在中断处理程序中,用软件的方法使用变量计数到20次后读PA口开关状态,并同时向PB口输出。

答:

1) 电路图如下:

U?AD0AD1AD2AD3AD4AD5AD6AD787654321D0D1D2D3D4D5D6D7CSRDWRA0A18254U?OUT2GATE2CLK2OUT0GATE0CLK010119VCC21IOR#22IOW#23A0A11920OUT1GATE1CLK1131415IRQ1MHz20HzVCCU?AD0AD1AD2AD3AD4AD5AD6AD7IOR#IOW#A0A1343332313029282753698356D0D1D2D3D4D5D6D7RDWRA0A1RESETCSPA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7PC0PC1PC2PC3PC4PC5PC6PC743214039383718192021222324251415161713121110171618ORU?A5A6A7A8A9123456ABCE1E2E374ALS138Y0Y1Y2Y3Y4Y5Y6Y715141312111097ORU?A4NOTORA2A38255注意在上图中的译码电路将A0~A910根线全部使用,使得各个芯片的地址范围被严格限制。

2)8253的初始化程序: MOV AL, 01110110B ; 计数器1方式3,二进制 OUT 43H, AL MOV AX, 50000 OUT 41H, AL MOV AL, AH OUT 41H, AL

3)8255初始化

MOV AL, 10011000B ;A口方式0输入,B口方式0输出 OUT 63H, AL 中断处理程序如下: ……

TIMES DB 0 ……

SERVICE PROC

33

PUSHA MOV AL, TIMES INC AL

MOV TIMES, AL CMP AL, 20 JNZ EXIT ; 没有计数到20次,说明1秒没到,退出中断处理程序 IN AL, 60H NOT AL OUT 61H, AL EXIT: POPA

IRET

SERVICE ENDP

11. 用8086, 8255, 8259和8254构造系统实现对指示灯控制。8255的PA0, PA1, PA2接三位DIP开关,通过DIP开关的闭合状态决定接在PB口上的八个指示灯之一闪烁。如PA2, PA1, PA0为000时,PB0上所接指示灯闪烁,其余灯熄灭。要求闪烁频率为每秒10次。设8259地址为20H和21H,8255地址为60H~63H,8254地址为40H~43H,时钟频率为50kHz,8259A中断向量号为70H和71H。试设计硬件连接电路,填写中断向量表,编写全部初始化程序,完成控制程序编写。

分析:

1)指示灯闪烁可以有两种方法,一种是利用8254出来的方波信号和PB口出来的指示灯信号通过组合电路来实现灯的闪烁(硬件控制法,如同PC机的扬声器控制那样),另一种方法是利用中断,用中断处理程序来控制闪烁(软件控制法)。本题提供有两个中断向量(类型)号,说明希望大家使用两个中断,一个自然是PA上的开关动作的时候产生中断(如同小键盘那样),而另一个中断显然是出题者希望大家用软件控制法去闪烁指示灯。

2)如果闪烁频率每秒10次,显然中断频率就要是每秒20次(一半时间熄灯一半时间亮灯)。该中断又可以有两种方法产生,一种是从8254的OUT脚出来后直接接到8259A的IRQ脚,还有一种是让8255的PB口工作在方式1,让8254的OUT引脚每隔50ms发一个负脉冲给PC2(ACK)则PC0会自动在ACK的上升沿发出中断。

3)下面我们还要讨论的是8259A究竟用IRQ几,从题目可知中断向量号是70H和71H,我们知道,中断向量(类型号)的高5为由ICW2提供,低3位就是IRQi中的i,所以,显然是使用IRQ0和IRQ1。

4)DOS下(实地址模式)中断向量表的填写也有两种方法,第一种是使用DOS功能调用,如教材中166页的例子。第二种方法是从0000:0000开始,按照中断向量(类型)号×4算出偏移,然后从低到高连续4个字节分别放中断处理程序的入口地址的偏移量(2字节)和段地址(2字节)。如假设中断向量号为3的中断的入口地址是1234H:5678H,则3H*4H=0CH,所以0000:000C~0000:000F的4个字节的内容分别是:78H、56H、34H、12H(注意,PC机中存储采用低字节放在低地址,高字节放在高地址,见教材P14),本题我们采用DOS功能调用。

答:

1) 电路图如下(由于译码部分和前几题一样,故译码部分省略,8086部分也省略),其

中PB工作在方式1。

34

U?D0D1D2D3D4D5D6D787654321D0D1D2D3D4D5D6D7CSRDWRA0A18254U?D0D1D2D3D4D5D6D71110987654D0D1D2D3D4D5D6D7A0CSRDWRSP/ENINTINTA8259AIR0IR1IR2IR3IR4IR5IR6IR71819202122232425OUT2GATE2CLK2OUT0GATE0CLK010119U?OUT1GATE1CLK11320Hz141550KHzVCC171618D0D1D2D3D4D5D6D7IOR#IOW#A0A1CS55#343332313029282753698356D0D1D2D3D4D5D6D7RDWRA0A1RESETCSPA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7PC0PC1PC2PC3PC4PC5PC6PC7825543214039383718192021222324251415161713121110VCCU?U?XORXORCS54#21IOR#22IOW#23A0A11920A027CS59#1IOR#3IOW#216INTR17INTA26单稳态触发器CAS0CAS1CAS2121315

初始化程序如下: 8253的初始化程序: MOV AL, 01110100B ; 计数器1方式2,二进制 OUT 43H, AL MOV AX, 2500 OUT 41H, AL MOV AL, AH

OUT 41H, AL ;8255初始化

MOV AL, 10011100B ;A口方式0输入,B口方式1输出 OUT 63H, AL MOV AL, 00000101B ; 将PC2置位,使能PB口方式1的中断 ;8259初始化

MOV AL, 00010011B ; 边沿触发,单片使用,要ICW4 OUT 20H, AL ; ICW1 JMP SHORT $+2 MOV AL, 70H ;中断类型号高位 OUT 21H, AL ; ICW2 JMP SHORT $+2 MOV AL, 00000001B ; 非总线缓冲方式,全嵌套,正常的中断结束 OUT 21H, AL ; ICW4 JMP SHORT $+2 ;填写中断向量表

MOV AX, CODE ; 写入新的70H中断向量 MOV DS,AX

MOV DX,OFFSET INT70 MOV AX,2570H

INT 21H MOV AX, CODE ; 写入新的71H中断向量 MOV DS,AX

MOV DX,OFFSET INT71

35

MOV AX,2571H

INT 21H

; 中断处理程序(控制程序) FLAG DB 0 ;0表示不显示,1表示显示 LED DB 0 ;记录PB口的输出 TB DB 1H,2H,4H,8H,10H,20H,40H,80H;这是一张PA输入

;对照PB输出状态的一个对照表

PROC ; 70H中断主要是完成闪烁 PUSHA ; 保护现场

INT70

MOV AL, FLAG CMP AL, 0 JZ DISP ;如AL为0,则直接将全0输出到PB口,灯熄灭 MOV AL, LED ;否则将LED中的输出记录从PB口输出,使灯亮

DISP: OUT 61H, AL ;PB口输出

XOR AL, FFH ;FLAG状态取反

MOV FLAG, AL POPA

; 恢复现场

IRET

INT70 ENDP INT71 PROC ; 71H中断主要是读取A口状态并设置LED变量的值

PUSHA ; 保护现场 IN AL, 60H ; 读8255A口

MOV AH, 0 MOV SI, AX MOV AL, TB[SI] MOV LED, AL POPA

;设置访问TB表的索引

;取出和开关状态对应的PB口输出值 ;存到LED变量中。 ; 恢复现场

IRET

INT71 ENDP

***********************************

注意,本习题答案中,多处用到PROTEL绘制电路图,这里对于数据总线的绘制比较详细,大家在实际答题的时候可以一般简化,比如将8根线合成一根线来话,然后标明是8根线就行。

36

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库《现代微机原理与接口技术》第2版部分习题答案(7)在线全文阅读。

《现代微机原理与接口技术》第2版部分习题答案(7).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/345552.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: