微型计算机答案,微机答案

00001B=01H

主片初始化程序:

ICW1写入到偶端口地址20H;ICW2写入到奇端口地址22H

MOV AL, 19H

OUT 20H, AL;写入ICW1

MOV AL, 70H

OUT 22H, AL;写入ICW2

MOV AL, 02H

OUT 22H, AL

MOV AL, 01H

OUT 22H, AL

6.4 设8253计数器0~2和控制字寄存器的I/O地址依次为F8H~FBH,说明如下程序的作用。

MOV AL, 33H ;00110011B 计数器0,先低位后高位,方式1,BCD码计数

OUT 0FBH, AL ;写控制字

MOV AL, 80H ;置计数初值低位字节80H

OUT 0F8H, AL ;先写低位字节

MOV AL, 50H ;置计数初值高位字节50H

OUT 0F8H, AL ;写高位字节

程序的作用为:使计数器0工作在方式1,用BCD码计数,计数初值为5080。

6.5 设8253的4个端口地址分别为300H、302H、304H和306H,由CLK0输入计数脉冲频率为2MHz。要求通道0输出1.5kHz的方波,通道1、通道2均用通道0的输出作计数脉冲,通道1输出频率为300Hz的序列负脉冲,通道2每秒钟向CPU发50次中断请求。试编写初始化程序,并画出8253相关引脚的连线图。

通道0:输出方波则工作在方式3;计数初值为n0=2MHz/1.5kHz≈1334=536H(1.499kHz)

控制字为:00110110B=36H

通道1:输出序列负脉冲则工作在方式2;计数初值为n1=1.5kHz/300Hz=5=05H

控制字为:01010100B=54H

通道2:每秒钟向CPU发50次中断请求则工作在方式2;计数初值为n2=1500/50=30=1EH

控制字为:10010100B=94H

初始化程序:

通道0: MOV DX , 306H

MOV AL , 36H

OUT DX , AL

MOV DX , 300H

MOV AL , 36H

OUT DX , AL

MOV AL , 05H

OUT DX , AL

7.3编程使8255A的PC5端输出一个负跳变。如果要求PC5端输出一个负脉冲,则程序又如何编写?

设端口地址分别为:B0H B2H B4H B6H。系统复位后8255A的所有端口都被置为输入。

控制字为:10000000B=80H

输出负跳变:

MOVAL, 80H

OUTB6H,AL

MOVAL, 0BH

OUTB6H,AL

……

MOVAL, 0AH

OUTB6H,AL

输出负脉冲:

MOVAL, 80H

OUTB6H,AL

MOVAL, 0BH

OUTB6H,AL

……

MOVAL, 0AH

OUTB6H,AL

……

MOVAL, 0BH

OUTB6H,AL

7.4假设图7.15键盘接口电路中8255A的A、B、C口和控制口地址为218H~21BH,写出完整的行反转法键盘扫描子程序。

KEY1: … ;设置行线接输出端口ROWPORT,列线接输入端口COLPORT,并判断是否有键按下

KEY2: MOV AL, 00H

MOV DX, ROWPORT

OUT DX, AL ;行线全为低

MOV DX, COLPORT

IN AL, DX ;读取列值

CMP AL,0FFH

JZ KEY2 ;无闭合键,循环等待

PUSH AX ;有闭合键,保存列值

PUSH AX

… ;设置行线接输入端口ROWPORT,列线接输出端口COLPORT

MOV DX, COLPORT

POP AX

OUT DX,AL ;输出列值

MOV DX, ROWPORT

IN AL,DX ;读取行值

POP BX

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值