
单片机不要直接连8255,P0通过一个地址锁存器(74LS373)连8255.要用p0口先发控制字,连在8255的A0A1和CS上。
A1A0若为01、10、11,分别选中8255的B口C口和控制口。若通过锁存器连在)P0.1和P0.0,地址用16为表示,没用到的端口设为1,则FF7CH、FF7DH、FF7EH、FF7FH分别是8255的ABC及控制口的地址。具体看你的硬件电路了。所以没有固定的。
先给控制口发工作方式,如段掘90H代表工作方式0。然后再与需要用到的口传输数据。不知道有没有芦尘说清楚。
你找一本单片机书好好看看,汇编并不难,看明白汇编,单片机就理解差不多了。握哗核
8255管脚图的链接:
http://baike.baidu.com/image/58af236d558d92ce43169488
下面是8255
管脚设置,具体代码要看原理图中各管脚的连接情况。
reset
=
0
禁止复位
cs
=
0wr
=
0//允许CPU将数据或控制字写入8255
//
A1=1.A0=1;选择.控制寄存器
//假设00001111控制D口的数据,从A口输出;11110000控制D口的数据,从B口输出;实际情况由实际管脚连接决定。
d0
=
d1=d2=
d3=0
d4
=
d5=d6=d7
=
1
A1=0;A0=0;慎隐选择PA口
//pa口--数码管的段选
//根据原理图设置pa口各引脚,假设使pa输出00000001控制第1个数码管
pa0
=
pa1=pa2=pa3=pa4=pa5=pa6=
0
pa7
=
1
A1=0;A0=1;选择PB口
//PB口--数码管的位选
//根据原理图设置pb口各引脚,假设使pb输出00000001控制数码管显示0
pa0
=
pa1=pa2=pa3=pa4=pa5=pa6=
0
pa7
=
1
//=========
A1=1.A0=1;选择.控制寄存器
//假设00001111控制D口的数据,从A口输出;11110000控制D口的数据,从B口输出;实际情况由实际管脚连接决定。
d0
=
d1=d2=
d3=1
d4
=
d5=d6=d7
=
0
A1=0;A0=0;选择PA口
//pa口--数码管的段选丛隐
//根据原理图设置pa口各引脚,假设使pa输出00000010控制第2个数码管
pa0
=
pa1=pa2=pa3=pa4=pa5=pa7=
0
pa6
=
1
A1=0;A0=1;选择PB口
//PB口--数码管的位选
//根据原理图设置pb口各引脚,假设使pb输出00000001控制数码宽郑厅管显示0
pa0
=
pa1=pa2=pa3=pa4=pa5=pa6=
0
pa7
=
1
ADDR_8255A=0X0FADDR_8255B=0X00
temp1=ADDR_8255B
if(temp1!=0x00)//条件语句神拆为假
你的控制程序貌似就凳纳没有游粗枣执行!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)