单片机的“灵魂”—数据存储器的使用

最新更新时间:2015-01-20来源: 互联网关键字:存储器  单片机  灵魂 手机看文章 扫描二维码
随时随地手机看文章
我们可以说程序存储器的里面存放的是单片机的灵魂,它就是工作程序。小的可能只有1KB(最多只能装1024条8位数据,因为实际指令还有许多2字节、3字节指令,所以它还装不下1024条指令)大的也有128KB的。这些8位数据要么在工厂里做摸子光刻进去,要么一次性的烧写进去,要么……用编程器这个特殊工具把调试成功的机器码装载进去,或者像AVR单片机那样自己花几块钱做一条下载线,把电脑里这些东西灌进去(或许是AVR最吸引人之处),它一旦进驻电脑的程序存储器中,除了借助上述装置便不能自由改写,在单片机运行时,只是从其中读出指令或固定的数据,所以给程序存储器一个“只读存储器”的别名,简写为ROM,包括用编程器写紫外线擦除内容的EPROM.用电擦除的EEPROM和现在新兴的FLASH ROM;一次性写入的ROM仅用于电路和程序固定的批量产品中,实际工作起来,都是一样的。

在实际的使用中,单片机运行时为了定位ROM中的数据,其实每个8位存储单元都有一个固定的“地址”,通常用16进数表示:例如对于一个所谓4K的ROM,地址从0000H到0FFFH,(即是从0000,0001…4095),单片机运行时从哪个地址取数据,完全由程序本身决定,并不要我们干预。记住,给单片机一通电,它经过一个短暂的复位过程,立即转向ROM的最低地址0000H,在这里面放置的往往是一条“跳转”指令,它从这里一步跳到另一个地址:程序的真正起始地址,例如51机的0080H.难道ROM中就只有指令不能来点别的?ROM是程序存储器,除了指令外还包括运行程序必须的某些固定数据。假如,我们要求在单片机的某口上输出00H到FFH(255)按正弦半波变化的数值,每秒10000次,那如果硬要它按照公式一个个计算,对于它来说未免力不从心,可是我们可以把预先计算好的数值存入ROM中,到时候直接取出。

提到数据存储器,它其实是个可以随时存取数据的一块存储器,也就是可以读(取)也可以写(存)的存储器,简称RAM.现在的单片机里面使用的RAM属于静态RAM或SRAM,这个和电脑用的内存条有所不同,只要你把数据写入SRAM后,只要不断电,或者不清除掉,这个数据就一直保存在那里,电脑是用的动态RAM,要不断给它加刷新脉冲才能保存数据。因为单片机处理的信息量比电脑小很多,所以它带的RAM也比较少:从完全不带、带128、256、……1K、2K到4K,比ROM少多了。因为实际上RAM只是作为数据临时存放的地方,除非进行图像处理需要存放大量的数据外,一般对于执行较简单任务的单片机,有这么多也够用,如果实在不够用也只能采取外加SRAM如6116、6264等等来扩展。为了对RAM单元存取8位二进数,当然也的和ROM一样用“地址”来标示它的具体位置假如某单片机有1K(1024)RAM,它的地址也是从0000到1024,或16进数的0000H到03FFH可见和ROM的地址是一样的,不会混淆不清?不会,因为读ROM是由单片机的程序指针或转移指令或查表指令进行,而这些指令是不会进入RAM区的,读写RAM是另外的数据传送指令,也不会进入ROM区,这点也是和电脑不同之处,后者程序和数据都在内存条里面,地址不同,如果窜位了就会造成不可预见后果。单片机的这种存储器结构也称为哈佛结构。

