引言:最近重新回归51单片机的使用,发现自己严重的不足。之前写的代码可以用“垃圾”两字概括。
代码写得不规范,命名的不规范,以及不写注释。当时还觉得自己很牛。现在一回顾发现自己还缺少很多东西。需要更加深入学习。回归理论,再结合实践来提升自己。

汇编语言:

直接操作单片机内部资源,所以执行效率比C语言快。(优点)
汇编语言的程序文件使用.asm作为后缀
缺点也很明显:

  1. 可读性差,需要借助芯片手册或者是寄存器说明等。
  2. 难以移植代码,换不同的mcu,指令可能完全不同,即使相似也难移植。
  3. 由于上述两点,维护困难和修改困难
    (所以个人还是选择用C语言进行书写代码)

学习数字型芯片要看真值表
在控制数字芯片的过程中,需要了解芯片的真值表

中断(个人目前很迷糊的点2022.3.2)

中断和定时是整个单片机的核心内容。所以学习任何款式的芯片要从中断定时入手。
中断的意思是中间打断。理论上理解:举个不恰当的例子如打游戏,剧情类的游戏,一直在进行主线任务,突然间弹出支线任务。当进入这个支线任务后,要完成任务才能回到主线任务。这个支线任务可以理解为中断。(当然这种触发支线任务要满足一定的条件,如果不触发任务,则不会运行支线任务,会保持在主线任务中。)

通过写代码加深这部分的理解,如安装了很多软件的电脑,如果不运行软件的时候,待机状态,不会占用很多的运行资源;当运行软件的时候,才会让软件使用运行资源。写代码同理,开机后进入待机状态(可以等同于上电进入主程序),这时候的运行资源不会很高。当要使用到其它功能时,打开软件,启用程序(等同于进入中断)。用完软件后关闭软件,回到待机状态(等同回到主程序)。毕竟电脑运行的时候不会把所有软件都一直在后台跑(所以我们所写的程序也不应该一直在主程序中跑,应该使用中断)。

这部分主要学习的内容是对寄存器的控制。
中断源是中断信号的来源。
单片机并不是所有的信号都会触发中断。

51单片机中断事件有五个:

  1. INT0 (外部中断0)
    由P3.2管脚作为触发信号的输入

  2. T0 定时/计数 (定时计数0)
    定时功能是由内部晶振产生脉冲,作为计数是由P3.4作为脉冲输入

  3. INT1 (外部中断1)
    由P3.3管脚作为触发信号的输入

  4. T1 定时/计数 (定时计数1)
    定时功能是由内部的晶振产生脉冲,作为计数是由P3.5作为计数脉冲输入

  5. RX TX (串口通信中断)
    P3.0 P3.1 作为接口

P3口,在中断寄存器没有设置的时候,作为普通IO口。只有寄存器设置后才能作为中断接口。

(2022.3.3)
今天对于中断的理解加深了,中断不仅仅是要优化程序,而且还要保证精确度。中断里面不能放置大量的程序。这样会很不合理,还会因为嵌入过多的程序影响时效。对于大致的结构有了一定的了解。又写了一大堆的垃圾代码。这个是真的要多写多看多听才能有一个好的长进。而且对于一些数据的处理,不能想定义就定义。像16位二进制的数,2的16次方,如果要一位一位的修改定义是65536个,自己定义会写傻自己。虽然现在对于中断的书写还是有些混乱,不过我相信,在自己的努力下一定能够入门慢慢到精通。


(2022.3.23)