可编程接口芯片之-----8255A

仿真环境: proteus

编译环境:Masm

8255A有A、B、C三个8位输入/输出端口

A口:PA7~PA0

B口:PB7~PB0

C口:PC7~PC0

接口编程第一步:确定A、B、C三个口的地址以及控制口地址.

设置工作方式控制字来实现对方式0、方式1、方式2的选择:

第一位固定为1

A组:PS0~PA7; PC4~PC7

B组:PB0~PB7; PC0~PC3

接下来就是看图,一般开关控制为输入 置1,下图中由PB0~PB7控制开关 D1 = 1,其他默认为0,即控制字为:10000010B

 8255初始化:

MOV AL,控制字
OUT 口地址,AL

//方法二
MOV DX,口地址
MOV AL,控制字1
OUT DX,AL
MOV AL,控制字2
OUT DX,AL

读写控制信号:

IN   AL,口地址
OUT  口地址,AL

确定A、B、C口以及控制口地址

 

                      片外地址:

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0
000000101001    

                      片内地址:

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0
000000101001×  ×

                     端口A地址:

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0
0000001010010000

                     端口B地址:

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0
0000001010010010

                      端口C地址:

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0
000000101001010 

                       控制口地址:

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0
0000001010010110

编程实例1:

当开关合上,16个LED灯从上而下依次循环发光,每次只能点亮一个LED灯;
当开关打开,保持当前LED灯的点亮状态不变,下次开关合上时,从当前的LED灯开始点亮。

  

IOCON	EQU 02D6H     ;控制口地址
IOA   	EQU 02D0H     ;A口地址
IOB   	EQU 02D2H     ;B口地址
IOC   	EQU 02D4H     ;C口地址
CODE 	SEGMENT  
        ASSUME CS:CODE
START:	MOV 	AL, 10000001B	;8255初始化,端口C为输入即 控制字 最后一位为1
        MOV 	DX, IOCON       ;初始化控制口
        OUT 	DX, AL
        MOV 	BX, 1
AGAIN: 	MOV	DX, IOC         ;置C口
        IN	AL, DX          ;读取PC口检测开关状态
	TEST 	AL, 00000010B	;检测PC1是否等于0
        JNZ	AGAIN           ;PC1=0
        MOV	AL,BL		
        MOV	DX,IOA          ;A口输出数据
        OUT	DX,AL
        MOV	AL,BH
        MOV 	DX, IOB         ;B口输出数据     
       	OUT 	DX, AL
       	CALL	DELAY           ;延时
       	ROL	BX,1            
	JMP 	AGAIN
DELAY	PROC                    ;延时函数开始标志
	MOV    CX,0FFFFH
NEXT:	NOP
	LOOP	NEXT
	RET                    ;返回DOS
DELAY	ENDP		       ;延时函数结束标志		
CODE  	ENDS
	END	START

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小半、

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

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

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

打赏作者

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

抵扣说明:

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

余额充值