微机原理 周荷琴 答案

更新时间:2023-08-27 18:58:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

周荷琴版微机原理习题答案

第九章(并行接口,8255A)

4. 若8255A的系统基地址为2F9H,则8255A的三个端口和控制口地址各是多少?已知CPU的

系统总线为A9~A0,D15~D0,M/IO,IOR,IOW,RESET,试画出8255A的地址译码电路及它与CPU系统总线的连线图。

【解答】A、B、C和控制口的地址分别为:2F9H、2FBH、2FDH、2FFH。

5. 设8255A的的地址为:80H、82H、84H、86H。要求A口工作在方式0输出,B口工作在方

式0输入,C口高4位输入,低4位输出,试编写8255A的初始化程序。 【程序段】 mov al , 10001010b out 86h , al 6. 8255A的地址同5题,要求PC4输出高电平,PC5输出低电平,PC6输出一个正脉冲,试写

出完成这些功能的程序段。

【程序段】方法1:设置C口置位/复位字 mov al , 80h mov al , 0ch nop out 86h , al out 86h , al nop mov al , 09h nop mov al , 0ch out 86h , al nop out 86h , al mov al , 0ah mov al , 0dh out 86h , al out 86h , al 方法2:直接从C口输出数据 mov al , 80h out 86h , al mov al , 00010000b out 84h , al

nop

nop mov out

nop nop mov out

al , 01010000b 84h , al al , 00010000b 84h , al

7. 8255A的端口地址同5题,(a)若A口方式0输入,B口方式1输出,C口各位的作用是什么?

控制字是何?(b)若B口方式0输出,A口方式1输入,C口各位的作用是什么?控制字是何? 【解答】(a) PC1:OBFB,PC2:ACKB,PC0:INTRB,以上3位当联络信号,其余各位当输入/输出线。

控制字:1001×11×B (b) PC4:STBA,PC5:IBFA,PC3:INTRA,以上3位当联络信号,其余各位当输入/输出线。

控制字:1011×00×B 8. 若A口工作在方式2,B口方式0输入,C口各位的作用是什么?若A口工作在方式2,B口

方式0输出,C口各位的作用是什么? 【解答】(a)PC3:INTRA,PC4:STBA,PC5:IBFA,PC6:ACKA,PC7:OBFA;作为A口的联络信号;PC0~PC2:作B口的联络信号。 (b)PC3~PC7: 意义同上,PC0~PC2:作输入/输出线。 9. 8255的口地址为:80H~83H,8253 的口地址为84H~87H。

(1) 若A口接8个开关K7~K0,B口接8个指示灯LED7~LED0,当开关闭合上时相应的指示灯点

亮,断开时灯灭,要求每隔0.5秒检测一次开关状态,并在开关上显示出来,试画出硬件连线图,并编写出实现该功能的程序。 【方法1】中断方式。设8253的输入时钟频率为1MHz。将计数器0和1串接,从OUT1输出周期为0.5秒的负脉冲序列,用它作为中断源,接到8259A的IR2端(设中断类型是0AH)。每进入中断就检测一次开关状态。程序段如下:

周荷琴版微机原理习题答案

;8253初始化,计数器0为3方式,初值N1=10000;计数器1为2方式,初值N2=50。 mov al , 00110110b mov ax , 10000d mov al , 50d out 87h , al out 84h , al out 85h , al mov al , 01010100b mov al , ah out 87h , al out 84h , al

;8255A初始化,工作于0方式,A口输入,B口输出。 mov al , 10010000b out 83h , al

;设置中断向量,等待中断。 mov ax , 350ah in al , 21h cli ;关中断 int 21h ;取原IMR中内容 pop ax push es out 21h , al push ax ;压栈保存 push bx ;恢复原IMR的内容 and al , 11111011b push ds out 21h , al pop dx mov ax , seg int_pro pop ds ;写OCW1,打开IR2中断 mov ds , ax mov ax , 250ah wite_int: sti ;开中断 mov dx , offset int_pro int 21h jmp wite_int ;等待中断 mov ax , 250ah ;恢复原0AH类型的中断向量 mov ah , 0bh int 21h

mov ah , 4ch int 21h pop ds int 21h inc al

