AT89C51并行I/O端口扩展及I2C串行总线扩展(8255)


  利用单片机51的并行I/O端口扩展,实现51与8255的PA端口按方式0输出,PB口按方式0输入,将PB口外接8个开关的状态通过PA口外接的LED灯反应出来。

8255A控制字简介

  8255有3种工作方式:方式0、方式1、方式2。工作之前必须初始化,需要将方式控制字写入控制字寄存器中,指定端口工作方式。

3种工作方式:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
控制字格式:
在这里插入图片描述
有关8255A详细资料参考这个博客

电路原理图。

8255A

汇编代码

		ORG 0000H
PORTA 	EQU 7CFFH    ;8255PA口地址
PORTB 	EQU 7DFFH    ;8255PB口地址
PORTC	EQU 7EFFH    ;8255PC口地址
CADDR 	EQU 7FFFH    ;8255控制端口
		SJMP START
		ORG  0030H
START: 	MOV A ,#82H  ;方式0,PA PC端口输出,PB口输入
		MOV DPTR,#CADDR
		MOVX @DPTR,A
LOOP: 	MOV DPTR,#PORTB
		MOVX A,@DPTR   ;读入PB口
		MOV DPTR,#PORTA
		MOVX @DPTR,A   ;输出到PA端口
		LCALL DELAY
		LJMP LOOP
DELAY:	MOV R6,#0   ;延时程序
DELAY1:	MOV R7,#0   ;延时程序
DELAY2:	DJNZ R7,DELAY2
		DJNZ R6,DELAY1
		RET
		END
	  

C代码

#include<reg52.h>
#include<absacc.h>

#define PORTA 0x7CFF   //8255PA口地址
#define PORTB 0x7DFF //8255PB口地址
#define PORTC 0x7EFF   //8255PC口地址
#define CADDR 0x7FFF    //8255控制端口

void main()
{
	XBYTE[CADDR]=0x82; //控制字指定方式
	while(1)
		{
			XBYTE[PORTA]=XBYTE[PORTB];
		}
}

仿真结果

  使用汇编代码和C语言都是同样的效果,仅供参考学习。
在这里插入图片描述
  仿真完成…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章