外部RAM超过64K时,C51还能用吗

hujun1998 2003-08-21 11:35:31
我用89C52外括128K的RAM,请问用C51如何定义超过64K空间的数组变量。请高手指点
email:hujun1998@sina.com.cn
...全文
140 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
pchia 2003-08-26
  • 打赏
  • 举报
回复
去看看最新的KEIL C51资料吧,,里面说的很详细,,,如果你要求的是硬件电路如何做到,,那么楼上的基本上说得很详细了,,当然你也可以采用兼容51的其他单片机,华邦的438就可以寻址到1M的内存容量。
bendragon 2003-08-23
  • 打赏
  • 举报
回复
可以,可设64K为一段,直接对段进行操作及可,可用138进行片选
taoest 2003-08-23
  • 打赏
  • 举报
回复
51只能寻址64k,超过的话就不能直接寻址.
可以自己用一些GPIO来充当地址线,自己来控制.自己想用哪一片内存时,就通过这几条线来确定,这样可以做很多片,每片内存最大64k
hujun1998 2003-08-22
  • 打赏
  • 举报
回复
如何计算?是否有内存管理的相关资料和例子程序?
uhml 2003-08-21
  • 打赏
  • 举报
回复
要产生连续地址,可以参考一下
《单片机外围器件实用手册(存储器分册)》
第六章 存储器扩展技术
http://home.91i.net/richardhuang/
tianfang 2003-08-21
  • 打赏
  • 举报
回复
能,
比如用一个输出口接存储器的最高地址位

但是需要自己写内存管理
CrazyGentleman 2003-08-21
  • 打赏
  • 举报
回复
所谓内存管理就是精确计算每段的起始地址和结束地址。
zhyinfo 2003-08-21
  • 打赏
  • 举报
回复
最好用分页方法,用指针。编程简单一些。
hujun1998 2003-08-21
  • 打赏
  • 举报
回复
如何写内存管理,请天放大哥指教。
OICQ:42575856
电话:0311-6673421
tianfang 2003-08-21
  • 打赏
  • 举报