cli ;关中断

jnz wite_int

;允许8259A的IR2中断

;判断有无键按下,有则退出

;中断服务子程序 int_pro proc out 20h , al ;向8259A发EOI命令 in al , 80h;从A口检测开关状态 iret out 81h , al;从B口输出控制灯亮 mov al , 20h 【方法2】查询方式。8253的计数器1工作于方式2,OUT1输出接到8255A的PC4端,作为STBA信号。8255A的A口工作于方式1输入,B口工作于方式0输出。当PC4收到负脉冲后,开关状态信息被锁入A口的输入缓冲器中,它使IBFA置1。程序可查询状态字的IBFA或查询INTRA,当其为1时再执行A口输入指令,并从B口输出信号控制LED发光。接线:A口输入,接8个开关;B口输出接8个LED。开关闭合为0,打开为1;B口输出为0时LED亮,输出为1时LED灭。 连线图如下。

程序如下: ;

;8253初始化如【方法1】

;8255A初始化

周荷琴版微机原理习题答案

;(A口输入方式1,B口输出方式0) mov al , 10110000b out 83h , al ;控制程序 scan: mov ah , 1 ;有键按下? int 16h jnz exit ;有则退出程序 in al , 82 ;读C口状态字

test

jz in out jmp exit: mov int

al , 20h scan al , 80h 81h , al scan ah , 4ch 21h

;PC5(IBFA)=1 ;No,继续查询 ;读A口

;输出到B口

【方法3】查询负脉冲(这是非正规做法)。8253的计数器1工作于方式0,将OUT1输出接到8255A的PC0。8255A工作方式同上,但C口低4位输入。不断检测PC0,当其为1时检测开关状态并控制灯亮。当为0时对8253的计数器1重新写初值,启动计数器工作。程序如下: ;8255A初始化,工作于0方式,A口输入,B口输出,C口低4位输入 mov al , 10010001b out 83h , al

;8253初始化,计数器0为3方式,初值N1=10000;计数器1为0方式,初值N2=50。 mov al , 00110110b redo: mov al , 01010000b out 87h , al ;写方式字 out 87h , al ;写方式字 mov ax , 10000d nop

nop out 84h , al ;写初值

mov al , 50d mov al , ah

out 85h , al ;写初值 out 84h , al

;判断检测 in al , 82h int 21h and al , 01h inc al jz redo jnz redo mov al , 10010001b mov ah , 4ch out 81h , al int 21h mov ah , 0bh (2) 若把接在端口A上的开关去掉,要求接在B口的指示灯轮流熄灭,每只灯熄灭1秒钟。请编程

实现这种功能。

【方法1】查询方式,基本同上【方法2】。8255A的B口工作于方式1输出。8253的OUT1接到8255A的PC2端,当作ACKB信号。程序反复查询OBFB(PC1),当其为1时从B口输出数据控制指示灯亮。检测编程如下。

;8255初始化(B口工作于方式1输出) mov al , 10000100b out 83h , al

mov bl , 00000001b scan:

mov ah , 1 ;有键按下? int 16h jnz exit ;有则退出程序 in al , 82h ;读C口 test al , 02h ;PC1=1?

jz scan ;No 继续查询 mov al , bl

out 81h , al ;从B口输出 rol bl , 1 jmp scan exit:

mov ah , 4ch int 21h

【方法2】方法基本同上(方法3),不同点是8253的计数器1工作于方式2,要求不断探测PC0,当其为0时改变熄灭的灯。要注意,控制灯熄灭后要延时一段时间(0.5秒>T>0.01秒一个脉冲宽度)。 mov al , 10000001b out 83h , al ;8255A工作于0方式, B口输出,C口低4位输入

;8253初始化,计数器0为3方式,初值N1=10000;计数器1为2方式,初值N2=100。 mov al , 00110110b mov ax , 10000d out 87h , al ;计数器0为3方式 out 84h , al ;对计数器0写初值

周荷琴版微机原理习题答案

mov al , ah mov al , 50d out 84h , al out 85h , al ;对计数器1写初值 mov al , 01010100b out 87h , al ;计数器1为2方式 ;判断检测 mov bl , 1 ;置初值,灯0熄灭 redo: call delay ;延时 in al , 82h ;读C口数据 mov ah , 0bh and al , 01h ;PC0=0? int 21h ;探测是否有键按下

