一、芯片介绍
我所学习的芯片是STC89C52
STC89C52芯片的命名解释
-
STC:表示这是STC公司生产的芯片。
-
8:表示该芯片是基于8051内核的。
-
9:表示芯片内部有Flash存储器和EEPROM功能(通过IAP技术实现)。STC89C52没有传统意义上的EEPROM芯片,而是通过内部Flash和IAP技术实现EEPROM功能。内部Flash的特定区域(通常为2KB)被用作非易失性存储,支持按字节擦写。
-
C:表示采用CMOS工艺,具有低功耗的特点,一般是低电压供电。
-
5:固定不变,是8051系列芯片的特征数字。
-
2:表示Flash闪存的大小为8KB(2×4KB)。
存储器容量
-
程序存储器(Flash):STC89C52的程序存储器大小为8KB,用于存储程序代码。
-
数据存储器(RAM):
-
内部RAM:256字节,地址范围为0x00~0x7F(低128字节)和0x80~0xFF(高128字节)。
-
外部RAM:256字节,地址范围为0x0000~0x00FF,通过
MOVX
指令访问。 -
总RAM:512字节(256字节内部RAM + 256字节外部RAM)。
-
扩展:
存储器分为数据存储器(RAM)和程序存储器(ROM)
存储器类型总结
1. RAM(随机存取存储器)
-
特点:读写速度快,可快速读写数据。
-
缺点:断电后数据丢失。
-
用途:用于临时存储程序运行时的变量和中间数据。
-
RAM分为SRAM(静态存储器)和DRAM(动态存储器)。SRAM不需要刷新存储单元,读写更快,适用于需要快速访问数据的嵌入式设备,如智能手机、汽车电子等;DRAM需要刷新存储单元,广泛应用于计算机主存、移动设备、图形卡内存等领域。
2. ROM(只读存储器)
-
特点:只能读取数据,内容在芯片出厂时固化。
-
缺点:不可写入,如有错误只能丢弃。
-
用途:早期用于存储固定程序代码,如电脑BIOS。
3. PROM(可编程只读存储器)
-
特点:可由用户编程写入数据,但只能写入一次。
-
缺点:写入后不可修改,如有错误只能丢弃。
-
用途:用于生产环节中一次性写入程序代码。
4. EPROM(可擦写可编程只读存储器)
-
特点:可通过紫外线或电擦除后重新编程。
-
缺点:紫外线擦除需15分钟,且编程次数有限(约1000次)。
-
用途:上世纪90年代广泛应用,适合需要多次修改程序的场景。
5. EEPROM(电可擦写可编程只读存储器)
-
特点:可读可写,断电后数据不丢失,通过IIC等总线访问。
-
缺点:容量较小,适合数据量不大的应用。
-
用途:用于存储少量非易失性数据,如设备配置参数。
6. FLASH(闪存)
-
特点:可读可写,断电后数据不丢失,擦写速度快,容量大。
-
区别于EEPROM:FLASH采用块擦写模式,速度更快,适合存储大量数据。
-
用途:广泛用于现代存储设备,如U盘、SD卡、固态硬盘等。
二、管脚判定
三、管脚功能
STC89C52单片机引脚功能总结
1. 引脚分类
STC89C52单片机的引脚按功能可分为以下四类:
-
电源引脚:VCC、GND。
-
时钟引脚:XTAL1、XTAL2。
-
编程控制引脚:RST、PSEN、ALE/PROG、EA/Vpp。
-
I/O口引脚:P0、P1、P2、P3,4组8位I/O口。
2. 具体引脚功能
电源引脚
-
VCC(40脚):电源正极,为单片机提供工作电压。
-
GND(20脚):电源地,为单片机提供接地参考。
时钟引脚
-
XTAL1(19脚):晶振输入端,用于连接外部晶振。
-
XTAL2(18脚):晶振输出端,用于连接外部晶振。
编程控制引脚
-
RST(9脚):复位引脚,用于将单片机复位到初始状态。
-
PSEN(29脚):程序存储器选通信号,用于访问外部程序存储器。
-
ALE/PROG(30脚):
-
在扩展外部RAM时,ALE用于控制把P0口的输出低8位地址送锁存器锁存起来,以实现低位地址和数据的隔离。
-
在编程时,该引脚作为编程脉冲输入端(PROG)。
-
-
EA/Vpp(31脚):
-
EA:外部访问允许引脚。接高电平时,单片机读取内部程序存储器;接低电平时,单片机读取外部程序存储器。
-
Vpp:在编程时,该引脚用于施加编程电压。
-
I/O口引脚
-
P0口(32脚~39脚):双向8位三态I/O口,每个口可独立控制。
-
在访问外部存储器时,P0口用于输出低8位地址或数据。
-
-
P1口(1脚~8脚):准双向8位I/O口,每个口可独立控制,内部自带上拉电阻。
-
这种接口输出没有高阻态,输入也不能锁存,故不是真正的双向I/O口。
-
-
P2口(21脚~28脚):准双向8位I/O口,每个口可独立控制,内部自带上拉电阻。
-
在访问外部存储器时,P2口用于输出高8位地址。
-
-
P3口(10脚~17脚):准双向8位I/O口,每个口可独立控制,内部自带上拉电阻。
-
作为第一功能使用时,可作为普通I/O口,与P1口相似。
-
作为第二功能使用时,各引脚具有特定功能(如中断输入、串行通信等)。
-
P3口的第二功能
P3口的每个引脚均可独立定义为第一功能的输入/输出或第二功能。以下是P3口的第二功能定义:
-
P3.0:RXD(串行数据接收端)。
-
P3.1:TXD(串行数据发送端)。
-
P3.2:INT0(外部中断0输入端)。
-
P3.3:INT1(外部中断1输入端)。
-
P3.4:T0(定时器0外部输入端)。
-
P3.5:T1(定时器1外部输入端)。
-
P3.6:WR(写控制信号)。
-
P3.7:RD(读控制信号)。
四、时钟/机器/指令周期
时钟周期、机器周期和指令周期总结
1. 时钟周期(Clock Cycle)
-
定义:时钟周期通常由晶振或时钟发生器提供,也称为振荡周期。
-
作用:用于同步整个系统的工作时钟,是单片机工作时间的最小单位。
-
单位:1ms = 1KHz,1us = 1MHz。
-
示例:对于STC89C52RC,外接12MHz晶振时,振荡周期为 1/21 us。
2. 机器周期(Machine Cycle)
-
定义:完成一项基本操作的时间,通常一个指令会被分成若干个基本阶段来完成。
-
组成:一个指令一般被分成指令取指、指令译码、指令执行等阶段。
-
单位:1ms = 1KHz,1us = 1MHz。
-
示例:对于STC89C52RC,机器周期为1us。一般包含12个时钟周期。
3. 指令周期(Instruction Cycle)
-
定义:完成一条指令的时间,通常由一个或多个机器周期组成。
-
单位:1ms = 1KHz,1us = 1MHz。
-
示例:对于STC89C52RC,指令周期通常为1us到4us,具体取决于指令的复杂程
三者关系
-
包含关系:指令周期 > 机器周期 > 时钟周期。
-
一个指令周期包含多个机器周期。
-
一个机器周期包含多个时钟周期。
-
-
固定性:只有时钟周期是固定不变的,由晶振频率决定。
-
指令周期和机器周期:与指令的复杂程度有关,不同指令的指令周期和机器周期可能不同。
具体示例
STC89C52RC,外接一个12MHz的晶振,振荡周期 = 1/12us;
机器周期 = 1us;
指令周期 = 1us~4us;