文章目录
1. 并行接口8255
1.1 并行接口的特点以及电路结构
1.2 可编程接口芯片8255
1.2.1 8255外部特性
1.2.2 8255的内部结构
1.2.3 8255的端口地址
1.2.4 8255的工作方式
1.2.5 8255的编程命令
1.2.5.1 方式命令(初始化命令)
【例】要把A口指定为1方式,输入,C口上半部为输出;B口指定为0方式,输出,C口下半部定为输入,则工作方式命令代码是
MOV DX,303H ;8255A命令口地址(假设)
MOV AL,0B1H ;初始化命令 10110001B
OUT DX,AL ;送到命令口
1.2.5.2 C端口按位置位/复位命令
【例】C端口按位置位命令
;PC2引脚置成高电平输出
MOV DX,303H ;8255A命令口地址(假设)
MOV AL,05H ;使PC2=1的命令字 0000 0101B
OUT DX,AL ;送到命令口
【例】PC7产生负脉冲
MOV DX,303H ;8255A命令口
MOV AL,00001110B ;置PC7=0
OUT DX,AL
NOP ;维持低电平
NOP
MOV AL,00001111B ;置PC7=1
OUT DX,AL
【例】A口B口输入输出
;使PA7输出高电平
MOV DX,300H ;PA数据口地址
IN AL,DX ;读入A口原输出内容
OR AL,80H ;使PA7=1
OUT DX,AL ;输出PA7
;使PA7输出低电平
MOV DX,300H ;A口地址
IN AL,DX ;读入A口原输出内容
AND AL,7FH ;使PA7=0
OUT DX,AL ;输出PA7
;使PB0和PB1位同时输出高/低电平
MOV DX,301H ;PB数据口地址
IN AL,DX ;读入A口原输出内容
OR AL,03H ;使PB1PB0 =11
OUT DX,AL ;输出PB1 PB0
AND AL, 0FCH ;使PB1PB0 =00
OUT DX,AL
1.3 8255 0方式的应用
【例】声-光报警器接口设计
- 要求:设计一个声-光报警器,要求按下SW开关开始报警,喇叭发声,LED灯同时闪光。当拨通8位DIP的0位开关,结束报警,喇叭停止发声,LED消灭。
- 分析:该报警器包括4种外设:喇叭、8个LED、8位DIP开关、按钮SW。它们通过接口电路与CPU连接,接受CPU的控制,实现相应功能。
- 设计:4种I/O设备,其中按钮SW和8位DIP开关为输入设备,喇叭和LED灯为输出设备。采用82C55A进行接口设计。
硬件设计:采用82C55A设计接口。使用3个端口:
A端口:输出,连接8个LED灯LED0-LED7
B端口:输入,连接8位DIP开关DIP0-DIP8
C端口PC6:输出,连接喇叭SPK控制74LS373的开关
C端口PC2: 输入,连接开关SW
STACK SEGMENT
DW 200 DUP(?)
STACK ENDS
DATA SEGMENT
T DW 0; 初始化延时变量为0
DATA ENDS
CODE SEGMENT
ASSUME SS:STACK, CS:CODE,DS:DATA
MOVE AX,STACK; 装载堆栈段
MOV SS,AX
MOV AX,DATA; 装载数据段
MOV DS,AX
MOV DX,303H; 初始化8255
MOV AL,83H; 1000 0011 A口0方式输出;PC4-PC7输出;B口0方式输入;PC0-PC3输入
OUT DX,AL;
MOV DX, 300H;熄灭LED灯
MOV AL,00H
OUT DX,AL
WAIT1:
MOV DX,303H ; 关闭喇叭
MOV AL,0CH ; 0000 1100B PC6低电平
OUT DX,AL ;
MOV DX,302H ;查看SW是否按下?
IN AL, DX
AND AL,04H ;PC2=0?
JNZ WAIT1 ;
BEGIN:
CALL LED_FLASH ;调用LED发光子程序
MOV BX,200 ;
MOV T,0FFFH ;延时
SPEAK_H:
CALL OUTSPK ;调用喇叭发声(高频)子程序
DEC BX
JNZ SPEAK_H
MOV DX,300H ;LED全灭
MOV AL,00H
OUT DX, AL;
MOV BX,200
MOV T,09FFFH
SPEAK_L:
CALL OUTSPK ;调用喇叭发声(低频)子程序
DEC BX
JNZ SPEAK_L
CALL DELAY2
MOV DX,301H ;查DIP0按下?(PB0=0?)
IN AL, DX
AND AL, 01H
JNZ BEGIN ;DIP0未按下?(PB0=0?)
MOV DX,300H ;DIP0已按下
MOV AL,00H ;LED全灭
OUT DX, AL
MOV DX, 303H ; 关闭SPK
MOV AL, 0CH
OUT DX, AL
MOV AH,4CH
INT 21H
DELAY1 PROC ;延时子程序1
PUSH BX
MOV BX,T
DL1:
DEC BX
JNZ DL1
POP BX
RET
DELAY1 ENDP
DELAY2 PROC ;延时子程序2
PUSH BX
PUSH CX
MOV CX,04FFFH
DL2:
MOV BX, 0FFFFH
DL3: DEC BX
JNZ DL3
DEC CX
JNZ DL2
POP CX
POP BX
RET
DELAY1 ENDP
OUTSPK PROC ;喇叭发声子程序
MOV DX,303H
MOV AL, 0DH ; 0000 1101 PC6输出高电平
OUT DX, AL
CALL DELAY1 ;延时
MOV DX, 303H
MOV AL, 0CH 0000 1100 PC6输出低电平
OUT DX, AL
CALL DELAY1 ;延时
RET
OUTSPK ENDP
LED_FLASH PROC ;LED发光子程序
MOV DX,300H
MOV AL, 0FFH ; A端口输出 1111 1111
OUT DX, AL
RET
LED_FLASH ENDP