在这里本文中要说到的RAM,其在单片机里的用途主要是存放临时数据,例如用单片机测温,每秒测1次,显示1分钟的平均值(1分钟更新一次);我们先通过传感器,放大电路,A/D转换,把温度这个模拟量转变为成比例的二进数,然后每秒钟1次把数字量通过输入口顺序存入到单片机的RAM中,然后对他们进行两两求和再平均的计算(题外话:要单片机进行“除法”运算比较麻烦,例外的是除以2,4,8……却非常简单。运用“右移”指令1、2、3次便可)最后的数值显示出来,然后把这60个存储单元统统写0清除旧数据,下次又如此这般地循环进行。另外在单片机里面还有若干寄存器,数量不多但是作用很大,除了暂存数据,还可以交换、加工、传递等等,以及随时纪录单片机当前处于什么状态,输入输出口,也是作为特殊功能的寄存器存在,具体各有不同,就不是随便说说可以搞清楚的,要看有关书籍了。

关键字:存储器  单片机  灵魂 编辑:探路者 引用地址:单片机的“灵魂”—数据存储器的使用

上一篇:基于CPLD的FPGA从并快速加载方案
下一篇:采用ATMEGA16单片机设计的两轮自平衡电动车

推荐阅读最新更新时间:2023-10-12 22:52

