当前位置:首页 > 芯闻号 > 充电吧
[导读]8255 是用来扩充接口的芯片。用上一片 8255,就可以为系统增加 3 个 8 位的 IO 接口。在单片机的教材上,总是使用“三总线”的方式来连接 8255。在这样的条件下,输入/输出数据的速度确实

8255 是用来扩充接口的芯片。


用上一片 8255,就可以为系统增加 3 个 8 位的 IO 接口。


在单片机的教材上,总是使用“三总线”的方式来连接 8255。


在这样的条件下,输入/输出数据的速度确实是比较快,一般用 2 个机器周期,就可以读/写一次。


但是,采用这种形式,电路则是相当麻烦的,必须加上一个锁存器芯片(74LS373);

并且,对于单片机的引脚,占用的也太多了,如 P0、P2,还要占用 P3.6、P3.7。

呵呵,占用了单片机自身 2 个半的接口,仅仅换来 3 个接口,有点得不偿失。


如果搞清楚了 8255 的读写时序,使用单片机的接口引线“直接控制” 8255,效果则要好的多。


下图就是一个“直接控制” 8255 的电路。



在图中可以看出,仅仅使用了 P0 和 P2 的四个引脚,就近,和 8255 进行连接。


不但节省了引脚数目,而且非常灵活。


在设计实际应用的电路板时,可以随意的就近使用引脚,而不必拘泥于 P0、P3.6、P3.7 等引脚。


当把 8255 PA 输入的开关量,输出到 PC 口,使用如下的程序即可。


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


汇编语言:

;-----------------------------------

sbit RD_8255 = P2^0  ;设定相关引脚

sbit WR_8255 = P2^1  ;

sbit A0_8255 = P2^2  ;

sbit A1_8255 = P2^3  ;

;-----------------------------------

    ORG   0000H

    MOV   P0, #92H   ;PA输入, PB PC输出

    CLR   WR_8255    ;写入控制寄存器

    SETB  WR_8255

;---------------------

LOOP:

    MOV   P0, #255   ;输出1

    CLR   A1_8255    ;选定PA

    CLR   A0_8255

    CLR   RD_8255    ;读

    NOP              ;稍延时,以保证宽度

    MOV   A, P0      ;读出

    SETB  RD_8255

;---------------------

    SETB  A1_8255    ;选定PC

    CLR   A0_8255

    MOV   P0, A      ;写

    CLR   WR_8255    ;写入

    SETB  WR_8255

;---------------------

    SJMP  LOOP

END

;-----------------------------------


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


C 语言:

//----------------------------------

#include


sbit RD_8255 = P2^0;

sbit WR_8255 = P2^1;

sbit A0_8255 = P2^2;

sbit A1_8255 = P2^3;


main()

{

    char  aa;


    P0 = 0x92;   //控制字: PA输入, PB PC输出

    A1_8255 = 1;  A0_8255 = 1; //选中控制寄存器

    WR_8255 = 0;  WR_8255 = 1; //写


    while(1)  {


      P0 = 0xff;   //先输出1

      A1_8255 = 0;  A0_8255 = 0; //选中PA

      RD_8255 = 0;  aa = P0;  RD_8255 = 1; //读


      P0 = aa;     //这是刚才读入的

      A1_8255 = 1;  A0_8255 = 0; //选中PC

      WR_8255 = 0;  WR_8255 = 1; //写


    } 

}

//----------------------------------


如果需要用 PB 输出数据,如下即可:


    P0 = 0xB0;   //输出数据

    A1_8255 = 0;  A0_8255 = 1; //选中PB

    WR_8255 = 0;  WR_8255 = 1; //写


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


因为没有使用“三总线”方式,所以,也就没有接口地址的问题。


那么,一般的教材中所说的片外地址,就没有用了。


下面这些 C 语言中的头文件、宏定义,也用不上了:


#include

#define PA XBYTE[0xE000]  /*PA口地址*/ 

#define PB XBYTE[0xE001]  /*PB口地址*/ 

#define PC XBYTE[0xE002]  /*PC口地址*/ 

#define CON XBYTE[0xE003] /*控制字地址*/ 


呵呵,好多知识,统统都没有用了,罪过罪过...


按照这种方式,读写 IO 口的速度,确实是降低了一些,但是,对于速度要求不太敏感的场合,还是非常适用的。


因为节省了一个锁存器芯片,PCB 板的面积,也可以缩小,这就直接使硬件成本得到降低。


有时,一个产品,是否能够占领市场,成本才是关键,读写速度慢上几个微秒,对性能的影响极其微小。





~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