『原创』讨论有关单片机内存的问题

基于Q-learning的无人机三维路径规划(含完整C++代码) 阅读详情

                                          分析单片机内存如何使用

               作者:小盒子      于:大连   2007.4.24【整理】

由于单片机的内存比较小,在以前的型号如AT89c51内存只有128byte,按照目前的电子市场飞速的发展,这么点点的内存只够做一个简单的电子系统,若是大一点的就远远不够用了,这样要么就要外扩一个静态RAM,要么就要选择一个内存比较大一点的单片机,比如:AT89S52 [256byte]\ SST89E564 [1K]等等。这样在使用KEIL软件的时候是如何适用超过128byte字节的RAM呢?很多人都有这样的疑问【当初我搞的也不是很明白】。

    在网上也看到了很多人都有这样的想法:

① 超过变量128后必须使用compact模式编译

    实际的情况是只要内存占用量不超过256.0【前提是:单片机的内存必须要大于128byte,对于at89c51来说想达到256也达不到啊,本身就不够用】 就可以用 small 模式编译。要是单片机提供的内存更大的话,那也可以在small模式编译的。
② 128以上的某些地址为特殊寄存器使用,不能给程序用

   这样的想法也是不对的,单片机与 PC 机不同,51 单片机不使用线性编址,特殊寄存器与 RAM 使用重复的地址。但访问时采用不同的指令,所以并不会占用 RAM 空间。

下面我用汇编和C语言进行解释一下上面红色字的意思:【很多人都能说出这样的道理,但是很少有人举出实际的例子供大家参考和分析,下面我会在汇编和C语言做出实际的语句,来和大家一起分析一下】

首先先给P0口赋值0x55;

P0 DATA 080H

MOV A , #55H;

MOV P0 , A;    ;因为p0口特殊功能寄存器的地址是0x80

若是往0x80地址存储数据0xAA。则需要执行以下语句

MOV RO ,#80H

MOV @R0 , #0AAH

参照上面的语句就能知道同样都是0x80地址却有着不一样的效果.

下面在写一下C语言的语句

sfr  P0 = 0x80;

unsigned char  idata  i _at_ 0x80;

void main(void)

{

    //P0口赋值0x55;

    P0 = 0x55;

    //0x80地址存储数据0xAA

    i = 0xAA;

}

根据上面总结出来的,看完所有的代码我想对大家应该有所帮助吧?仔细看看我上面的代码或我的说明,我想这个时候你应该对单片机的内存有个进一步的了解了。对你以后开发单片机应该会有所帮助的。如果你对此有所疑问,或者我的说法有错误,请您给我留言,我们共同交流,由于时间的关系,以前整理的资料好多都丢了,今天在此作了一个简单的整理并发上来,希望对看我的blog的人用……看过的人希望您能留下宝贵的意见或留言,谢谢!!!

2018安徽省青少年信息学奥林匹克(AHOI)初中组 12 种合法的排列分别为:1, 3, 2, 4, 2, 3, 1, 4, 3, 1, 4, 2, 3, 2, 4, 1, 1, 3, 4, 2, 2, 3,4,1,1,4,2,3, 2,4,1,3, 4,1,3,2, 4,2,3,1, 1,4,3,2, 2,4,3,1。分为 2 组,一组的队员实力值是{4, 5, 2, 3},一组是{-4, -3, -5},其中最小的组人数为 3,可以发现没有比 3 更优的分法了。[0, 1, 1, 2]同样不是合法的分组方案,因为出现了两个实力值为 1 的选手。 阅读详情

相关推荐

零基础玩转华为AP 4050DN-HD:FAT模式家庭无线网络配置实战

本文为零基础用户提供华为AP 4050DN-HD从FIT模式转换为FAT模式的完整实战教程。详细介绍了固件升级、模式转换以及配置家庭无线网络(包括路由、DHCP、Wi-Fi和NAT)的每一步操作,帮助用户将企业级瘦AP改造为高性能家庭胖AP,打造稳定可靠的家庭网络环境。

weixin_29196613的博客 630

keil 中51单片机变量设置过多引发地址错误的处理方法

在keil中我们编写51程序的时候可能会遇到下图中的错误!翻译过来意思大概是变量地址超出的问题; 主要问题是我们在C51单片机的“data”数据区写入的变量过多;用STC12C5A60S2举例,这个芯片的data区是不能超过128的;目前我这个是超过了,所以会报错; 那处理这个的方案是什么呢?这个时候我们需要设置一下keil的配置,把变量信息存储在xdata中;xdata是什么意思,这个可以自己百度; 集体配置步骤如下图 ...

随风@飘扬 2905

从 Pandas 到 Polars 十八:数据科学 2025,对未来几年内数据科学领域发展的预测或展望

