如图 1)分析各端口地址2)A口,B口工作在什么方式3)写出8255A的初始化程序

如图 1)分析各端口地址2)A口,B口工作在什么方式3)写出8255A的初始化程序,第1张

A做输入,B做输出,工作方式可选择90H,由译码器和A1A0决定其端口地址:G1是高电平有效,由与门输出,则A8A7=11,G2A、G2B是低电平有效则A6A5=00,又由于译码器输出为Y2则A4A3A2=010,所以其A、B、C、控制端口地址分别是188H、189H、18AH、18BH。

源程序:

mov al,90h

out 18bh,al

mov dx,188h

in al,dx

mov dx,189h

out dx,al

假设开关0~开关7的一端接依次接PB0~PB7,各开关另一端拉地;

假设8个LED共阳极接电源+Vcc, LED0~LED7阴极依次接PA0~PA7

假设单片机系统中,8255的A口、B口、C口、控制口地址依次是:

7FF0H、7FF1H、7FF2H、7FF3H,汇编程序如下:

MOV A, 1000010B ;初始化命令字:A口方式0输出,B口方式0输入

MOV DPTR, #7FF3H ;控制口地址→DPTR

MOVX @DPTR,A ;初始化命令字→8255控制口

LP:

MOV DPTR, #7FF1H ;B口地址→DPTR

MOVX A, @DPTR ;B口所连接的开关状态→累加器

MOV DPTR, #7FF0H ;A口地址→DPTR

MOVX @DPTR,A ;存于累加器的开关状态数据→A口所连接的8个LED

SJMP LP

1、地址确定

因为A10A9A8A7A6A5A4A3=01010011,A2A1=11为控制字端口,A2A1=10为C口,A2A1=01为B口,A2A1=00为A口,A0为0,所以8255A地址范围为24CH~24FH。

2、控制字确定

因为A口为方式0输出,B口为方式0输入,所以控制字为10000010B=82H

3、初始化程序

MOV AL,82H

MOV DX,24FH

OUT DX,AL

我记得有个8255A芯片,是端口拓展用的,时间太长了,具体记不清。

1、查数据手册,找8255A的指令用法,学会必须的指令。

2、查数据手册,找8255A的数据线、地址线的连接方法,看管脚图,确定原理图。

3、查数据手册,找8255A的封装,绘制电路板,Protel里有这个芯片的封装,可以直接用。

4、制板、焊件、调试,如果是面包板,就确定该连接的都连接好。

5、程序思路:

1、给8255A初始化指令,让A\B\C口都输出高或低电平,连接LED查看是否工作正常。

2、程序要求出方波,就是一会儿出高电平,一会儿出低电平就是方波。

3、主程序中:

1、初始化51的各个寄存器。

2、初始化8255A

3、发指令给8255A,让A口0线出低电平

4、第一个延时程序,控制低电平持续时间,可以用加法比较延时,也可用定时器。

5、发指令给8255A,让A口0线出高电平

6、第二个延时程序,控制高电平持续时间,同4

7、LOOP循环到程序3位置。死循环即可。

用示波器看输出的波形,调整4、6的参数,使得方波满足你要的高低电平时间,不要特意计算程序一条指令是多少时间,延时多少时间,那样即麻烦,又不准,8255A是有执行延迟的,所以用示波器看输出最准。

这些是02年我大二时学的,好久不用。

估计你是用来完成老师的作业,实际干活,没人用8255的。不知我猜对了没有。

方式控制字 =1001000B,

A口方式0输入,B口方式0输出,C口方式0输出

初始化程序如下:

MOV DX, 203H ;8255控制口地址送入DX

MOV AL,101000B ;方式控制字送入AL

OUT DX, AL ;方式控制字从AL输出到8255控制口

以上就是关于如图 1)分析各端口地址2)A口,B口工作在什么方式3)写出8255A的初始化程序全部的内容,包括:如图 1)分析各端口地址2)A口,B口工作在什么方式3)写出8255A的初始化程序、单片机8255程序求解、一道8255A的地址确定和初始化程序的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9292816.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存