会51单片机,如何快速过度到STM32单片机?
单片机是一种可编程的器件,现在所见到的电子产品中几乎都是以单片机为核心的,根据不同的功能需求,搭建不同的电路,从8位的单片机到32位的单片机,甚至比较高大上的ARM和DSP都可以看成是高级一点的单片机。
单片机是一种工具,由于可编程,所以大大简化了设计电路的复杂程度,软件可以很轻松的完成复杂的逻辑,所以单片机在电子产品中处处可见。对于8位单片机而言,其典型的代表就是51单片机,由于51单片机资料众多,大学里也开设了51单片机的课程,所以很多初学者都把51单片机作为入门的首选。
电路设计
但实际情况是,很多公司都选用STM8、STM32、AVR、MSP430、PIC系列的单片机去设计产品,而很少选用51单片机,原因是上述单片机功能更为强大、片上资源更为丰富,而且价格也不是很贵。所以很多朋友想问,会51单片机,再去学习STM32等功能更强大的单片机,该怎么过度?
51单片机开发板
答案是很容易过度。
单片机是一门工具,不同的单片机都是相通的,学会一款型号,可以很快的入手其他型号,单片机一通百通,做好产品才是最终的目的。51单片机到STM32的过度,不困难,仅体现在单片机寄存器的配置上,下面分几个方面进行说明。
1.从外围电路层面的过度在产品设计中,单片机往往是核心,产品的不同功能需要不同的外设电路去支撑,同一外设电路不会因为单片机的更换而发生颠覆性的改动,所在外设电路这个层面上,不同平台的单片机其外设电路基本一致,只需要考虑GPIO口的复用功能即可。STM32单片机的片上资源更加丰富,使用合适的片上资源和GPIO端口甚至可以简化电路的设计
小米扫地机器人中的STM32单片机
2.从寄存器层面的过度
STM32单片机是32位的,51单片机是8位,STM32单片机片上资源丰富,功能强大,相应的其寄存器也就越多。但是同样的功能其区别不大,仅仅是寄存器的名称和配置方法不同。所以从51单片机过度过来后,要熟悉一下STM32单片机的寄存器和配置方法。
3.从库函数层面的过度
STM32单片机提供了库函数操作,这大大降低了编程的复杂度,官方都把片上功能和相应的寄存器都配置好了,形成了函数,用户只需要调用函数就可以实现片上功能的调用,这在51单片机是没有的。所以,从51单片机过度过来需要了解一下STM32单片机的固件库的使用方法。
Arduino中的ATMEGA
4.从编程层面的过度
现在基本都用C语言进行编程,唯有区别的还是寄存器的写法,其他语法一致,即便是跨平台移植,也容易操作。所以在这个层面上不存在困难的地方。
树莓派中的ARM
其实学单片机很容易,在前期学的是心理,只有克服了心理上对单片机的恐惧,才能踏踏实实的学好单片机的功能。万事开头难,想学单片机要尽早入手把开头尽可能提前,才能学好单片机。
综上所述,单片机是相通的,学会一款单片机很容易入手其他型号,很容易过度。
一个馒头引发的血案:初学单片机,还有必要从51单片机开始吗?
跟电师傅学单片机(18):单片机控制转移指令编程案例讲解
单片机程序案例:
要求把06H~09H,20个数据按顺序放入内部数据存储器RAM:10H~23H单元中。
案例要求示意图
一:程序编程
▶MOV R0,#10H;将单片机内部RAM单元的首地址10H送到工作寄存器 R0中。
▶MOV R1,#14H;将十进制数20(20个数放入20个单元中)转成16进制数14H送到工作寄存器R1中。
▶MOV A,#06H;;将第1个数06H送到单片机累加器A中。
▶LOOP:MOV @R0,A;把单片机累加器A中的内容送到工作寄存器R0里面的内容所确定的地址单元中。
是间接寻址方式。LOOP:是标号,表示程序要循环的意思,指令需要重复执行时,可以使用标号LOOP循环来实现。
▶INC A;加1指令,数据加1,累加器A中的内容加1。例如:刚才是06H,现在加1就是07H。
▶INC R0;加1指令,地址加1,工作寄存器R0里面的内容加1。例如:地址单元10H,现在加1就是11H。
▶DJNZ R1,LOOP;减1非零转移指令,将工作寄存器R1里面的内容减1,判断为零吗,不为零程序就跳到标号LOOP处执行。共要判断19次,直到为零时程序才结束,此时20个数也放入要求的20个地址单元中了。
指令判断转移示意图
▶SJMP $;让单片机程序停在此处,也就是程序原地踏步。
二:十进制数转十六进制数
将十进制数20数转成16进制数,采用除16取余法,余数要除到小于16。
就是将十进制数20直接除以16,余数除到小于16。从最后1个余数倒着读到第1个就是16进制数了。
十进制数转十六进制数示意图
相关问答
单片机 烧录过程序后可以再烧录进别的程序么-ZOL问答单片机可以重复烧录好多万次,不用担心硬件原理图呢?没有原理图,给个屁啊?你好!是很稳定的,关键看串口转换芯片和系统是不是兼容如果单片机芯片只支持串口下...
如何将由压力产生的电信号,传输给 单片机 ,即 转换 为数字信号?压力产生的电信号,可以转换成0-5V之间的电压,然后采用AD(模数转换)芯片,例如0832,或者TCL1543,或者其他AD芯片,转换成数字信号。然后就可以在单片机显示...压...
51 单片机 如何把低电平转高电平汇编程序?您好,在51单片机中,可以通过修改特定的IO口的输出寄存器来实现将低电平转为高电平的操作。以下是一个简单的示例汇编程序:```ORG0H;程序从地址0开始执行...
怎样用 单片机 给两相步进电机驱动器发脉冲,该怎么与步进电机接,有没有程序?看图判断步进电机是4线2相步进电机,用的细分驱动器,这个就非常简单了,细分驱动拨码开关设置好,连电源,连电机,连单片机,记住单片机和电源一定要共地,然后...
怎么将 单片机 接收到的十六进制数转为十进制?你说的数字带小数点的,叫浮点数。小数点的数据用十六进制表示用4个字节。如果小数部分都是0,则可以用整数表示。例如:用长整型表示。longdat;//用于...你说...
单片机 8051 D/A 转换 实验,利用DAC0832,编制程序产生三角波和梯形波, 单片机 编程?用定时器来实现吧,三角波其实也可以用积分器实现。用定时器来实现吧,三角波其实也可以用积分器实现。
单片机 C语音控制步进电机正反转程序?只要控制在四相绕组上输入脉冲的顺序,就可以控制电机的正转/反转。(控制延时就能控制转速。)步进电机正反转控制方式:步进电机有四相绕组A、B、C、D,当一绕...
会 单片机 再学plc要多久?lc编程需要两个月的磨练期,之后将如何学习是你自己的工作表现,以及是否为了解这一知识而努力...要学会plc编程少则几天,多则几十年,分情况的。基本上,从零开...
rs485怎样才能连接到 单片机 上?RS-485需要经过转换器才可以接到单片机的串口,例如MAX490等ic去把单片机的串口转成RS485信号RS-485需要经过转换器才可以接到单片机的串口,例如MAX490等ic去...
请问PLCrs485通信9针,转 单片机 485通信2针A+B-的具体接法?DB9端子3接B-,8接A+,如果想接地线的话,把端子5也接上,基本上接这两三根就可以了DB9端子3接B-,8接A+,如果想接地线的话,把端子5也接上,基本上接这两三根就可以了