习 题 9 部分答案
9.11试按如下要求分别编写82C54的初始化程序:己知82C54的计数器0、1、2和控制字I/O地址依次为104H、105H、106H、107H。
(1) 使计数器1工作在方式0,仅用低8位作二进制计数,计数初值为128;
(2) 使计数器0工作在方式1,按BCD码计数,计数值为3000;
(3) 使计数器2工作在方式2,按二进制计数,计数值为02F0H。
解:
(1) MOV DX,07H ;控制端口地址给DX
MOV AL,01010000B ;计数器1控制字
OUT DX,AL
MOV DX,05H
MOV AL,80H ;计数初值 128
OUT DX,AL
(2)
MOV DX,07H
MOV AL,00110011B ;计数器0控制字
OUT DX,AL ;
MOV DX,04H
MOV AL,00H ;先送低8位
OUT DX,AL
MOV AL,30H ;后送高8位
OUT DX,AL
(3)
MOV DX,07H
MOV AL,10110100B ;计数器2控制字
OUT DX,AL
DEC DX
MOV AL,0F0H
OUT DX,AL ;先送低8位
MOV AL,02H
OUT DX,AL ;后送高8位
9.12 设82C54计数器0、1、2和控制字的I/O地址依次为F8H、F9H、FAH、FBH,说明如下程序的作用。
MOV AL,33H
OUT 0FBH,AL
MOV AL,80H
OUT 0F8H,AL
MOV AL,50H
0UT 0F8H,AL
解,33H 即00110011B送入控制地址 FBH,表示计数器0采用16位计数,工作方式1,数据格式为 BCD,计数初值为:5080。
9.11试按如下要求分别编写82C54的初始化程序:己知82C54的计数器0、1、2和控制字I/O地址依次为104H、105H、106H、107H。
(1) 使计数器1工作在方式0,仅用低8位作二进制计数,计数初值为128;
(2) 使计数器0工作在方式1,按BCD码计数,计数值为3000;
(3) 使计数器2工作在方式2,按二进制计数,计数值为02F0H。
解:
(1) MOV DX,07H ;控制端口地址给DX
MOV AL,01010000B ;计数器1控制字
OUT DX,AL
MOV DX,05H
MOV AL,80H ;计数初值 128
OUT DX,AL
(2)
MOV DX,07H
MOV AL,00110011B ;计数器0控制字
OUT DX,AL ;
MOV DX,04H
MOV AL,00H ;先送低8位
OUT DX,AL
MOV AL,30H ;后送高8位
OUT DX,AL
(3)
MOV DX,07H
MOV AL,10110100B ;计数器2控制字
OUT DX,AL
DEC DX
MOV AL,0F0H
OUT DX,AL ;先送低8位
MOV AL,02H
OUT DX,AL ;后送高8位
9.12 设82C54计数器0、1、2和控制字的I/O地址依次为F8H、F9H、FAH、FBH,说明如下程序的作用。
MOV AL,33H
OUT 0FBH,AL
MOV AL,80H
OUT 0F8H,AL
MOV AL,50H
0UT 0F8H,AL
解,33H 即00110011B送入控制地址 FBH,表示计数器0采用16位计数,工作方式1,数据格式为 BCD,计数初值为:5080。