《51单片机编程与原理》
我们在上篇讲到的是51单片机的程序存储器和启动方式
----数据存储器(内存)和程序存储器硬件结构差不多,但学起来更麻烦。
书比较难啃,建议看郭天明的《十天学会单片机》视频,不想往画电路板方面发展的可以只先看前面一部分,我就是这么做的,入了门再看书就容易了。
--------------------------------------------------------------------------------------------------------
首先回答大家的疑问
1既然前面已经讲过程序存储和单片机启动了,为什么还不讲嵌入式的启动呢?
答案:因为单片机的程序存储器和内存,在硬件和软件上被严格分开的,完全可以分开来讲。嵌入式却有所不同。
2没有内存,只靠程序存储器单片机能正常启动运行吗?
答案:不能,事实上我们看到有的单片机并没有外部扩展的数据存储器(内存),如果看书不仔细,这给人以误导,事实上出厂的cup内部固定有内部内存,只是容量很小,只有多少K。而扩展的可以达到M。
3那前面为什么没讲内存工作就把单片机启动起来了?
答案:那是在假设有内存工作的情况下来讲的,放在一起讲容易混淆和不理解。而且所有写的演示代码都是c语言的,这并不严格,只是为了更直观。(毕竟学c的人多)
------------------------------------------------------------------------------------------------------
先理解程序和数据(内存)存储器怎么严格分开的:
程序和数据没有共用一个存储器,而是两个存储器,各自有自己的数据,地址,控制线和cpu相连。(单片机就是一种微型简单的cpu,除自身自带的以外,外部可扩展内存硬件等)
单词move:移动 jump:跳
就拿汇编语言来说:取指令,cpu先找pc指针所指向的程序存储器中的地址,然后从这个地址中拿取数据(指令),拿回cpu后编译执行。(启动时从00000地址拿指令)
movx指令,cpu根据指令中的信息提取出要取数据的地址addr,这里是对数据存储器(内存)操作,也是拿对应地址上的数据。
两者都是通过向存储器发送地址来实现存/取数据(数据的含义很广,可以是内存中的数据也可以是程序存储器中的指令数据