您的位置 首页 技术

单片机与程序设计(上)

关注单片机的存储器在此之前,GR-SAKURA电路板(搭载瑞萨电子单片机ldquo;RX63Nrdquo;)的程序设计是使用Web编译器来进行的。将通过编译器搭建的程序(

重视单片机存储器

在此之前,GR-SAKURA电路板(搭载瑞萨电子单片机“RX63N”)的程序设计是运用Web编译器来进行的。将经过编译器建立的程序(Object Code,成果代码)好像写入U盘相同将之传送到GR-SAKURA电路板后再履行。那么,问题来了。写入(传送到)单片机的程序应该保存在哪儿呢?别的,程序又是怎么被履行的呢?在回答这些问题的一起,让咱们一起来了解一下单片机与程序的联系吧。

首要来了解存储器p主存储器和外置存储器的两种作用

回忆(保存)程序和数据的当地即存储器。存储器有以下两种类型。


外置存储器中的程序需传送到主存储器后才干履行。

关于单片机的存储器,常会看到ROM(Read Only Memory:只读存储器)和RAM(Random Access Memory:可读写存储器)等词汇,其实ROM和RAM仅是表明存储器性质,而与存储器的作用无关。(请参阅单片机入门①,了解单片机的根本结构和操作)

地址空间(内存空间)

CPU可以直接进行读写的一切空间被称为“地址空间(或内存空间)”。这个地址空间的每个字节都标明有号码。这个号码称为“地址(address)”,一般以十六进制来表明。上面所介绍过的主存储器都包含在地址空间内。

依据不同用处,单片机的CPU已开发出了4位、8位、16位和32位。在GR-SAKURA中运用的RX63N单片机搭载了32位的CPU,因而也被称为“32位单片机”。那么,单片机所具有的地址空间容量到底有多少呢?以RX63N为例,由所以32位的CPU,因而最大可以指定约40亿(2的32次方)个地址。切当地说是4,294,967,296(4x1024x1024x1024)个地址。因为一个地址可以回忆一个字节,这时也可以表明为具有 “4GB(千兆字节)的地址空间”。地址空间的容量越大越能搭载大容量的存储器,也可包容更大的程序。因而可以完成更高功用的运用。

32位字节的CPU所具有的4G字节的地址空间示例如图1所示。左面所示的是以十六进制标明的地址。因为一列保存有4个字节(=32位),所以左面所符号的地址便是每4个地址的值。


计算机的单位:位、字节、兆、千兆和兆兆(太)

数据的根本单位是位(b=bit),每个位的值为“0”或“1”。8位为1个字节(B=Byte)。例如,3个字节(3×8位)等同于24位。

电脑存储设备的容量所运用的单位,咱们耳熟能详的有KB(千字节)、MB(兆字节)、GB(千兆字节)和TB(太字节)等。一般状况下会说 1GB=1000MB或许这样写出来,但在计算机的国际里,此单位并非为1000倍,而是1024倍(2的10次方),因而正确的表明如下:

1KB(千字节)=2的10次方 = 1,024 字节

1MB(兆字节)=1,024KB = 2的20次方 1,048,576 字节

1GB(千兆字节)=1,024MB = 2的30次方 = 1,073,741,824 字节

1TB(太字节)=1,024GB = 2的40次方 = 1,099,511,627,776字节

表明地址的十六进制指的是什么?

地址空间内的地址以16进制来表明。例如,具有16位(2的16次方)巨细的地址空间中,假如以10进制来表明,便是“从地址0到地址65535”,假如以16进制来表明,则是从“地址0h到地址FFFFh”。在10进制中,每一位所取的值都在0到9之间,而在16进制中,则是0到F(相当于10进制的15)。以16进制表明的数,最终都有一个“h”,标明是以16进制来表明的。


程序保存在哪儿呢?(向量表)

那么,程序被保存在地址空间的什么当地,又是怎么样开端作业的呢?单片机复位后便开端履行最优先程序。复位是在接通电源或接收到复位信号时发生。实际上,这种“开端履行最优先程序”处理中,有如下所示的两种办法。

即开端履行程序时,有将履行程序的开端地址设为固定的CPU及将之设为可变地址的CPU。

在将开端地址设为固定的CPU中,大多是从地址0(地址空间中最小的地址)开端履行。这便是程序开端的地址。并且,有时要事先在地址0中完成写入“下一个要履行的是地址○○”的跳转(Jump)指令,并将程序预先放置在“地址○○”中。假如改写“地址○○”,将可获得与将开端地址设为可变地址相同的作用。

将开端地址设为可变地址的CPU将开端地址写入被称为“向量表”的部分中(图2)。向量表是只寄存地址空间中各种开端地址的特定区域的称号。一般来说是它放置在地址空间中最大地址的部分。


以RX63N为例,因为地址是以32位来显现的,为了保存它就需求4个字节。这就意味着图3中的“复位”部分表明从地址FFFFFFFCh到地址 FFFFFFFFh的4个字节中保存了程序的开端地址。CPU复位后将读取保存于此的地址,并从作了符号的地址开端履行。被写入向量表的不仅是复位后的开端地址,向量表中还保存发生中止时程序的开端地址和反常处理(Exception Handling)的开端地址。也正因为保存了发生中止及反常处理等因多种事由的开端地址,所以才被称为“表(Table)”。

咱们来想象一下运用了向量表的程序处理的状况。图3表明出了发生非屏蔽中止(NMI) (*1) 时的处理流程例。

(1)发生NMI,

(2)读取写在向量表的NMI的开端地址(此例中为10000000h),

(3)履行所读取地址(10000000h)中的NMI程序。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/jishu/145168.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部