Rust 在数据科学家中的普及将受到 Polars 的推动,用户会发现从使用 Python 切换到 Rust API 的门槛相对较低——比从 Pandas 切换到 C 的门槛要低得多!在数据科学蓬勃发展的十年里,我所在领域的日常工作主要由像 Python 这样的动态语言或像 R 和 Julia 这样使用即时编译的语言主导。尽管这两个库的功能有很多重叠,但有些人会想要一个像 DuckDB 这样的工具,它拥有更多关系型数据库的陷阱,而有些人则不会。然而,一位受访者正确地指出,基于GPU的库(如cuDF)更快。

sosogod的博客 2467

单片机编程遇到'DATA' SEGMENT TOO LARGE怎么解决?

写单片机程序遇到'DATA' SEGMENT TOO LARGE,说明128字节的data数据空间已经用完。 解决办法有二: ①在数组前加code。 ②使用xdata数据空间(但是自己在写点阵屏显示程序时,将Target->Memory Model 中的值改为[Large:variables in XDATA ],不显示内容了,不知道为什么)。

Little devil 3万+

Linux yum源配置以及yum命令讲解

前面为大家介绍了RPM二进制包安装软件,RPM包安装的最大的缺点也提到过,就是依赖性太强,一旦遇到依赖问题,则需要我们手动解决包之间具有依赖性的问题,今天为大家介绍一种可自动解决包之间依赖关系的安装方式:yum。 yum 全称“Yellow dog Updater, Modified”,是一个专门为了解决包的依赖关系而存在的软件包管理器。就好像 Windows 系统上我们通常可以通过各种软件管家实现软件的一键安装、升级和卸载,yum就是Linux 系统中的一键安装工具。yum 解决依赖关系的基本逻辑是:yu

九派Linux的博客 2283

第二十届全国大学生智能车竞赛-地瓜机器人智慧医疗挑战赛技术解析与实战指南

本文深入解析了第二十届全国大学生智能车竞赛-地瓜机器人智慧医疗挑战赛的核心技术。内容涵盖从零搭建数字孪生环境、实现AI视觉任务(二维码识别、引导线追踪、目标检测)、在边缘设备部署轻量化大模型进行图生文描述,到遥操作与自主控制的平滑切换,并提供了基于ROS2的系统集成与赛场实战指南,助力参赛者高效备赛。

weixin_29252171的博客 2771

C51单片机内存优化

52本身有256B的数据存储区,如果没在意一些细节,很容易出现RAM超过128就报错的情况。现讲其问题解释如下:   最常见的是以下两种:   ① 超过变量128后必须使用compact模式编译,实际的情况是只要内存占用量不超过256.0,就可以用 small 模式编译   ② 128以上的某些地址为特殊寄存器使用,不能给程序用。与 PC 机不同,51 单片机不使用线性编址,特殊寄存器与 R

colorful technology,wonderful life!---多彩科技,技术人生! 1394

手把手教你完成YOLOv11分类识别界面搭建,使用Qt6设计YOLOv11分类识别系统,前台系统+后台管理系统开发实战,全网最详细教程

本项目结合YOLOv11分类识别算法和PySide6框架,开发了一套图形化分类识别系统。系统支持图片、视频和摄像头实时分类检测,并具备完善的用户管理功能,包括登录验证、个人信息修改等模块。最新版本新增了管理员后台管理系统,包含用户管理、权限控制等功能。系统采用MySQL数据库存储用户数据,界面设计采用QtDesigner完成,实现了高效的目标分类与友好的交互体验。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1051

keil编译输出的信息program size含义,以及个人使用中的编译内存溢出问题

keil编译时出现内存地址溢出的问题,及解决办法

weixin_43794311的博客 978

VT-Refine:基于仿真微调的视觉-触觉反馈双臂装配强化学习

本研究提出VT-Refine框架,通过融合真实世界示范、高保真触觉仿真与强化学习,解决高精度双臂装配任务。方法分为两阶段:首先利用少量人类示范数据预训练视觉-触觉扩散策略;随后在数字孪生仿真环境中进行强化学习微调。关键创新包括:开发GPU加速的触觉仿真模块精确模拟压阻式传感器;采用基于点云的多模态表征实现无缝的跨领域迁移。实验表明,该方法在五个双臂装配任务中显著提升性能,触觉反馈使成功率提高40%。研究首次实现仿真环境中的大规模双臂视觉-触觉强化学习及sim-to-real迁移,为接触密集型任务提供了新解决

2506_90492529的博客 1795

【产品】 产品设计:如何解决铝合金氧化着色后表面硬度低的问题(硬质氧化)