inc al jnz redo ;非0继续探测

jnz redo ;没有则继续探测 mov al , bl

out 82h , al mov ah , 4ch rol bl , 1 int 21h 注:delay是延时子程序,B口输出0灯亮,输出1灯熄灭。

10. 某病房有8个病人,病员号为0~7,每人床头有一个开关,使任一病人按下开关时,相应的LEDi

发光二极管点亮,其中i为病员号。试设计硬件系统,并编写有关程序。

【编程】设8255A的地址为80H、81H、82H、83H,8255A工作于0方式,A口输入, B口输出。 mov al , 10010000b nop jnz re_test

nop mov al , 4ch out 83h , al ;

mov ah , 0bh int 21h re_test:

int 21h in al , 80h

inc al out 81h , al

D7第十章习题(串行接口,8251)

6. 若某一终端以2400波特的速率发送异步串行数据,发送1位需要多少时间?假设一个字符包

含7个数据位、1个奇偶校验位、一个停止位,发送一个字符需要多少时间? 【解答】发送1位信息需0.42ms,发送1个字符需4.2ms。

周荷琴版微机原理习题答案

9. 若8251A以9600波特的速率发送数据,波特率因子为16,发送时钟TxC频率为多少? 【解答】TxC的频率=153.6KHz

12. 在一个以8086为CPU的系统中,若8251A的数据端口地址为84H,控制口地址为86H,试

画出地址译码电路、数据总线和控制总线的连线图。

13. 设8251A的端口地址为84H、86H,要求8251A工作于内同步方式,同步字符为2个,用偶

校验,7个数据位,试对8251A进行初始化编程。 【编程如下】 mov al , 0 out 86h , al delay out 86h , al delay out 86h , al delay

mov out delay mov out delay mov

al , 40h 86h , al al , 00111000b 86h , al al , 16h

out delay out mov out delay

86h , al 86h , al

al , 10010101b 86h , al

14. 若8251A的端口地址为FF0H,FF2H,要求8251A工作于异步方式,波特率因子为16,7个

数据位,1个奇校验位,1个停止位,试对8251A进行初始化编程。 【编程如下】复位字:40H,工作方式字:5AH,命令字:17H,15H mov dx , 0FF2h out dx , al out mov al , 0 delay delay out dx , al mov al , 40h mov delay out dx , al out out dx , al delay delay delay mov al , 01011010b

dx , al

al , 00010101b

dx , al

16. 某微机系统用串行方式接受外来的数据,再把数据送到CRT上显示,若波特率为1200,波特

率因子为16,每字符7个数据位,奇校验,1个停止位。 用8253产生收发时钟,系统时钟频率为5MHz,收发数据个数为COUNT,数据存放到数据段中以BUFFER为首地址的内存单元中。8251A和8253 的基地址分别为304H和300H。 (1) 画出系统硬件连线图。

(2) 编写8251A和8253的初始化程序。 (3) 编写接受和发送数据的程序。 【解答】 (1) 图请自画 (2) 【编程】

8253初始化 mov dx , 303h mov al , 00110110b out dx , al ;8251A初始化 mov dx , 305h mov al , 0 out dx , al delay out dx , al delay

mov mov out out delay mov out delay mov

dx , 300h ax , 260 dx , al dx , al al , 40h dx , al al , 01011010b

mov out

al , ah dx , al

out delay mov out delay

dx , al

al , 00010101b dx , al

周荷琴版微机原理习题答案

(3) 收发程序 接收程序 lea bx , buffer mov cx , count test_s: mov dx , 305h in al , dx 发送程序 mov bx , 0 mov cx , count test_t:: mov dx , 305h in al , dx test al , 02h jz test_s test al ,38h jnz error

mov dx , 304h test al , 01h jz test_t mov dx , 304h mov al , buffer[bx] out

dx , al

in mov inc loop

inc loop … error:

al , dx [bx] , al bx test_s

bx test_t

本文来源:https://www.bwwdw.com/article/qgji.html

Top