https://blog.csdn.net/qq_38351824/article/details/88883379
    标识解释:
    STC—前缀,表示芯片为STC公司生产的产品。其他前缀还有如AT,i,Winbond,SST等。
    8—表示该芯片为8051内核芯片。
    9—表示内部含Flash E^2PROM储存器。还有如80C51中的0表示内部含Mask ROM(掩模ROM)存储器;如87C51中,7表示内部含ERPOM存储器(紫外线可擦除ROM)。
    C—表示该器件为CMOS产品。还有如89LV52和89LE58中的LV和LE都表示该芯片为低电压产品(通常为3.3V供电);而89S52中的S表示该芯片含有可串行下载功能的Flash存储器,即具有ISP可在线编程功能。
    5—固定不变。
    1—表示该芯片内部程序存储空间的大小,1为4KB,2为8KB,3为12KB,即该数乘上4KB就是芯片内部程序存储空间大小。
    40—表示该芯片外部晶振最高可接入40MHz。对AT单片机数值一般为24,表示其外部晶振最高为24MHz。
    C—产品级别,表示芯片使用温度范围。C表示商业级,温度范围为0℃~+70℃。

    image.png

    P3额外功能
    image.png
    总线结构(不重要)
    image.png
    51的总线 单片机预备 - 图4名词
    image.png

    special function register
    special bit
    image.png
    材料
    image.png
    原理图
    标号相同,表示物理连接
    image.png
    从左到右:开关电源,去耦电容,滤波电容

    nop函数
    C语言中没有nop()函数。
    在51C中一般包含在#include “intrins.h” 头文件中。
    该函数是在51单片机中用的延时函数,表示执行一条没有什么意义的指令,延时一个指令周期,有的指令周期是两个或两个以上的机械周期,但是nop();指令需要的只是一个机械周期也就是12个时钟周期(震荡周期)。
    51单片机中,1个机械周期 = 12个时钟周期 = 12 * ( 1 / f)。(f 为晶振频率)。
    如果只用的是12MHZ的晶振,那么 一个机械周期就是1us;也就是说:
    nop(); 指令的延迟时间为 1us。可以较为精确得控制延迟时间。
    nop指令的作用:
    1)就是通过nop指令的填充(nop指令一个字节),使指令按字对齐,从而减少取指令时的内存访问次数。(一般用来内存地址偶数对齐,比如有一条指令,占3字节,这时候使用nop指令,cpu 就可以从第四个字节处读取指令了。)
    2)通过nop指令产生一定的延迟,但是对于快速的CPU来说效果不明显,可以使用rep前缀,多延迟几个时钟。
    3)i/o传输时,也会用一下 nop,等待缓冲区清空,总线恢复;
    4)清除由上一个算术逻辑指令设置的flag位;