1、 第九章 可编程外围接口芯片8255A及其应用作业 姓名:王绍辉 专业班级:电气0905 学号:0909092726 1.8255A的3个端口在功能上各有什么不同的特点?8255A内部的A组和B组控制部件各管理哪些端口? 答:端口A包含一个8位的数据输出锁存器/缓冲器,一个8为的数据输入锁存器,因此A口作输入或输出时数据均能锁存。 端口B包含一个8位的数据输入/输出锁存器/缓冲器,一个8位的数据输入缓冲器。 端口C包含一个8位的数据输出锁存器/缓
2、冲器,一个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口和
3、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
4、 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再输出低电平,形成一个正脉冲
5、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,即得
6、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 MO
7、V 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计数
8、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,OF
9、FSET 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,1
10、0H 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进制数
11、字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
12、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 A
13、L,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 ;检测开关,合上为
14、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






