单片机与8255扩展口芯片 之间 一定要用 74LS373 吗 A0 A1 接去别的引脚就不能工作了,求解释
答案:4 悬赏:80 手机版
解决时间 2021-03-29 21:36
- 提问者网友:浮克旳回音
- 2021-03-29 12:48
单片机与8255扩展口芯片 之间 一定要用 74LS373 吗 A0 A1 接去别的引脚就不能工作了,求解释
最佳答案
- 五星知识达人网友:独钓一江月
- 2021-03-29 13:19
如果使用MOVX指令,就必须用373。
如果直接用接口引线控制CS、A1、A0、WR、RD,就可以不用373。追问直接用接口引线控制CS、A1、A0、WR、RD
程序怎么写? 麻烦一下追答//8255 的数据引脚 D0~D7 接到 P0
//地址、控制引脚连接如下:
sbit CS = P2^0;
sbit A0 = P2^1;
sbit A1 = P2^2;
sbit WR = P2^3;
sbit RD = P2^4;
//写入控制字
P0 = 0x80; //1000 0000
CS = 0;
A0 = 1;
A1 = 1; //A1A0 = 11,选定控制寄存器
WR = 0; //写入
RD = 1;
WR = 1; //写毕
……
//令PA = 0x00;
P0 = 0x00; //0000 0000
CS = 0;
A0 = 0;
A1 = 0; //A1A0 = 00,选定PA
WR = 0; //写入
RD = 1;
WR = 1; //写毕
……
……
程序是很规范的,当硬件的引线有所修改,仅仅需要修改前面的引脚设定部分。
这种硬件、软件的处理方法,不涉及外部地址的问题,也就可以省掉 373。
没有地址的问题,编程的思路就简练了许多。
不用地址时,读写 8255 的操作速度,下降了不少。
====
使用三总线结构,速度确实是快了,但是三总线占用了P0、P2和P3的两条线,这就得不偿失了,用起来就会更蹩脚。
省掉了373,同时PCB面积也会降低。
成本下降了,产品的市场竞争力自然就会提高,赢利,就不用说了吧。
做过产品的人,自然都会明白这些。
如果直接用接口引线控制CS、A1、A0、WR、RD,就可以不用373。追问直接用接口引线控制CS、A1、A0、WR、RD
程序怎么写? 麻烦一下追答//8255 的数据引脚 D0~D7 接到 P0
//地址、控制引脚连接如下:
sbit CS = P2^0;
sbit A0 = P2^1;
sbit A1 = P2^2;
sbit WR = P2^3;
sbit RD = P2^4;
//写入控制字
P0 = 0x80; //1000 0000
CS = 0;
A0 = 1;
A1 = 1; //A1A0 = 11,选定控制寄存器
WR = 0; //写入
RD = 1;
WR = 1; //写毕
……
//令PA = 0x00;
P0 = 0x00; //0000 0000
CS = 0;
A0 = 0;
A1 = 0; //A1A0 = 00,选定PA
WR = 0; //写入
RD = 1;
WR = 1; //写毕
……
……
程序是很规范的,当硬件的引线有所修改,仅仅需要修改前面的引脚设定部分。
这种硬件、软件的处理方法,不涉及外部地址的问题,也就可以省掉 373。
没有地址的问题,编程的思路就简练了许多。
不用地址时,读写 8255 的操作速度,下降了不少。
====
使用三总线结构,速度确实是快了,但是三总线占用了P0、P2和P3的两条线,这就得不偿失了,用起来就会更蹩脚。
省掉了373,同时PCB面积也会降低。
成本下降了,产品的市场竞争力自然就会提高,赢利,就不用说了吧。
做过产品的人,自然都会明白这些。
全部回答
- 1楼网友:痴妹与他
- 2021-03-29 15:03
如果总线上没有别的器件,A0,A1不接373的Q0,Q1也可以,只要保证用其他方法(如IO控制)给8255的A0,A1正确的电平就行。但那样会很蹩脚,不明白你为什么不按照经典解法接线。
- 2楼网友:行路难
- 2021-03-29 14:41
不用373没问题,但是你必须把A0、A1接到P2口上(当然地址分配也就变了)。因为P0口是地址和数据复用的,在/RD、/WR信号出现时P0口相当于是数据总线。直接用接口引线控制CS、A1、A0、WR、RD建议你不要采用,程序会变得复杂,也显得不规范。追问A0、A1接到373上, 是不是自动选择的? 我没有去设置A0 A1 也可以对PA,PB脚控制
void main()
{
COM = 0x80;
do
{
PA = 0x00;
PB = 0xFE;
PA = 0x06;
PA = 0x00;
PB = 0xFd;
PA = 0x5B;
PA = 0x00;
PB = 0xFB;
PA = 0x4F;
PA = 0x00;
PB = 0xF7;
PA = 0x6D;
}
while(1);
}
如果接到P2口 程序怎样写呢?
void main()
{
COM = 0x80;
do
{
PA = 0x00;
PB = 0xFE;
PA = 0x06;
PA = 0x00;
PB = 0xFd;
PA = 0x5B;
PA = 0x00;
PB = 0xFB;
PA = 0x4F;
PA = 0x00;
PB = 0xF7;
PA = 0x6D;
}
while(1);
}
如果接到P2口 程序怎样写呢?
- 3楼网友:渊鱼
- 2021-03-29 13:38
还用373干嘛?
现在,片外存储器,都已经在单片机中集成了,如果不够用,也都用IIC器件扩充了。
8255接口,也都用595等代替了。
动态显示器的驱动,也都用串口实现了。
……
三总线的方法,太落后了,现在,那还有谁在使用?
只是学校里面,依然还讲这种没落的方法。
现在,片外存储器,都已经在单片机中集成了,如果不够用,也都用IIC器件扩充了。
8255接口,也都用595等代替了。
动态显示器的驱动,也都用串口实现了。
……
三总线的方法,太落后了,现在,那还有谁在使用?
只是学校里面,依然还讲这种没落的方法。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