微机原理与接口技术习题集3.docx

上传人:b****6 文档编号:3460094 上传时间:2022-11-23 格式:DOCX 页数:105 大小:1.56MB
下载 相关 举报
微机原理与接口技术习题集3.docx_第1页
第1页 / 共105页
微机原理与接口技术习题集3.docx_第2页
第2页 / 共105页
微机原理与接口技术习题集3.docx_第3页
第3页 / 共105页
微机原理与接口技术习题集3.docx_第4页
第4页 / 共105页
微机原理与接口技术习题集3.docx_第5页
第5页 / 共105页
点击查看更多>>
下载资源
资源描述

微机原理与接口技术习题集3.docx

《微机原理与接口技术习题集3.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术习题集3.docx(105页珍藏版)》请在冰豆网上搜索。

微机原理与接口技术习题集3.docx

微机原理与接口技术习题集3

551.编写8253计数器0工作于方式3,计数器1工作于方式4,计数器2工作于方式0进行中断传送的程序

【参考答案】P185例159

程序如下:

START:

MOV

DX,04C6H

;设置8253控制口地址

MOV

AL,00110110B

;二进制、方式3、写16位计数器

OUT

DX,AL

;控制字写入计数器0的控制寄存器

MOV

DX,04C0H

;设置8253计数器0地址

MOV

AX,09C4H

;计数初值

OUT

DX,AL

;写入初值低8位

MOV

AL,AH

OUT

DX,AL

;写入初值高8位

MOV

BL,00H

;灯亮或灭的标志

MOV

DX,04B0H

;8259A的偶地址

MOV

AL,00010011B

;设置ICW18259初始化控制字ICW1

OUT

DX,AL

;写入ICW1

MOV

DX,04B2H

;8259A的奇地址

MOV

AL,50H

;设置ICW18259初始化控制字ICW2

OUT

DX,AL

;写入ICW2

MOV

AL,00000001B

;设置ICW18259初始化控制字ICW4

OUT

DX,AL

;写入ICW4

MOV

AL,0FEH

OUT

DX,AL

;写入OCW1

MOV

AX,OFFSETINTR1

;设置中断服务程序INTR1的偏移地址

MOV

WORDPTR[140H],AX*4

;中断矢量表地址为50H*4

MOV

AX,SEG,INTR1

;设置中断服务程序INTR1所在段地址

MOV

WORDPTR[142],AX

MOV

AX,OFFSETINTR2

;设置中断服务程序INTR2所在段地址

MOV

WORDPTR[144H],AX*4

;中断矢量表地址为51H4

MOV

AX,SEGINTR2

;设置中断服务程序INTR2所在段地址

MOV

WORDPTR[146],AX

MOV

DX,04C6H

;设置8253控制口地址

MOV

AL,01011000B

OUT

DX,AL

;将控制字写入计数器1的控制寄存器

MOV

DX,04C6H

;设置8253控制口地址

MOV

AL,10110000

OUT

DX,AL

;控制字写入计数器2的控制寄存器

MOV

DX,04C2H

;设置8253计数器1地址

MOV

AL,64H

;设置计数器初值

OUT

DX,AL

;计数器初值写入8253计数器1

MOV

04C4H

;设置8253计数器2地址

MOV

AL,00H

;写低字节

OUT

DX,AL

;计数值低字节写入计数器2

MOV

AL,10H

;写高字节

OUT

DX,AL

;计数值高字节写入计数器2

STI

;开中断

AA:

HLT

;等待中断

JMP

AA

INTR1

PROC

FAR

CLI

;禁止中断

MOV

DX,04C2H

;设置8253计数器1地址

MOV

AL,00H

;高字节,置新初值,启动工作

OUT

DX,AX

;激数值高字节写入计数器1

MOV

AL,10H

;低字节

OUT

DX,AL

;计数值低字节写入计数器1

STI

;开中断

IRET

INTR1

ENDP

INTR2

PROG

FAR

CLI

;禁止中断

MOV

DX,04A0H

;74LS373的地址

CMP

BL,00H

;灯闪烁判断

JZ

AA2

;BL=00灯亮

MOV

AL,00H

;BL=01灯灭

OUT

DX,AX

MOV

BL,00H

;重新设标志

JMP

AA3

AA2:

MOV

AL,0FFH

;灯亮

OUT

DX,AL

MOV

BL,01H

;重新设标志

AA3:

STI

;开中断

IRET

INTR2

ENDP

CODE

ENDS

END

START

552.8253如何与CPU接口

【参考答案】P185例160

8253通过地址总线、数据总线、控制总线与CPU相连接没Intel8253的数据总线引脚D7~D0可直接连到CPU的数据总线上,CPU通过数据总线向8253传送控制字与计数初值,Intel8253的片选

