STC单片机绝对调用和长调用指令有何本质上的区别?如何选用
发布网友
发布时间:2022-05-03 02:23
我来回答
共4个回答
热心网友
时间:2023-10-05 15:23
指令结构相同:指令 + 直接地址。
执行过程不同:调用指令要保护现场,进行堆栈操作,转移指令不需要;
执行结果不同:调用指令执行后会返回执行下一条指令,程序模块没有结束;
转移指令不会返回,本条指令就是程序模块的结尾。区别是:1、下载方式不同,AT中的S51S52系列的下载方式是ISP下载方式,而C51C52与STC都是串口下载方式2、内存大小有所不同3、部分特殊功能寄存器不同4、STC的单片机相对地执行速度更快,功能更加强大可寻址的范围不一样,ACALL是双字节指令,调用指令的地址PC加2后与所调用的子程序的起始地址应在同一个2KB范围内,而LCALL是三字节指令,可在64KB范围内调用,换句话说,就是子程序离得太远就要用LACLL,离得近用ACALL就可以。LJMP和SJMP同上,LJMP三字节指令,可转移到64KB程序存储器任意单元,SJMP是双字节指令,只可以在存储器256个单元范围内转移。。STC 单片机采用 51 内核,在 51 的基础上有所改进,而 PIC 是精简指令集的单片机,二者的技术路线不同。由于 51 的资源多,初学者一般会选择 51 系列,学会一种单片机再学习其他系列很容易。做项目的专业人员则不同,单片机种类繁多,可以选择最合适的型号,甚至定制专用芯片。
热心网友
时间:2023-10-05 15:23
在当今这个模拟电子技术看似被冷落(其实无处不在)和数字电子技术主导的信息时代,对于刚入电子信息相关专业的大中专学生或需要转型进入电子产品硬件研发行业的工程师而言,首先面对的第一个问题是:8位的51单片机和32位的基于Cortex-M3内核的STM32单片机哪一个作为电子技术入门的硬件平台更合适?在综合收集网上相关信息后,我相信很多刚入行的朋友,都应该被支持51单片机和STM32单片机任一种硬件平台作为入门的理由搞得不知所措。
我虽不才,但是,也从事硬件研发工作十年之久。因此,我也想从自己的角度给各位刚入行或准备进入电子产品硬件研发行业的工程师和大中专学生一个尽可能全面的参考依据。当然,我发布的言论,也仅仅是代表我个人的观点,各位朋友如何做出抉择,依旧要考各位朋友自己斟酌。
由于在国内,STC系列的51单片机市场占有率最高,参考资料和使用人群众多,因此,在下文中,我们将以STC单片机作为51单片机的代表。正如,STM32单片机作为基于ARM公司Cortex-M3内核单片机的代表一样。在这里STC单片机是51单片机的代表,STM32是基于ARM公司Cortex-M3内核单片机的代表。
2、从易到难的学习规律
我想各位朋友都应该知道学习的基本规律就是:从易到难。无论我们学习任何知识、经验和技能,都要遵循这个规律,否则,好高骛远的后果就是:要么面对重重困难,选择放弃,或者,从头再来。
图1
STC单片机与STM32单片机相比,具备以下优点:
(1)STC单片机内部结构比STM32单片机简单,便于初学者理解单片机的经典结构。虽然STC单片机和STM32单片机都是哈弗计算机结构,但是,STC单片机的内部结构相对而言,更为简单。
(2)STC单片机寄存器数量比STM32单片机少了很多很多。STC单片机的寄存器只有几十个,可是STM32单片机的寄存器有几百个。两者完全不在一个数量级上。由于MCS-51、Cortex-M3、Cortex-M4、Cortex-A9、Cortex-A73或者MIPS等等单片机内核及片内外设,都是通过程序操作寄存器实现特定功能的,因此,寄存器数量只有几十个的STC单片机,相对而言,更容易让初学者入门学习。
(3)STC单片机采用MCS-51指令集,其汇编指令一百多条,比STM32少了很多很多。相对少的汇编指令集,能够让初学者相对快速的了解运算处理器汇编指令的功能、结构与计算机体系结构之间的关系。
(4)最新版本的STC8系列单片机具备下载程序方便和自身就是仿真器的特点,节约初学电子产品设计技术的资金投入,学习开发技术方便快捷。STM32需要单独购买独立的Jlink仿真器才可以仿真。
(5)STC单片机具备相对简单的经典体系结构,使初学者不必花费太多精力在其硬件本身,可以集中精力掌握好后续任何类型单片机开发的基础语言:C语言。同时,也可以掌握电子产品基本的设计思想、经验和技能。
因此,综上所述,根据我们由浅入深和从易到难的学习规律可知:初学电子产品开发技术的工程师和大中专学生,应先学习和掌握采用STC单片机开发电子产品的技能。这是基础技能。
热心网友
时间:2023-10-05 15:24
你说的at是指atmel的at89c2051这些?如果是的话那我回答一下。
这两个都是51的指令集和基础架构,所以学过一种之后再学另一种应该很轻松。
stc也有引脚比较少的,最少的有8个脚的,at也有引脚多的,at89s52这样的至少也有40个脚,不过这玩意太落后,基本上没人用了吧。
历史上51体系是intel搞出来的,最早的时候的51重新写个代码需要把片子放到紫外线灯下擦除,再放编程器上写入,再放到目标板子上,调试的代价极高。
atmel好像是第一家使用flash技术生产51芯片的,flash可以电擦除,这样就不需要紫外线灯了,而且flash的寿命是1000次,所以flash技术推出就迅速把前一代紫外线擦除的淘汰了。后期atmle还推出了89s51这样的不用上编程器,直接在板上就可以改写的,又进一步大大提高了工作效率。
stc好像是第一家使用串口方式就可以改写程序的,这又一次大大提高了工作效率而且可以不需要专门的编程器。现在看如果是51的话,似乎没有什么理由要用atmel的,即贵又不好用。
热心网友
时间:2023-10-05 15:24
这个不需要你选用。
你写 JMP 即可。