1、氧化处理技术 1)化学氧化 化学氧化处理所获得的膜层较薄,一般厚度为0.5μm ~4μm,质软不耐磨,抗蚀能力低于阳极氧化膜。 一般不宜单独便用,由于化学氧化膜吸附能力好,主要作用于油漆的底层,化学氧化按其溶液性可分为碱性和酸性两种。按其膜层性质可分为氧化膜,磷酸盐膜、铬酸盐膜及磷酸一铬酸盐膜等(这类型的氧化膜是可导电)。 2)电化学氧化(阳极氧化) 电化学氧化(俗称阳极氧化)是铝及...

产品线负责人 9731

浅谈 C51 内存优化

 http://www.ec66.com/article/list.asp?indexid=2296〖文章转载或出处〗≡中国电子技术信息网≡ 网址:www.EC66.com 浅谈 C51 内存优化     对 51 单片机内存的认识,很多人有误解,最常见的是以下两种① 超过变量128后必须使用compact模式编译   实际的情况是只要内存占用量不超过 256.0 就可以用 small 模

nataka的专栏 1551

从零开始:C#上位机集成YOLO完成摄像头目标追踪(保姆级教程)

新手入门C#上位机+YOLO做摄像头目标追踪,最忌讳的是“只抄代码,不懂逻辑”。这个教程不仅给了完整代码,还把核心原理和踩坑点都讲清楚了,新手跟着走,不仅能跑通demo,还能理解为什么这么写。如果你们在运行时遇到具体问题,比如模型导出失败、代码报错,都可以在评论区留言,我会一一解答。后续也可以出一期工业相机+YOLO目标追踪的教程,帮助大家把demo落地到实际生产中。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1030

[技术讨论]什么是DMA技术

所以为了解决转移数据占用CPU资源的这个痛点,所以芯片工程师开发了一种叫做DMA的模块,专门用来转移数据:内存和外设双向转移数据,在这个过程就不再需要内核的参与,就将CPU的资源完全释放出来。在DMA工作过程中,CPU不需要一直参与,只需要在内存和外设之间建立一个通道,让它们自己传射就可以了,所以DMA戏称数据世界的搬运工。在这些转移的过程,使用DMA(直接存储器存取)的方式的好处是不需要CPU的干预而直接服务外设,这样CPU就可以去干其他是事情,可以大大减轻CPU的工作量,从而可以提高系统的效率。

ic2121的博客 232

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

XMOVE3.0手持终端——软件介绍(四):在2KB内存的单片机上实现的超精简五子棋对战算法(原创)...