可由CPU的高地址经译码后提供。

CPU的地位地址线A1、A0,用于选择8253内部寄存器。

8253的

直接连至CPU的读、写控制线

,以便CPU能对8253进行读、写操作。

图125是CPU与8253的连接图,设8253的I/O口地址为10H~13H,分别对应8253的计数器0、计数器2及方式控制字寄存器的地址。

553.试计算8253计数器0工作于方式3,时钟CLK0的频率为1MHz,输出40kHz的重复方波时计数初值

【参考答案】P189例161

计数初值

初值

若采用二进制技数,则写入方式为:

MOVAL,25

OUTPORT0,AL;PORT0位通道0的端口地址

若采用十进制计数,则写入方式为:

MOVAL,25H

OUTPORT0,AL

554.编写8253通道0工作于定时方式时,每20ms,而通道1输出频率为2KHz的方波时初始化程序

【参考答案】P189例162

计数通道0要求每20ms向CPU发出一个中断请求信号,为重复波形,采用方式2速率发生器,每20ms发一个1/2MHz=0.5ms的负脉冲,经反相后可作为8086的中断请求信号。

计数通道1为2000Hz方波输出,工作于方式3。

初值计算如下:

计数通道0:

计数通道1:

方式控制字:

CW0=00110100=34

计数通道0,方式2,二进制计数,由于n0>10000,故只能用二进制计数。

计数通道1,C

1=01100111=67

即1通道,只写高8位,方式3,BCD计数。

初始化程序如下:

MOVDX,243H

MOVAL,34H;计数通道0写方式控制字

OUTDX,AL

MOVAL,67H;计数通道1写方式控制字

OUTDX,AL

MOVDX,240H;计数通道0写计数初值

MOVAX,40000

OUTDX,AL

MOVAL,AH

OUTDX,AL

MOVDX,241H;计数通道1写计数初值

MOVAL,20H

OUTDX,AL

注:

也可把CW0=40000写成9C40H,则先写入40H,后写入9CH。

555.8253在写入计数初值时,二进制计数和十进制计数有何区别

【参考答案】P190例163

采用二进制计数时,如果计数初值n为8位二进数(十进制≤255),则在用MOVAL,n写入AL时,n可以写成任何进制数。

如果计数初值n为16位二进制数(十进制数≤65535),则可由两种方式写入,一种是把十进制数转换成4位16进制数,分两次写入对应的计数通道(先低后高);另一种是把十进制数直接写入AX,即

MOVAX,n

MOVPORT,AL;PORT为通道地址

MOVAL,AH

OUTPORT,AL

采用十进制数时,必须把计算得到的计数初值的十进制数后加上H,变为BCD码表示形式。

如n=50,则写为

MOVAL,50H

OUTPORT,AL

MOVAL,50H

如n=1250,则写为:

OUTPORT,AL

MOVAL,12H

OUTPORT,AL

556.编写8253产生1

的负脉冲的初始化程序

【参考答案】P191例164

设8253通道2工作在方式2,OUT2输出2KHz频率方波,夫脉冲宽度为1

,GATE2接+5V,8253-5端口地址为40H~43H。

方式2的夫脉冲宽度就是CLK2时钟脉冲的脉冲周期,所以CLK2的脉冲频率为:

计数初值

工作方式控制字为:

10

11

010

0

通道2

先低8位

后高8位

方式2

二进制计数

初始化程序段为:

MOVAL,10110100B;通道2的工作方式控制字

OUT43H,AL

MOVAL,OF4H;送计数初值低字节

OUT42H,AL

MOVAL,01H;送计数初值高字节

OUT42H,AL

557.编写8253对外部事件计数10次的程序

计数电路如图126所示。

由图可知,本例使用的是计数器0。

外部事件用单稳态电路输

入,单稳电路的输出接至CLK0,GATE0接+5V。

由于计数器的CLK0接至单稳态电路,因而计数初值写入计数器后要由外接的单稳态电路输入一个脉冲把计数初值装入减1计数器,才能对外部事件进行计数。

所以外部事件进行计数(即单稳态电路输入)要输入11次。

用查询计数器的初值和最终值编制。

【参考答案】P190例165

(1)用查询计数器的初值和最终值编制的程序如下:

Stack

