找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

51单片机扩展片外ram后的C语言编程问题

查看数: 5149 | 评论数: 7 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-3-30 22:04

正文摘要:

如图,扩展了一片6116,C语言编程创建一个数组,储存在片外ram,再次调用数组时要考虑硬件电路(地址)吗?

回复

ID:785907 发表于 2020-6-30 02:00
kmsj 发表于 2020-3-31 14:04
都什么年代了?还研究6116?6116是总线型单片机的产物,以后设计电路,用到6116的可能性几乎为零,没有特殊 ...

不是实用不实用的问题, 是因为现在高校设计都是要用这些旧芯片,我就是设计被要求扩展6116并使用的。
ID:383215 发表于 2020-3-31 22:39
f556 发表于 2020-3-31 16:40
非常精辟,精单的事情不要复杂化。当用了6116后,发现IO不够了,是否再加一片IO扩展!另外csmyldl的回答 ...

你说的也非常精辟,51单片机通过6116外扩2K×8位的RAM,要用掉十几个IO口,按现在主流的非总线单片机而言,绝对是一件大亏本的事情,现在的主流单片机,内部资源已经非常丰富了,IO口反而显得比较珍贵。
ID:282850 发表于 2020-3-31 16:40
kmsj 发表于 2020-3-31 14:04
都什么年代了?还研究6116?6116是总线型单片机的产物,以后设计电路,用到6116的可能性几乎为零,没有特殊 ...

非常精辟,精单的事情不要复杂化。当用了6116后,发现IO不够了,是否再加一片IO扩展!另外csmyldl的回答也有道理,我一般大的数组放在DATA 或者const。
ID:383215 发表于 2020-3-31 14:04
都什么年代了?还研究6116?6116是总线型单片机的产物,以后设计电路,用到6116的可能性几乎为零,没有特殊要求,就不要研究6116了,上个世纪80年代左右,单片机基本只有一种,就是51单片机,51单片机就是典型的总线型单片机,为了扩展使用,就用总线扩RAM、IO口等,优点是是在当时的技术下,可以设计出比较复杂的电路,缺点还是电路复杂、成本太高、抗干扰差。6116好像是2K×8的RAM,很早以前研究过6264、2764之类的东西,好像还需要一片74LS373,汇编语言和C语言都有专门读外部RAM的指令和语句。现在的单片机都是以非总线型单片机为主,像AVR或者STM32,片内达到2K×8的RAM或者EEPROM多得是。
ID:708783 发表于 2020-3-31 09:48
不用考虑,只要不超过范围即可
ID:235200 发表于 2020-3-31 01:05
数组用xdata定义,不需要
ID:114631 发表于 2020-3-30 22:04
电路里的6116的地址范围是0x0000~0x07ff。存储在外部ram的数组或变量,使用xdata进行定义,注意不要超过6116地址范围。使用时,可以像正常的内部变量进行读写即可,不用考虑硬件的地址。
例如:
xdata char buf[10];//定义外部数组buf[]
char a; //定义内部变量a
buf[0]=1;//外部数组buf[]写
a=buf[0];//外部数组buf[]读

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表