一. 综述   这是我两年前完成的一个小项目,它基于我开发的XMOVE动作感应系统平台。五子棋算法网上随便一搜到处都是,不过值得自豪的是,我在2KB内存的单片机上不仅跑上了我自制的嵌入式OS,还能同时跑五子棋。这是界面截图:    以下是它的功能和特性: 内存占用极低,约600byte 执行一次迭代过程,算法在初级水平(同学,这是单片机,不是电...

weixin_33923148的博客 175

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

[技术讨论]行车记录仪WIFI卡顿花屏问题分析

4、将WIFI的供电电源接到外部的直流电源上,将电源从2.5V依次调到3.6V来测试。相关电源电路如下图,3. 因为WIFI的是SDIO数据接口,和TF卡一样,所以它们的数据走线下是不能走电源线的。实验结果:通过对比测试,700KB/S的速率比其他两者的要好点,可以判定速率是有影响,但降低也是解决不了卡顿问题,说明其还不是主要原因。下图是这WIFI模块的走线情况,它的电源走在了表层,刚好压到了上图中主板上的走线,实验方法:1、测各电源的纹波,测到系统内核电源1.1V处的纹波有点大,所以将电感。

ic2121的博客 543

虚拟内存1

真棒! 20 张图揭开内存管理的迷雾,瞬间豁然开朗 原创小林coding小林codinghttps://mp.weixin.qq.com/s/HJB_ATQFNqG82YBCRr97CA 2020-06-29 每日英语,每天进步一点点 前言 之前有不少读者跟我反馈,能不能写图解操作系统? 既然那么多读者想看,我最近就在疯狂的复习操作系统的知识。 操作系统确实是比较难啃的一门课,至少我认为比计算机网络难太多了,但它的重要性就不用我多说了。 学操作系统的时候,主要痛苦的地方,有太...

qq_40826814的博客 190

51单片机用热敏打印机模块HPD482打印数字字符串

使用标准库“stdio.h”里的sprintf函数,这个函数可以将数字转换成字符串。比如打印数字56,先转换成字符串格式,再扔到打印函数Print_SStr里打印,代码如下:

m0_52650614的博客 2280

(第9-10讲)STM32F4单片机,FreeRTOS任务创建和删除(动态方法)【视频笔记、代码讲解】【正点原子】【原创】

(第9-10讲)STM32F4单片机,FreeRTOS任务创建和删除(动态方法)【视频笔记、代码讲解】【正点原子】【原创】

本不平凡 676

嵌入式开发学习笔记4-了解单片机中的存储器

嵌入式开发学习笔记4-了解单片机中的存储器单片机的物理结构程序存储器(ROM)数据存储器(RAM)工作寄存器区(00H-1FH)位寻址区(20H-2FH)用户RAM区(30H-7FH)特殊功能寄存器区(80H-FFH) 单片机的物理结构 MCS-51单片机存储器采用哈佛结构(har-vard)(哈佛结构就是一个计算机架构,类似于冯诺伊曼结构,但是两者有很大区别)在物理结构上分为程序存储器空间和数据...

weixin_44985601的博客 1053

韦东山FreeRtos的内部机制,截图+学习笔记【2000字】【原创】

韦东山FreeRtos的内部机制,截图+学习笔记【2000字】【原创】

本不平凡 4722

[原创]STM32 BOOT模式配置以及作用

一、三种BOOT模式介绍 所谓启动,一般来说就是指我们下好程序后,重启芯片时,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存。用户可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启动模式。 Main Flash memory是STM32内置的Flash,一般我们使用JTAG或者SWD模式下载程序时,就是下载到这个里面,重启后也直接从这启动程序。 System memory从系...

weixin_34349320的博客 3396

已初始化和未初始化的局部变量和全局变量在内存中如何分布?BSS段通常是指用来存放程序中未初始化的全局变量的一块内存区域由操作系统初始化(清零,裸机程序需要手动清零),BSS 段不占用可执行文件的空间。

已初始化和未初始化的局部变量和全局变量在内存中如何分布? 阿基米东 2020-12-31 01:00:22 415 收藏 分类专栏: 嵌入式面试精选 文章标签: C语言 面试题 内存分布 堆栈 版权 玩转STM32MP1 从 STM32MP1 开始玩转 Linux 阿基米东 ¥9.90 订阅专栏 在 C 语言中,通常可以把内存理解为四个分区:栈、堆、全局/静态存储区和常量存储区。 栈(stack,也称“堆栈”) 通常是用于存储在编译期间就能确定存储大小的变量,用于在函数作用域内创建,在离开作用域..

二进制模----细微行动改变影响世界 6283

STM32 系列使用知识问题笔记

以后把使用过程自己遇到需要查询的问题记录在这篇博客,也不至于到处乱记录,用了就忘了。

不浮夸,不将就,认真对待学知识的我们 1600

关于 RK3568的linux系统killed用户应用进程(用户现象为崩溃) 的解决方法

RK3568运行播放7路rtsp播放,时间几个小时就崩了,定位该问题,分析原因

长沙红胖子 Qt・西安|省级科研团队从业背景,深耕双一流体系高精尖技术配套研发|剥离高精尖机理,沉淀高端特种行业领域 Qt 工程化落地经验|博文仅分享通用技术总结,输出公开普适工程思路。 1万+

嵌入式面试经典30问与非标准答案

原问题见 https://blog.youkuaiyun.com/xydlxd118/article/details/105707499 1. 讲一下stm32的时钟系统 时钟在MCU中的作用,就好比于人类的心脏一样不可或缺。STM32有多个时钟源可以使用。因为STM32拥有丰富的外设资源,不同外设使用的时钟也会不一样,同时我们要知道时钟越快,功耗就越大,抗电磁干扰的能力就会减弱,因此,比较复杂的MCU 都会采用多时钟来解决这些问题。 STM32 有5个时钟源:HSI、HSE、LSI、LSE、PLL。 ①、HSI是

qq_39294918的博客 6562

原创丨嵌入式IMX6ULL学习指引-四大要点-简单也实用

这个部分十分重要!初学者一定要认真看一遍! 我们主要讨论嵌入式技术学习方法,这里主要是针对嵌入式软件。 嵌入式技术是一门边缘科学(又称交叉科学),涉及的内容非常广泛,前几年很多学校,包括一流的大学都在讨论要不要设置这个专业。不是说设置这个专业本身有什么问题,而是因为课程设置不容易安排,如果偏硬件的话就成了电子工程一类的专业,如果偏软件一些就和计算机专业的课程体系雷同了。 正因为如此,很多人在学习嵌入式技术的时候,不知道从哪方面入手,因为知识体系非常庞杂,如果没有指导,很可能会长时间不得要领,学习效率会很差。

mucheni的博客 1159
上一篇: IC封装大全2
下一篇: 5.1期间......
SmallBox00
博客等级 码龄20年 61粉丝 307原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值