可编程外围接口芯片8255A及其应用作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
可编程外围接口芯片8255A及其应用作业
第九章可编程外围接口芯片8255A及其应用作业
姓名:王绍辉
专业班级:电气0905
学号:0909092726
1.8255A的3个端口在功能上各有什么不同的特点?8255A内部的A 组和B组控制部件各管理哪些端口?
答:端口A包含一个8位的数据输出锁存器/缓冲器,一个8为的数据输入锁存器,因此A口作输入或输出时数据均能锁存。
端口B包含一个8位的数据输入/输出锁存器/缓冲器,一个8位的数据输入缓冲器。
端口C包含一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器,无输入锁存功能,当它被分成两个4位端口时,每个端口有一个4位的输出锁存器。
端口A和端口C的上半部分(PC7~PC4)由A组控制逻辑管理。
端口B和端口C的下半部分(PC3~PC0 )由B组控制逻辑管理。
2.8255A有哪几种工作方式?各用于什么场合?端口A、端口B和端口C各可以工作于哪几种工作方式?
答:8255A具有3种基本的工作方式,在对8255A进行初始化编程时,应向控制字寄存器写入方式选择控制字,用来规定8255A各端口的工作方式。
这3种基本工作方式是:
方式0—基本输入输出方式:适用于不需要用应答信号的简单输入输出场合。
这种方式A口和B口可作为8位的端口,C口的高4位和低4位可作为两个4位的端口。
方式1—选通输入输出方式:A口和B口作为数据口,均可工作于输入或输出方式。
端口C的6根线用来产生或接受联络信号。
方式2—双向总线I/O方式:只有A口可以工作于这种方式。
端口A工作于方式2时,端口C的5位(PC3~PC7)作A口的联络控制信号。
5.设8255A的A口、B口、C口和控制字寄存器的端口地址分别为80H,82H,84H,86H。
要求A口工作在方式0输出,B口工作在方式0输入,C口高4位输入,低四位输出,试编写8255A的初始化程序。
答:MOV AL,10001010B ;方式控制字
OUT 86H,AL
6.8255A的端口地址同第五题,要求PC4输出高电平,PC5输出低电平,PC6输出一个正脉冲,试写出完成这些功能的指令序列。
答:MOV AL,00001001B ;PC4输出高电平
OUT 86H,AL
MOV AL,00001010B ;PC5输出低电平
OUT 86H,AL
MOV AL,00001100B ;PC6先输出低电平
OUT 86H,AL
MOV AL,00001101B ;PC6再输出高电平
OUT 86H,AL
MOV AL,00001100B ;PC6再输出低电平,形成一个正脉冲
OUT 86H,AL
9.8255A的端口地址为80~83H,8253的口地址为84~87H。
(1)若A口接8个开关K7~K0,B口接8个指示灯LED7~LED0,当开关合上时相应的指示灯点亮,断开时灯灭,要求每隔0.5s检测一次开关状态,并在开关上显示出来,试画出硬件连接图,编写实现这种功能的程序。
(2)若把接在端口A上的开关去掉,要求接在端口B上的指示灯轮流熄灭,每只灯熄灭1s,请编程实现这种功能。
答:(1)8255A:A口输入,B口输出
8253:2MHz/2Hz=1000000
通道0工作于方式2,取N0=1000
通道1工作于方式0,取N1=999,即得OUT1每0.5s中断一次
用8253定时中断,中断处理时检测开关状态,并点亮相应的LED 假设8259A已经初始化,主程序如下:
MOV AX,SEG INTR ;形成中断矢量表
MOV DS,AX
MOV DX,OFFSET INTR
MOV AL,N
MOV AH,25H
INT 21H
MOV AL,10010000B ;8255初始化
OUT 83H,AL
MOV AL,00110101B ;通道0方式2,BCD计数OUT 87H,AL
MOV AL,00H ;置初值1000
OUT 84H,AL
MOV AL,10H
OUT 84H,AL
MOV AL,01110001B ;通道1方式0,BCD计数OUT 87H,AL
MOV AL,99H ;置初值999
OUT 85H,AL
MOV AL,09H
OUT 85H,AL
STI
AGAIN:HLT
JMP AGAIN
中断服务程序:
INTR:PUSH AX
STI
IN AL,80H ;检测开关,合上为0
NOT AL ;取反
OUT 81H,AL ;点亮相应LED(合上)
MOV AL,01110001B ;通道1方式0,BCD计数
OUT 87H,AL
MOV AL,99H ;置初值999
OUT 85H,AL
MOV AL,09H
OUT 85H,AL
CLI
MOV AL,20H ;普通EOI命令
OUT 20H,AL
POP AX
IRET
(2)8255A:B口输出
8253:通道0工作于方式2,取N0=2000
通道1工作于方式3,取N1=1000,即得OUT1频率为1Hz(周期为1s)的方波,接到8259A的IRi,用沿触发中断请求。
主程序如下:
,PV AX,SEG INTR ;形成中断矢量表
MOV DS,AX
MOV DX,OFFSET INTR
MOV AL,N
MOV AH,25H
INT 21H
MOV AL,10000000B ;8255初始化
OUT 83H,AL
MOV AL,00110101B ;通道0方式2,BCD计数OUT 87H,AL
MOV AL,00H ;置初值2000
OUT 84H,AL
MOV AL.20H
OUT 84H,AL
MOV AL,01110111B ;通道1方式0,BCD计数OUT 87H,AL
MOV AL,00H ;置初值1000
OUT 85H,AL
MOV AL,10H
OUT 85H,AL
MOV AL,0FEH ;熄灭LED0
OUT 81H,AL
STI
GOON:HLT
JMP
中断服务程序如下:
INTR:PUSH AX
STI
ROL AL,1 ;AL左循环移位1位
OUT 81H,AL ;点亮下一位LED
CLI
MOV AL,20H
OUT 20H,AL ;普通EOI结束命令
POP AX
IRET
硬件连接图如下:
10.设8255A的口地址为300H~303H,A口接4个开关K3~K0,B口
接一个七段LED显示器,用来显示4个开关所拨通的16进制数字0~F,开关合上时,显示0,都断开时显示F,每隔2S检测一次,试画出硬件连接图,并编写实现这种功能的程序。
答:
与上题思路相同
8255A:A口方式0输入,B口方式0输出端口地址300H~303H 8253:用于2s定时,端口地址为304H~307H
2MHz/0.5Hz=4000000
通道0工作于方式2,取N0=4000
通道1工作于方式0,取N1=999,即得OUT1每2S中断一次
用8253定时中断,中断处理时检测开关状态,并点亮相应的LED
共阴极LED七段显示译码表
假设8259A已将初始化,主程序如下:
TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;七段码表格
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
MOV AX,SEG INTR ;形成中断矢量表
MOV DS,AX
MOV DX,OFFSET INTR
MOV AL,N
MOV AH,25H
INT 21H
MOV AL,10010000B ;8255初始化
MOV DX,303H
OUT DX,AL
MOV AL,00110101B ;8253初始化,通道0方式2,BCD计数MOV DX,307H
OUT DX,AL
MOV AL,00H ;置初值4000H
MOV DX,304H
OUT DX,AL
MOV AL,40H
OUT DX,AL
MOV AL,01110001B ;通道1方式0,BCD计数MOV DX,307H
OUT DX,AL
MOV AL,99H ;置初值999
MOV DX,305H
OUT DX,AL
MOV AL,09H
OUT DX,AL
STI
AGAIN:HLT
JMP AGAIN
中断服务程序:
INTR:PUSH AX
STI
MOV DX,300H
IN AL,DX ;检测开关,合上为0
AND AL,0FH ;只保留低4位PA3~PA0
MOV BX,OFFSEY TABLE
XLAT TABLE
MOV DX,301H
OUT DX,AL ;点亮LED,显示数字
MOV AL,01110001B ;通道1方式0,BCD计数MOV DX,307H
OUT DX,AL
MOV AL,99H ; 置初值999
MOV DX,305H
OUT DX,AL
MOV AL,09H
OUT DX,AL
CLI
MOV AL,20H ;普通EOI命令
OUT 20H,AL
POP AX
IRET。