汇编与接口技术期末复习笔记——接口部分:并行接口8255(1)

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方式的应用

【例】声-光报警器接口设计

  1. 要求:设计一个声-光报警器,要求按下SW开关开始报警,喇叭发声,LED灯同时闪光。当拨通8位DIP的0位开关,结束报警,喇叭停止发声,LED消灭。
  2. 分析:该报警器包括4种外设:喇叭、8个LED、8位DIP开关、按钮SW。它们通过接口电路与CPU连接,接受CPU的控制,实现相应功能。
  3. 设计: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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zyw2002

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值