当前位置:首页 > 微机原理与接口技术习题集2
最新精品文档,知识共享!
497. 编写8255A的A口和B口都工作在方程式1,采用中断方式输入数据的程序 【参考答案】 P83例77
设8255A的口地址为:40H~43H,C口的PC6 、PC 7为输入,因A口、B口工作在方式1,故工作方式控制字为:10111110B,其中D 0可为0或1,这里选为0。A口允许中断,PC4置1,控制字为09H。B口允许中断,PC2置“1”,控制字为05H。故初始化程序段如下: MOV AL, 10111110B ;写入工作方程式控制字 OUT 43H, AL MOV AL, 09H OUT 43H, AL ;PC4置“1”,A口允许中断 MOV AL, 05H OUT 43H, AL ;PC2置“1”,B口允许中断
498. 8255A的方式0的应用实例 【参考答案】P83例78
设8255A的A口和B口工作在方式0,A口为输入端口,接有4个开关;B口为输出端口,接有一个七段发光二极管,其硬件连接电路如图46所示。试编一程序要求七段发光二极管显示开关所拨通的数字。
+5VPA0PA1PA2PA311111111K74LS138A15A6M/IOA5A4A3G1G2AG2BCBAA15…A0Y4&A2A1A1A0CSRDWRRESETPB08255APB1PB2PB3PB4RDPB5WRPB6RESETPB7 a b cd e f gDp+5V
图468255工作在方式0控制发光二极管显示本例中8255A的端口地址由两部分电路组成:由CPU地址线A15~A3通过74LS138译码器产生片选信号;CPU的地址线A2、A1分别组成4个端口地址,而CPU的A0与译码器输出端Y4通过逻辑组合,保证8255A的四个端口地址为偶地址,这样8位的8255A与16位的8086CPU可以通过数据总线D7~D0传送8位信息,具体端口地址分配为:A口地址为8020H,B口地址为8022H,C口地址为8024H,控制口地址为8026H。
从图可知,七段发光二极管为共阳极LED器件,要让a段亮点,要求从PB0段输出高电平“1”; 要让b段熄灭,要求从PB1段输出低电平“0”,其余各段依次类推。8255A的A口接有开关,4位开关的组合可为0~FH。为此,我们可将在LED上显示0~FH的各字符代码
最新精品文档,知识共享!
列表见表2。
表2 显示字符代码表 显示字符 程序如下: APORT BPORT CONTR DATA TAB1 DATA CODE ASSUME START:
ADDR1:
ADDR2:
CODE
1 2 3 4 5 6 7 8 9 A B C D E F 31 0 3F 七段代码(H) 06 5B 4F 66 6D 7D 07 7F 6F 77
7C 39 5E 79 ENDS SEGMENT
CS: CODE, DS:DATA MOV AX, DATA MOV DS, AX MOV AL, 90H MOV DX, CONTR OUT DX, AL MOV DX, APORT IN AL, DX AND AL, 0FH MOV BX, OFFSET TAB1 XLAT MOV DX, BPORT OUT DX, AL MOV CX, 0400H DEC CX JNZ ADDR2 JMP ADDR1 ENDS END START
… EQU 8020H EQU 8022H EQU 8026H SEGMENT
DB 3FH, 06H, 5BH, 4FH.
;设定8255A工作方式
;取开关值
;屏蔽高4位 ;取代码表首址 ;找到字符代码 ;输出显示
;显示延时
499. 编写8255A用于LED显示器接口程序 【参考答案】P85 例79
8086CPU通过8255A同开关K与7段LED显示器的接口如图47所示。开关设置的二进制信息由8255A的B口输入,经程序转换为对应的七段LED的段选码(字形码)后,通过A口输出。由七段LED显示二进制状态值,试编写其控制程序。
最新精品文档,知识共享!
+5VA2锁A1AD0~AD7AD0~AD15A16/S3~A10/S6存器A3~A19ALEBHE译码Y器D0~D7A1A0CS8086RDWRRESETRDWRPB0RESETPB1PA0PA1PA2PA3PA48255APA5PA6PA711111111 a b cd e f gDpK3K2K1K0PB2PB3图47 8255A同LED的接口+5V
设8255A得端口地址为: 端口A:0FFF8H 端口B:0FFFAH 端口C:0FFFCH 控制口:0FFFEH
为增加8255A的负载能力,所以A口经驱动器同七段LED显示器相连。由图47可见,8255A的地址线A1、A0分别同地址锁存器输出的A2、A1相连,故每个端口可有二个端口地址,如A口为0FFF8H和0FFF9H,可认为未参加译码的地址线A0为0的地址,所以通常使用0FFF8H地址。
假设B口用输入,则8255A工作方式控制字为82H。 程序如下: ORG 2000H ;从2000H开始存放数据 MOV AL, 82H ;只工作方式控制字 MOV DX,0FFFEH OUT DX, AL RDPOR
MOV DL, 0FAH ;读入B口信息
TB: IN AL, DX
;屏蔽AL高四位,B口读入的信息
AND AL, 0FH
只低四位有效
MOV BX,OFFFSET SSEGCODE ;地址指针BX指向段选码表首地址 XLAT ;[BX+AL]→AL
;段选码→A口,由七段LED显示
MOV DL, 0F8H
器显示
OUT DX, AL
;延时,使读入的信息保持显示一段
MOV AX, 56CH
时间
最新精品文档,知识共享!
DELAY: DEC AX JNZ DELAY JMP RDPORTB ;进入新一轮的操作 HLT ORG 2500H ;从2500H开始为段选码表
如果要求LED显示器循环显示0-F十六个数字,每个数字显示10s,显示100遍。则控制程序为: ORG 2000H MOV AL,82H MOV DX,0FFFEH OUT DX,AL MOV BX,100 ;循环100次 DISFLOP: LEA DI,SSEGCODE ;指向段选码表 MOV CX,16 ;显示字符个数 LOP MOV AL,[DI] ;取显示字符送A口 MOV DL,0F8H OUT DX,AL INC DI ;修改显示指针 CALL DELAY10s ;延时10s字程序 LOOP LOP ;每遍循环16次 DEC BX ;修改大循环指针 JNZ DISFLOP HLT ORG 2500H SEEG
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,
CODE: DB 98H,88H,83H,DB 0C6H,0A1H,86H,8EH
控制字寄存器的端口地址送间址寄存器500. 编写用8255A按位置位/复位控制字控制发光二级
写入方式选择字管依次显示亮灭的程序
【参考答案】P87 例80 PCAL0的值为字送利用8244A端口C的8根I/O线接8只发光二级管的正
写入置位字点亮一只发光二极管极(8个负极均接地),用按位置位/复位控制字编写使
这8只发光二级管依次亮、灭的程序。设8255A的端口
延时让发光二极管发光地址为480~483H。
改置位字为复位字本例要使用8255A的两个控制字:方式控制字和按位置
位/复位控制字。这两个控制字都写入到8255A的控制
熄灭发光二极管字寄存器,由它的D7位为1或0来区分写入的控制字
将PCi的复位字改为PCi+1的置位字是方式控制字还是按位置位/复位控制字。方式控制字只
写入一次,其后写入的都是按位置位/复位控制字。
11号功能调用检测有无键入首先用置位字01H点亮PC0所连接的发光二极管,然后将置位字01H改为复位字00H,熄灭该发光二极管。N有键入吗?再将复位字00H改为置位字03H,点亮PC1所连接的发
Y图48程序流程图
共分享92篇相关文档