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語言都是同樣的效果,僅供參考學習。
在這裏插入圖片描述
  仿真完成…

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