学习单片机时候一定要看书
  不能总是看书,但是学习它首先必须得看书,那这不很矛盾。因为从书中你需要大概了解单片机各个功能寄存器(比如引脚控制寄存器、定时、中断、串口相关寄存器),控制单片机的核心是用程序去控制单片机的各个功能寄存器,给寄存器赋值二进制数据0或者1,这样一来对于引脚寄存器单片机可以根据二进制数据0和1输出高低电平控制外部设备,对于内部资源寄存器,单片机也通过二进制数据0和1使用单片机内部的功能。比如单片机引脚寄存器P1,语句P1=0xfe;(MOV P1,#0FEH)。说明现在控制单片机P1口的第一个引脚输出低电平,其他引脚输出高电平。比如中断中断允许寄存器IE,语句IE=0x81;(MOV IE,#81H) 则说明控制中断打开总开关和外部
[单片机]
STC15W408AS单片机白光T12控制器
自己 设计和制作的stc白光,附上原理图,洞洞板走线图和源代码。 只实现了简单的温控,短按一下编码器快速设定温度为300℃,双击一下编码器快速设定为10℃(相当于短暂休眠 代码注释还是很详细的,适合初学者学习。 单片机源程序如下: /** 布满星星的天空 CZS 编写 */ #include STC15.h #include intrins.h #include math.h sbit t12 = P3 ^ 7; //T12控制 sbit encoderb = P1 ^ 0; //编码器的b脚 sbit encodera = P1 ^ 1; //编码器的a脚 sbit encod
[单片机]
STC15W408AS<font color='red'>单片机</font>白光T12控制器
ATtiny2313 I/O存储器
ATtiny2313的 I/O P150“ 寄存器概述 ” 。 ATtiny2313所有的I/O及外设都被放置于I/O I/O位置都可以通过LD/LDS/LDD 与ST/STS/STD指令来访问,在32个通用工作寄存器和I/O之间传输数据。 地址为0x00 - 0x1F的I/O寄存器还可用SBI和CBI指令直接进行位寻址,而SBIS和SBIC则用来检查某 一位的值。更多内容请参见指令集。使用 IN 和 OUT 指令时地址必须在 0x00 - 0x3F 之 间。如果要象 SRAM 一样通过 LD 和 ST 指令访问 I/O 寄存器,相应的地址要加上 0x20。 为了与后续产品兼容,保留未用的未应写 0 ,而保留的 I/O 寄存器则
[单片机]
如何“免费”生成两个可编程LED闪光灯
现在有很多使用晶体管、运算放大器、555定时器、甚至继电器设计 LED 闪光灯的方法,驱动LED闪光灯的专用IC也已出现,如Microsemi Integrated Products公司的LX1990...93。 但所有这些方法都需要外部硬件,而这意味着额外的成本和PC板空间。 当某个设计已经使用了一个微控制器(MCU),我们就很容易借助它用软件开发一个LED闪光灯,而且不需要任何外部元件。这样一个解决方案极其灵活。你可以通过编程设定任一闪动周期和持续时间,范围可从零点几秒到几小时。在两个或以上LED情况下,你可以选择任何闪光时序,同时闪或逐个闪等。而你只需要一个或几个闲置的MCU 管脚。 我们可以使用
[手机便携]
如何“免费”生成两个可编程LED闪光灯
灵魂一问:机器人老师会不会把学生教成“机器人”?
进入资讯平台,你“感兴趣”的文章会率先、大量地推荐出来,供你阅览;打开购物APP,你点击过的商品种类会被推送出来,供你选择……如今,这类机器算法已经得到了广泛应用,堪称是“比你还了解自己”,让人时而满意时而无奈。 机器算法只是一项基础性技术,随着人工智能之风愈吹愈烈,机器学习、机器识别、生物识别等都开始站上各自的舞台。人工智能技术商用进程不断加快的同时,也推动了医疗、交通、金融、教育等多个行业的变革。其中,教育作为国家根本大计,作为中国家长眼中的绝对优先事项,其与人工智能的融合更是备受瞩目。 然而,在人工智能加快“走进”校园,机器人等各种智能产品愈发常见的情况下,有些家长开始疑虑:现在都在说人工智能要取代教师,什么教育机器人、陪伴
[机器人]
单片机控制手机的硬软件接口技术及其应用
引 言 在我国,拥有手机的用户已很普遍,更新也很快,价格也越来越低。因为其工作的无线网络覆盖范围广,在信息传递方面,性能稳定、可靠。所以把手机作为信息传递的载体,与单片机结合起来构成应用系统有着强大的生命力和广阔的应用空间,特别是在远程数据传输、远程监控等领域更是受到电子设计应用工程师的关注和采用。一些专业刊物也介绍了一些有关这方面的文章,然而由于手机的控制指令复杂,数据格式繁琐,工程技术人员在进行单片机与手机的硬软件接口设计时经常会遇到很多困难,有时还无资料可查。作者在完成一个项目的开发过程中,针对几种手机进行了大量的测试和实验,在此基础上归纳出一些带规律性的结论,对此结论,工程设计人员可拿来即用,大大缩短研发周期
[单片机]
常用MCU加密方法介绍
随着物联网和边缘计算的出现,五花八门的MCU也被应用其中,如何保证我们的程序安全和知识产权不受侵犯呢,本文我们将对主流MCU的程序加密进行讲解,希望能够帮助你选择最适合自己应用的微处理器。 1. MCU加密 通常所说的MCU加密是指将用户的程序固件保护起来,防止别人通过外部调试接口或者其他方法读取烧写在Flash中的程序。保护自家方案不轻易被别家抄袭,从硬件上保护自己的知识产权。MCU加密还指防止自家程序被恶意读取破解。 2. 常用MCU加密方式 通过写特定配置字; 增加外部加密芯片; 对程序代码进行密码加密,使程序变成密文; 程序校验芯片的唯一ID。 2.1 配置字加密 2.1.1 原理 MCU厂商在设计芯片时
[单片机]
常用<font color='red'>MCU</font>加密方法介绍
STM32单片机设置PWM输出完整教程
STM32单片机 PWM 环境: 主机:XP 开发环境:MDK4.23 MCU:STM32F103CBT6 说明: 使用内部8M晶振,倍频到64M供给TIM3定时器,PA6(通道1)上产生640K,50%方波 源代码: 初始化时钟: //初始化RCC时钟 voidinit_rcc(void) { //将外设RCC寄存器重设为缺省值 RCC_DeInit(); //内部晶振使能 RCC_HSICmd(ENABLE); //等待工作稳定 while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)==RESET); //LSI的启动,提供给看门狗时钟 RCC_LSICmd(ENABLE);//打开LSI w
[单片机]
小广播
最新电源管理文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved