个人英雄主义黄昏:我不提倡干私活的原因是什么?

电子 浏览

个人英雄主义的黄昏:我不提倡干私活的原因个人开发者曾经在上世纪80年代、90年代极为流行,很多大咖通过这条路径完成原始的市场积累,迈入创业的轨道。很多牛X的作品就在那个时候被大咖们实现,比如51单片机实现的山寨三菱PLC,8位机实现的运动控制卡,目前这些还在广泛应用,但最近发现,个人开发者越来越少,也越来越没有市场了。

我觉得有以下几点原因:1.个人开发者的收入在降低,在职工程师的收入大幅攀升。这就导致很多个人开发者回归职场,或者组建公司创业。很多公司给出的外包费用简直低到尘埃,而嵌入式薪资却呈大涨的趋势,这个前面说过,不再赘述。也正是因为这个原因,嵌入式开发越是发达的地区,个人开发者越是没有生存土壤在一些嵌入式不太发达的地方,个人开发者反而有些生存的空间。

1、单片机编程里面,堆栈是什么意思?

堆栈是一个区域,是用来存放数据的,这个区域本身没有任何特殊之处,就是内部RAM的一部份,特殊的是它存放和取用数据的方式,即所谓的‘先进后出,后进先出’,并且堆栈有特殊的数据传输指令,即‘PUSH’和‘POP’,有一个特殊的专为其服务的单元,即堆栈指针SP,每当执一次PUSH指令时,SP就(在原来值的基础上)自动加1,每当执行一次POP指令,SP就(在原来值的基础上)自动减1。

一般程序的开头总有这么一条设置堆栈指针的指令,因为开机时,SP的初始值为07H,这样就使堆栈从08H单元开始往后,而08H到1FH这个区域正是8031的第二、三、四工作寄存器区,经常要被使用,这会造成数据的混乱。不同作者编写程序时,初始化堆栈指令也不完全相同,这是作者的习惯问题。

2、51单片机汇编堆栈指针sp的活动范围一般是ram的哪个区域??问题在...

这个看你的习惯,没有定数,汇编最大的麻烦就是内存分配,实际上看你所用的寄存器范围,剩余空间全部用来做堆栈。首先,堆栈满后就会溢出,程序就会出现不可预知的故障。其次堆栈和寄存区覆盖会导致参数破坏且程序未知故障。举个例子:SP的初始化值是07H,SP从08H开始增加。当程序需要压栈操作时,就将程序的PC值压入堆栈,注意PC是两个字节的指令。

3、单片机上电复位后,堆栈区的最大允许范围是个单元。

弹出则相反。当此时PC0102H,又由于,初始化之后SP的值是07H,因此先加1,再压入堆栈。可得到(08h)02,(09h)01;同样的弹出则是相反,因此我像你说的“sp的范围是不是应该在数据存储器ram的20h7fh的地址空间范围之呢?应该是完全错误的,SP的范围指的是程序计数器的表示范围,而不是数据存储器的。所以应该为片内000H~FFFH,范围内。