单片机基础-day1
51单片机的核心架构
51单片机(如Intel 8051或其兼容型号)的核心架构包含以下关键组成部分,这些部分共同构成了其基本功能框架:
一、单片机与计算机基础概念
核心思想:计算机(包括单片机)通过“取指-译码-执行”的循环,以程序控制硬件完成计算任务。
单片机 (MCU):一台集成在单一芯片上的微型计算机,包含CPU、ROM、RAM、I/O、定时器/计数器、串行通信等部件。
CPU核心功能:
运算
控制
总线结构:
地址总线 (Address Bus, AB):用于寻址,宽度决定了CPU的寻址空间。
数据总线 (Data Bus, DB):用于在CPU、存储器、I/O间传输数据,宽度是决定CPU性能的关键指标之一。
控制总线 (Control Bus, CB):传送控制信号,协调各部件工作。
二、MCS-51 单片机结构框架
CPU与基本结构
8位CPU
4KB ROM (程序存储器)
128B RAM (数据存储器)
4个8位并行I/O端口 (P0, P1, P2, P3)
1个全双工串行口
2个16位定时器/计数器
5个中断源,2个优先级
重要SFR(特殊功能寄存器)
Accumulator (ACC/A):累加器,核心运算寄存器。
B Register (B):主要用于乘除法。
Program Status Word (PSW):程序状态字,包含标志位(如CY, AC, OV, P)。
Stack Pointer (SP):堆栈指针,指向栈顶。
Data Pointer (DPTR):16位数据指针,由DPH和DPL组成,用于访问外部数据存储器。
Port Registers (P0, P1, P2, P3):对应四个I/O端口。
Timer Registers (THx/TLx):定时器/计数器高/低字节。
Serial Control (SCON):串行口控制寄存器。
Interrupt Registers (IE, IP):中断允许和优先级控制寄存器。
Power Control (PCON):电源控制寄存器。
存储器结构
程序存储器 (ROM):地址空间 0000H-0FFFH (4KB)。复位和中断入口固定。
数据存储器 (RAM):
内部RAM (00H-7FH):工作寄存器区、可位寻址区、用户RAM区。
特殊功能寄存器区 (SFR, 80H-FFH):控制和管理片内各功能模块。
外部RAM:通过
MOVX指令访问,地址空间 0000H-FFFFH (64KB)。
时钟与复位
时钟周期:时钟脉冲的周期,是最小时间单位。
机器周期:完成一个基本操作(如取指)所需的时间,1个机器周期 = 12个时钟周期。
复位:使单片机回到初始状态,程序从0000H开始执行。
三、I/O端口编程
基本结构:每个端口由一个锁存器、一个输出驱动器和一个输入缓冲器组成。
操作方式:
字节操作:
MOV P1, #0FFH位操作:
SETB P1.0
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 (外部数据存储器读选通)
四、中断系统
中断源:5个(INT0, T0, INT1, T1, 串行中断 RI/TI)。
中断控制寄存器:
IE (Interrupt Enable):总中断允许(EA)及各中断源允许位。
IP (Interrupt Priority):设置各中断源的优先级(高/低)。
中断响应过程:检测中断 -> 保护现场 -> 执行中断服务程序 -> 恢复现场 -> 返回。
五、定时器/计数器
工作模式:13位、16位、8位自动重装、两个8位模式。
控制寄存器:
TMOD:设置工作模式(定时/计数)和具体模式。
TCON:控制定时器运行(TRx)和标志中断请求(TFx)。
应用:精确定时、事件计数、波特率发生。
六、串行通信
工作方式:4种(方式0-3),常用方式1(10位异步)和方式3(11位异步,多机通信)。
控制寄存器:SCON 和PCON (SMOD位影响波特率)。
波特率计算:与定时器T1的溢出率相关。
七、重点问题整理
根据你的需求,结合51单片机开发经验,为你整理了以下10个核心概念的笔记。内容侧重于51单片机(STC89C52)的硬件原理和编程实践。
1. CPU、MCU、MPU、NPU、GPU、FPU、SOC概念
CPU (Central Processing Unit):中央处理器,负责逻辑运算和控制,是计算机的“大脑”。
MCU (Microcontroller Unit):微控制器,俗称单片机。它是CPU + RAM + ROM + I/O + 定时器等集成在一个芯片上的微型计算机。51单片机就是典型的MCU。
MPU (Microprocessor Unit):微处理器,通常指CPU核心,不包含内存和外设,性能比MCU强,但需要外接芯片才能工作(如电脑的Intel/AMD处理器)。
NPU (Neural Processing Unit):神经网络处理器,专门用于AI计算的芯片。
GPU (Graphics Processing Unit):图形处理器,专门处理图像和并行计算。
FPU (Floating Point Unit):浮点运算单元,专门处理小数运算,51单片机通常没有FPU,做小数运算很慢。
SOC (System on Chip):片上系统,比MCU更复杂,集成了CPU、GPU、NPU、基带等,手机芯片(如骁龙)就是SOC。
2. RAM和ROM的区别
RAM (Random Access Memory):随机存取存储器,俗称内存。
特点:掉电数据丢失(易失性),速度快,可读可写。
51单片机中:用于存放程序运行时的变量、堆栈等临时数据。
ROM (Read Only Memory):只读存储器,俗称硬盘/闪存。
特点:掉电数据不丢失(非易失性),速度慢,通常只能读(现代Flash可擦写)。
51单片机中:用于存放烧录的程序代码(固件)。
3. 51芯片内部结构
51单片机内部主要包含以下核心部件:
CPU:8位中央处理器,负责执行指令。
ROM:4KB/8KB程序存储器,存放代码。
RAM:128B/256B数据存储器,存放变量。
定时器/计数器:2个16位定时器(T0/T1)。
并行I/O口:4组8位I/O口(P0, P1, P2, P3)。
串行口:1个全双工串行通信口(UART)。
中断系统:5个中断源(INT0, INT1, T0, T1, 串口)。
4. 51芯片CPU内核架构
51单片机采用冯·诺依曼架构(程序和数据共用总线),核心组成:
运算器 (ALU):进行算术和逻辑运算。
控制器 (CU):协调各部件工作。
寄存器组:包括累加器A、B寄存器、程序状态字PSW、数据指针DPTR等。
程序计数器PC:指向下一条要执行的指令地址。
5. 51单片机最小系统组成
要让51单片机跑起来,最少需要三个部分:
电源电路:VCC接5V,GND接地。
复位电路:一个电容(10uF)和一个电阻(10K)组成的上电复位电路,保证开机时程序从0开始执行。
晶振电路:接一个11.0592MHz或12MHz的晶振和两个小电容(20-30pF),给单片机提供“心跳”(时钟信号)。
6. 内存和外存的区别
内存 (Memory):指RAM,直接与CPU交换数据,速度快,容量小,价格贵,掉电丢失。
外存 (Storage):指ROM/Flash/硬盘,用于长期保存数据,速度慢,容量大,价格便宜,掉电不丢失。
类比:内存是办公桌(手头正在处理的工作),外存是文件柜(存放所有资料)。
7. 位运算:指定位置1和指定位清零
在C语言中,对寄存器或变量进行位操作:
指定位置1 (Set Bit):使用
|=运算符。例:将
P2的第3位置1(从0开始数):P2 |= (1 << 3);
指定位清零 (Clear Bit):使用
&= ~运算符。例:将
P2的第3位清零:P2 &= ~(1 << 3);
原理:
1 << n生成一个只有第n位是1的掩码,通过或运算置1,通过与取反后的掩码相与清零。
8. 什么是寄存器?
定义:CPU内部的高速、小容量存储单元,用于暂存指令、数据和地址。
作用:是CPU操作数据的“中转站”,比内存快得多。
51单片机中的寄存器:
通用寄存器:R0-R7(工作寄存器)。
特殊功能寄存器 (SFR):直接映射到硬件,如控制I/O口的
P0、控制中断的IE、控制定时器的TMOD等。我们编程时操作的就是这些SFR。
9. 数码管动态显示的原理
问题:多个数码管如果同时亮,需要大量I/O口,且电流很大。
原理:利用人眼的视觉暂留效应(Persistence of Vision)。
分时点亮:在极短的时间内(如1-2ms),依次点亮每一个数码管。
快速循环:当切换速度足够快时(>24Hz),人眼会感觉所有数码管是同时亮的。
步骤:
选中第1位数码管(位选),送出第1位要显示的数字(段选),延时1ms。
关闭所有显示(消影)。
选中第2位数码管,送出第2位数字,延时1ms。
如此循环。
10. 38译码器工作原理
作用:将3位二进制输入(A, B, C)翻译成8种不同的输出状态(Y0-Y7)。
工作原理:
输入3个引脚(A, B, C),共有 2^3 = 8 种组合(000 到 111)。
对于每一种输入组合,有且只有一个输出引脚(如Y0)输出低电平(0),其余7个输出引脚均为高电平(1)。
真值表规律:输入值(ABC)的二进制数值,直接对应输出引脚的下标。例如:
输入
000->Y0输出0。输入
001->Y1输出0。...以此类推,输入
111->Y7输出0。
应用:在数码管或LED点阵中,用3根I/O口线通过38译码器可以控制8个位选(节省I/O口资源)。
