分享个好资料

2019-08-07 13:37发布

对于菜鸟来说一些基本概念比较有用,高手就一笑而过吧
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
spark周
2019-08-07 21:15
四、程序的执行过程 单片机在通电复位后8051内的程序计数器(PC)中的值为‘0 000’,所以程序总是从‘0000’单元开始执行,也就是说:在系统的ROM中一定要存在 ‘0000’这个单元,并且在‘0000’单元中存放的一定是一条指令。
  五、堆栈 堆栈是一个区域,是用来存放数据的,这个区域本身没有任何特殊之处,就是内部RAM的一部份,特殊的是它存放和取用数据的方式,即所谓的‘先进后出,后进先出’,并且堆栈有特殊的数据传输指令,即‘PUSH’和‘POP’,有一个特殊的专为其服务的单元,即堆栈指针SP,每当执一次PUSH指令时,SP就(在原来值的基础上)自动加1,每当执行一次POP指令,SP就(在原来值的基础上)自动减1。由于SP中的值可以用指令加以改变,所以只要在程序开始阶段更改了SP的值,就可以把堆栈设置在规定的内存单元中,如在程序开始时,用一条MOV SP,#5FH指令,就时把堆栈设置在从内存单元 60H开始的单元中。一般程序的开头总有这么一条设置堆栈指针的指令,因为开机时,S P的初始值为07H,这样就使堆栈从08H单元开始往后,而08H到1FH这个区域正是8031的第二、三、四工作寄存器区,经常要被使用,这会造成数据的浑乱。不同作者编写程序时,初始化堆栈指令也不完全相同,这是作者的习惯问题。当设置好堆栈区后,并不意味着该区域成为一种专用内存,它还是可以象普通内存区域一样使用,只是一般情况下编程者不会把它当成普通内存用了。

一周热门 更多>