Segmentstack'stack'dw32dup(?

Stack

ends

Data

segment

DA1

DB'WAITLOAD',0AH,0DH,'$'

DA2

DB'PLEASEINPUT',0AH,0DH,'$'

DA3DB

'PROGRAMTERMINATEDNORMALLY',0AH,0DH,'$'

Data

ends

Code

segment

Begin

procfar

assumess:

stack,cs:

code,ds:

data

PUSH

DS

SUB

AX,AX

PUSH

AX

MOV

AX,DATA

MOV

DS,AX

MOV

DX,383H

;8253计数的方式0,BCD计数

MOV

AL,11H

OUT

DX,AL

MOV

DX,380H

MOV

AL,10H

OUT

DX,AL

MOV

DX,OFFSETDA1

MOV

AH,9

INT

21H

MOV

DX,380H

LOAD:

IN

AL,DX

CMP

AL,10H

;等待单稳输入脉冲,装入计数初值

JNE

LOAD

MOV

DX,OFFSETDA2

MOV

AH,9

INT

21H

MOV

DX,380H

COUNTIN:

IN

AL,DX

CMP

AL,0

;等待单稳输入10个脉冲

JNZ

COUNTIN

MOV

DX,OFFSETDA3

MOV

AH,9

INT

21H

ret

begin

endp

code

ends

endbegin

(2)若将OUT0接至8086微机的IRQ9。

使用中断编程的程序如下:

Stacksegmentstack'stack'dw32dup(?

Stackends

datasegment

DA1DB'WAITLOAD',0AH,0DH,'$'

DA2DB'PLEASEINPUT',0AH,0DH,'$'

DA3DB'PROGRAMTERMINATEDNORMALLY',0AH,0DH,'$'

dataends

codesegment

beginprocfar

assumess:

stack,cs:

code,ds:

data

PUSHDS

SUBAX,AX

PUSHAX

MOVES,AX

MOVAX,DATA

MOVDS,AX

MOVDX,383H;8253计数的方式0,BCD计数

MOVAL,11H

OUTDX,AL

MOVDX,380H

MOVAL,10H

OUTDX,AL

MOVDX,OFFSETDA1

MOVAH,9

INT21H

MOVDX,380H

LOAD:

INAL,DX

CMPAL,10H;等待单稳输入脉冲,装入计数初值

JNELOAD

MOVAX,SEGIS8253;填写中断向量表

MOVES:

01C6H,AX

MOVAX,OFFSETIS8253

MOVES:

01C4H,AX

INAL,0AH1;改变屏蔽字,允许IRQ9中断

ANDAL,0FDH

OUT0A1H,AH

MOVDX,OFFSETDA2

MOVAH,9

INT21H

JMP$;等待单稳输入10个脉冲

MOVDX,OFFSETDA3

MOVAH,9

INT21H

ret

IS8253:

MOVAL,61H;指定中断结束命令

OUT0A0H,AL

MOVAL,62H

OUT20H,AL

INAL,0A1H;关屏蔽,禁止IRQ9中断

ORAL,2

OUT0A1H,AL

POPAX;修改返址

INCAX

INCAX

PUSHAX

IRET

beginendp

codeends

endbegin

558.编写8253对外部事件计数100次发中断请求的程序

某8086系统中有8253芯片,利用其通道1完成对外部事件计数,计满100次向CPU

发出中断申请;利用通道2输出频率为1kHz的方波,硬件电路如图127所示。

【参考答案】P195例166

设8253端口地址为偶地址18H~1EH,所以8253的数据线D7~D0。

应接CPU的低8位数据线D7~D0,外部事件由8253通道1的CLK1端输入,通道1工作在方式0,当计数次数到,从OUT1端输出的正跃变信号作为向CPU的中断申请,由8259A中断控制器管理其中断;通道2的CLK2输入时钟是由D触发器分频4MHz的信号,故CLK2输入时钟频率为2MHz,而通道2工作方式在方式3产生1kHz频率的方波,方波周期为1ms,因此,通道2的计数值应为:

1ms÷0.5

=2000,两个通道均用BCD计数制。

通道1:

控制字为:

01110001B;计数值为:

100

通道2:

控制字为:

10100111B;计数值为:

2000

程序如下:

MOVAL,71H;通道1控制字

OUT1EH,AL;

MOVAL,0A7H;通道2控制字

OUT1EH,AL

MOVAL,00H;通道1计数值低8位

OUT1AH,AL

MOVAL,01H;通道1计数值高8位

OUT1AH,AL

MOVAL,20;通道2计数值高8位

OUT1CH,AL

…;8259A初始化略

559.编写8253定时控制发光二极管的亮灭的程序

8253通道2接有一发光二极管,要使发光二极管以点亮2s,熄灭2s的间隔工作,8253

个通道端口地址分别为FFE9H~FFEFH,其电路如图128所示。

【参考答案】P196例167

根据以上条件要求8253通道2应输出一个占空比为1:

1,周期为4s的方波。

从图128可知,通道1的CLK1输入时钟周期为1

,若通道1工作为定时,其输出最大定时时间为1

*65536≈65.5ms,因而使用一个通道达不到定时时间4s的要求。

此时,采用通道级联的方法,将通道1的输出OUT1作为通道2的输入脉冲。

若让8253的通道1工作于速率发生器方式,其输出端OUT1的输出脉冲是相对于1MHz频率的分频脉冲,若选定OUT1输出脉冲周期为4ms,则通道1的计数值为40000,周期为4ms的脉冲作为通道2的输入,要求输出端OUT2的波形为方波且周期为4s,故通道2的计数值选用1000,从图127还可看出,8253具有奇数端口地址,因而它的数据线与8086CPU的高8位数据线连接。

通道1的控制字为:

0111*101B或75H

通道2的控制字为:

1011*111B或B7H

程序如下:

MOV

DX,0FFEFH

;控制字端口地址

MOV

AL,75H

;通道1控制字

OUT

DX,AL

MOV

AL,0B7H

;通道2控制字

OUT

DX,AL

TIM:

MOV

DX,0FFEBH

;通道1端口地址

MOV

AL,00

;通道1计数值低8位

OUT

DX,AL

MOV

AL,40H

;通道1计数值高8位

OUT

DX,AL

MOV

DX,0FFEDH

;通道2端口地址

MOV

AL,00

;通道2计数值低8位

OUT

DX,AL

MOV

AL,10H

;通道2计数值高8位

OUT

DX,AL

JMP

TIM

MOV

AX,4C00H

INT

21H

560.8253产生中断请求信号,每中断一次显示一串字符,试编写程序

在IBM-PC/XT的62芯总线的IRQ2端输入一中断请求信号,该信号可由8253产生,

也可由分频电路产生。

要求每中断一次,CPU相应后在CRT上显示一串字符“THISISA8259AINTERRUPT!

”(这是8259A的一次中断!

),并且中断10次后返回。

其硬件连接如图129所示。

设IBM-PC/XT内8259A的端口地址是20H和21H,并已初始化为边沿触发、普通屏蔽(初始化屏蔽字为FEH)、非特殊全嵌套、一般中断结束、固定优先级以及非缓冲方式。

由IBM-PC/XT中8259A所管理的8个中断源(中断类型号为08H~0FH)可知,IRQ2的中断类型就是0AH。

【参考答案】P197例168

源程序如下:

INTA00

EQU20H

;8259A的偶地址端口

INTA01

EQU21H

;8259A的奇地址端口

DATA

SEGMENT

MESS

DB"IHISISA

8259AINTERRUPT!

",0DH,0AH,'$'

DATA

ENDS

CODE

SEGMENT

ASSUMECS:

DODE,DS:

DATA

START:

MOV

AX,CS

;先让DS指向代码段

MOV

DS,AX

MOV

DX,OFFSETINT-PROC

;设置0AH号中断向量

MOV

AX,250AH

INT

21H

CLI

;关中断

MOV

DX,INTA01

;读出IMR内容

IN

AL,DX

AND

AL,0FBH

;允许IRQ2中断

OUT

DX,AL

MOV

BX,10

;设置中断次数为10

STI

;开中断

LL:

JMP

LL

;循环等待中断

INT-PROC

PROC

MOV

AX,DATA

;中断服务程序

MOV

DS,AX

;将DS指向数据段

MOV

DX,OFFSETMESS

;显示发生中断的信息

MOV

AH,9

INTE

21H

MOV

DX,INTA00

;发中断结束命令EOI

MOV

AL,20H

OUT

DX,AL

WUB

BX,1

;计数器减1

JNZ

NEST

;不为0,转去执行中断返回

MOV

DX,INTA01

;为0,则读出屏蔽字

IN

AL,DX

OR

AL,4

;禁止IRQ2中断

OUT

DX,AL

STI

;开中断

POP

AX

;恢复堆栈指针SP

POP

AX

POP

AX

MOV

AH,4CH

;返回DOS

INT

21H

NEXT:

IRET

;中断返回

INT-PROC

ENDP

CODE

ENDS

END

START

;汇编结束

561.编写8253定时控制8只LED管自下向上闪动的程序

8255A的PA口写8个LED管连接如图130所示,8253连接如图131所示。

闪动频率为每次10次(即每秒钟每个LED管亮10次),8253三个计数通道和控制字寄存器的地址为40H~43H,8255A的地址为60H~63H,

【参考答案】P199例169

其控制程序如下:

MOVAL,80H

OUT63H,AL

MOVAL,34H

OUT43H,AL

MOVAL,0A8H

OUT40H,AL

MOVAL,61H

OUT40H,AL

MOVAL,7FH

OUT60H,AL

STI

LOP:

HLT

JMPLOP

中断服务程序如下:

INTROUTSEGMENTAT1480H

ORG3000H

RORAL,1

OU

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1