c51单片机动态内存分配
2页1、Keil51 动态内存分配问题经验 KeilKeilKeilKeil 51515151 动态内存分配问题经验动态内存分配问题经验 动态内存一般分配在堆中,而静态的内存一般分配在栈中;Keil51 中提供了 一个建立堆的函数,就是 init_mempool(首地址,大小) ,首地址被定义为 xdata 的地址空间,这个函数可以在 xdata 中定义一个可以动态分配的堆;因为在 51 中,data 区域的空间太小,要动态分配空间,考虑到程序的运行,是不合理的, 所以必须在 xdata 中建立可以动态分配的堆。 STC12C5A60S2 内部集成了 256 字节的 RAM,存储类型为 data,地址是 00HFFH。其中低 128 字节是工作寄存器组,包括 R0R7,地址为 00H1FH, 20H2FH 地址区为位寻址区,30H7FH 为普通 RAM 区;高 128 字节为普通的 RAM 区。内部 RAM 中,30HFFH 都是普通用户 RAM 和堆栈区,可以用来进 行内存分配,总共 208 字节;实际在程序运行中,要在这 208 字节分配一个堆栈 进行动态的内存分配,对于其他的程序运行会有
2、很多不便。 STC12C5A60S2 可用的内部扩展 RAM 的地址空间是:0x0000x3ff 这一地 址空间,存储类型为 xdata,这部分空间总共占 1K 字节,可以用来作为堆栈区, 进行内存动态分配。 STC12C5A60S2 可以扩展 64K 外部 xdata,在没有进行扩展外部存储器的情 况下,最好使用上述内部扩展的 1K 字节,地址为 0x0000x3ff 的存储器。 对于其他的 51 单片机,用户可以参考芯片手册查看系统内部的以及扩展的 RAM 空间大小和地址,确定 data 和 xdata 范围,根据需要自行定义。 目前,我使用 STC12C5A60S2 总结了两种动态定义的方式。 方式一:给定地址区域方式一:给定地址区域 init_mempool(0x0000,0x03ff);/内部扩展 1K 字节的空间, /都可以作为堆栈空间进行内存分配; 数据结构: typedef struct STU uint8 id; struct STU *next; *PSTU,STU_t; 注意:注意:一定在使用一定在使用一定在使用一定在使用 init_mempoolinit_mem
《c51单片机动态内存分配》由会员小**分享,可在线阅读,更多相关《c51单片机动态内存分配》请在金锄头文库上搜索。
2020年高考真题——理科综合(全国卷Ⅲ)+Word版含答案
2021年绝味鸭脖策划书
2021年熟食店创业方案
2021年熟食店开店策划
2021年卤菜店创业计划书
2021年周黑鸭网络营销策划方案
东大21年1月考试《现代设计方法》考核作业
谈我国行政管理效率的现状及其改观对策(论文)
单证员考试-备考辅导-复习资料:无贸易背景信用证案分析.docx
土木工程毕业生答辩自述.docx
建筑学毕业后工作状态真实写照.doc
C#代码规范(湖南大学).doc
xx区食药监局2019年工作总结及2020年工作计划
2019年中医院药物维持治疗门诊工人先锋号先进事迹
2019年度xx乡镇林长制工作总结
2019年性艾科工作计划书
2019年人才服务局全国扶贫日活动开展情况总结
关于组工信息选题的几点思考
摘了穷帽子 有了新模样
2019年某集团公司基层党支部书记培训班心得体会
2024-04-08 33页
2024-04-08 10页
2024-04-08 25页
2024-04-08 12页
2024-04-08 10页
2024-04-08 21页
2024-04-08 40页
2024-04-08 34页
2024-04-08 28页
2024-04-08 28页