以单片机思维理解书籍《程序是如何跑起来的》-01

 

在单片机中:程序=运行的硬件=地址+0/1,就比如P2 = 0X00,P2是使用sfr定义的特殊功能寄存器,形式为sfr P2 = 地址,P2其实在单片机中是以地址存在的,只不过是地址的别名而已

在STM32中我们也可以直接使用地址对寄存器进行操作,因为STM32的库文件也是使用地址封装好了的 

对于我而言:程序是由地址加0/1组成,好听点就是指令加数据,其实指令也是地址,指导着CPU去什么地方干什么话 

 机器语言的表现其实在编译器的汇编代码窗口中就有体现了,既体现了机器语言也体现了低级语言(汇编)以及高级语言(C语言),

 

单片机中我们很少使用外部存储器,至少在初学的时候我并没有涉及到,我们初学接触到的单片机就只有内存,就是RAM和ROM,

但是单片机其实也可以外接外部存储器,像IMX6ULL,芯片我学习的时候它是使用了外接的NAND FLASH,代码也是保存在这里的,但是在运行的时候,我们需要指定链接地址,将NAAN FLASH中的代码运行在内存中去,其实总的来说这个知识点离单片机开发稍微有点远(个人看法)

CPU--51内核和ARM内核,日常接触最多的,根据相应的指令集进行控制CPU进行运算 

 

 

CPU 和 内 存 是 由 许 多 晶 体 管 组 成 的 电 子 部 件, 通 常 称 为 IC
tegrated Circuit, 集成电路)。 从功能方面来看, 如图 1-2 所示, CPU
内部由寄存器、 控制器、 运算器和时钟四个部分构成, 各部分之间
电流信号相互连通。 

寄存器:可用来暂存指令、 数据等处理对象, 可以将其看作是内存的一种。 根据种类的不同, 一个 CPU 内部会有20~100 个寄存器  

STC89C52的CPU内部自带几个寄存器,STM32F103C8T6的CPU也是自带寄存器的

控制器:负责把内存上的指令、 数据等读入寄存器,并根据指令的执行结果来控制整个计算机。  

运算器:负责运算从内存读入寄存器的数据。  

时钟:负责发出 CPU 开始计时的时钟信号 A。 不过, 也有些计算机的时钟位于 CPU 的外部


有些单片机需要外接晶振,提供时钟,而有些单片机内部已经集成了时钟部分了
 

 

我们一般接触的最多的是:12MHZ,然后72MHZ,当然还有高性能的,只是初学的时候接触的最多的就是这两个

程序启动后, 根据时钟信号, 控制器会从内存中读取指令和数据。 通过对这些指令加以解释和运行, 运算器就会对数据进行运算,所以说时钟信号就是单片机的心脏,单片机的工作都是基于时钟信号的,计算机也是这样的
 

 

 

 芯片内部的寄存器一般就是用来暂时储存数据的,我们单片机是控制外部的寄存器来控制硬件,至于CPU内部的寄存器我们一般是很少使用(但是确实会使用到,比如控制SP,或者此时芯片的工作模式)

 关于CPU的寄存器,51内核我们是基本不会接触的。但是在ARM芯片中,我们会接触到,学习CPU的寄存器就是单独学习ARM芯片的内核,内核部分的知识晦涩难懂,我只用了很少的一部分(启动文件的配置就需要你理解芯片的内核启动)

决定程序流程的程序计数器 --PC,在单片机的调试过程中可以看到此寄存器的值

 其实就是此时代码的运行位置

 

 

 是否跳转或者溢出根据PSW的值进行判断,比如判断一个值是否大于一个值的时候,生成的汇编指令会根据PSW的标志位进行判断是否需要跳转或者其他

 

 

 

 

 51的跳转是LCALL,其实就是跳转到一个函数中去,并且保存下面语句的地址(51内核显示不出来,但是在STM32中有一个寄存器R14(LR)专门是保存返回地址的

51内核是使用RET,函数末尾自带一个RET,就类似于上面的return的功能,为返回调用前的地址。

那这么比较的话,51返回和stm32返回是不一样的过程

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值