回复
1个不够的话就2个输出口,每个段32K
---------------------------------- Keil C51语言使用技巧及实战_周立功书籍 ---------------------------------- PDF文件,带书签功能,阅读非常方便,不是精品我不发. -----------目录------------------- 介绍 第一章 硬件 1 概述 2存储区结构 2.1 CODE 区 2.2 DATA 区 2.3 特殊功能寄存器 2.4 IDATA区 2.5 XDATA区 3 位操作和布尔逻辑 4 寻址方式 5 处理器状态 6 电源控制 6 中断系统 6.1 中断优先级寄存器 6.2 中断使能寄存器 6.3 中断延迟 6.4 外部中断信号 7 内置定/计数器 7.1 定器工作方式 0 和方式 1 7.2 定器工作方式 2 7.3 定器工作方式 3 7.4 定器 2 8 内置 UART 8.1 UART模式0 8.2 UART模式1 8.3 UART模式2 9 其它功能 9.1 I2C 9.2 A/D转换 9.3 看门狗 10 设计 11 实现 第二章 用 C 对 8051 编程 1 为什么要用高级语言 2 C 语言的一些要点 2.1 结构 2.2 联合 2.3 指针 2.4 类型定义 3 Keil C和ANSI C 3.1 数据类型 3.2 特殊功能寄存器 4 存储类型 4.1 DATA 区 4.2 BDATA区 4.3 IDATA段 4.4 PDATA和XDATA段 5 指针 6 中断服务 6.1 指定中断服务程序使用的寄存器组 7 再入函数 8 使用 Keil C 应做的和应该避免的 8.1 采用短变量 8.2 使用无符号类型 8.3 避免使用浮点指针 8.4 使用位变量 8.5 用局部变量代替全局变量 8.6 为变量分配内部存储区 8.7 使用特定指针 8.8 使用调令 8.8 使用宏替代函数 9 存储器模式 10 混合存储模式 11 运行库 12 动态存储分配 13 结论 第三章 使用软件补充硬件 1 介绍 2 使用小存储模式 3 使用液晶驱动 3.1 LCD驱动接口 4 显示数据 4.1 定制 printf 函数 5 使用定计数器来计 6 使用系统标做用户接口 7 改进钟软件 8 优化内部 RAM 的使用 9 完整的程序 10 使用看门狗定器 12 保存系统数据 13 结论 第四章 在 8051 上使用汇编和 C 1 介绍 2 增加段和局部变量 3 设置变量地址 4 结合C和汇编 5 内联汇编代码 6 提高编译器的汇编能力 7 仿真多级中断 8 序问题 9 结论 第五章 系统调试 1 介绍 2 通过系统设计来帮助调试 3 使用调试端口 4 使用Monitor-51 5 利用I/0端口进行调试 6 使用ICE 7 结论 第六章 中断系统 1 介绍 2 中断驱动系统和查寻系统 3 中断的电平和边沿触发 3.1 电平触发中断 3.2 边沿触发方式 4 共用中断 6 扩充外部中断数 7 中断服务程序 8 结论 第7章 串行口 1 介绍 2 慢速串行口和PC的接口 3 高速串行I/O 4 结论 第八章 8051的网络设计 1 复合串行端口 2 队列实行 3 使用内置定器作TDMA控制 3 保持节点器件同步 4 CSMA网络 5 结论 第九章 控制编译和连接 1 把C代码转变成Keil C代码 2 把汇编代码转换成Keil汇编代码 3 使用using关键字 4 控制连接覆盖过程 5 使用64K或更多RAM 6 使用64K以上的代码空间 7 结论 第十章 8051的模糊控制 1 介绍 2 什么是模糊逻辑 3 模糊系统的结构 4 模糊控制使用的场合 5 进行模糊控制 6 模糊功能的实现 7 方案调整 8结论 总结 ----------------------------------
51汇编语言指令集 符号定义表 符号 含义 Rn R0~R7寄存器n=0~7 Direct 直接地址,内部数据区的地址RAM(00H~7FH) SFR(80H~FFH) B,ACC,PSW,IP,P3,IE,P2,SCON,P1,TCON,P0 @Ri 间接地址Ri=R0或R1 8051/31RAM地址(00H~7FH) 8052/32RAM地址(00H~FFH) #data 8位常数 #data16 16位常数 Addr16 16位的目标地址 Addr11 11位的目标地址 Rel 相关地址 bit 内部数据RAM(20H~2FH),特殊功能寄存器的直接地址的位 指令介绍 指令 字节 周期 动作说明 算数运算指令 1.ADD A,Rn 1 1 将累加器与寄存器的内容相加,结果存回累加器 2.ADD A,direct 2 1 将累加器与直接地址的内容相加,结果存回累加器 3.ADD A,@Ri 1 1 将累加器与间接地址的内容相加,结果存回累加器 4.ADD A,#data 2 1 将累加器与常数相加,结果存回累加器 5.ADDC A,Rn 1 1 将累加器与寄存器的内容及进位C相加,结果存回累加器 6.ADDC A,direct 2 1 将累加器与直接地址的内容及进位C相加,结果存回累加器 7.ADDC A,@Ri 1 1 将累加器与间接地址的内容及进位C相加,结果存回累加器 8.ADDC A,#data 2 1 将累加器与常数及进位C相加,结果存回累加器 9.SUBB A,Rn 1 1 将累加器的值减去寄存器的值减借位C,结果存回累加器 10.SUBB A,direct 2 1 将累加器的值减直接地址的值减借位C,结果存回累加器 11.SUBB A,@Ri 1 1 将累加器的值减间接地址的值减借位C,结果存回累加器 12.SUBB A,0data 2 1 将累加器的值减常数值减借位C,结果存回累加器 13.INC A 1 1 将累加器的值加1 14.INC Rn 1 1 将寄存器的值加l 15.INC direct 2 1 将直接地址的内容加1 16.INC @Ri 1 1 将间接地址的内容加1 17.INC DPTR 1 1 数据指针寄存器值加1 说明:将16位的DPTR加1,当DPTR的低字节(DPL)从FFH溢出至00H,会使高字节(DPH)加1,不影响任何标志位 18.DEC A 1 1 将累加器的值减1 19.DEC Rn 1 1 将寄存器的值减1 20.DEC direct 2 1 将直接地址的内容减1 21.DEC @Ri 1 1 将间接地址的内容减1 22.MUL AB 1 4 将累加器的值与B寄存器的值相乘,乘积的低位字节存回累加器,高位字节存回B寄存器 说明:将累加器A和寄存器B内的无符号整数相乘,产生16位的积,低位字节存入A,高位字节存入B寄存器。如果积大于FFH,则溢出标志位(OV)被设定为1,而进位标志位为0 23.DIV AB 1 4 将累加器的值除以B寄存器的值,结果的商存回累加器,余数存回B寄存器 说明:无符号的除法运算,将累加器A除以B寄存器的值,商存入A,余数存入B。执行本指令后,进位位(C)及溢出位(OV)被清除为0 24.DA A 1 1 将累加器A作十进制调整, 若(A) 3-0>9或(AC)=1,则(A) 3-0←(A)3-0+6 若(A) 7-4>9或 (C)=1,则(A) 7-4←(A)7-4+6 逻辑运算指令 25.ANL A,Rn 1 1 将累加器的值与寄存器的值做AND的逻辑判断,结果存回累加器 26.ANL A,direct 2 1 将累加器的值与直接地址的内容做AND的逻辑判断,结果存回累加器 27.ANL A,@Ri 1 1 将累加器的值与间接地址的内容做AND的逻辑判断,结果存回累加器 28.ANL A,#data 2 1 将累加器的值与常数做AND的逻辑判断,结果存回累加器 29.ANL direct,A 2 1 将直接地址的内容与累加器的值做AND的逻辑判断,结果存回该直接地址 30.ANL direct,#data 3 2 将直接地址的内容与常数值做AND的逻辑判断,结果存回该直接地址 31.ORL A,Rn 1 1 将累加器的值与寄存器的值做OR的逻辑判断,结果存回累加器 32.ORL A,direct 2 1 将累加器的值与直接地址的内容做OR的逻辑判断,结果存回累加器 33.ORL A,@Ri 1 1 将累加器的值与间接地址的内容做OR的逻辑判断,结果存回累加器 34.ORL A,#data 2 1 将累加器的

27,382

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