STC单片机内部常见寄存器及其作用

STC单片机内部常见寄存器及其作用

STC单片机是基于8051架构的增强型单片机,广泛应用于嵌入式系统中。其内部有多个特殊功能寄存器(SFR, Special Function Register),用于控制硬件模块(如定时器、串口、中断等)。以下是STC单片机中常见的寄存器及其作用的详细介绍。


1. 端口寄存器

P0, P1, P2, P3
  • 作用:控制I/O端口的状态。

  • 地址

    • P00x80
    • P10x90
    • P20xA0
    • P30xB0
  • 示例

    c 复制代码
    P1 = 0xFF; // 将P1端口的所有引脚置高电平

2. 定时器寄存器

TMOD(Timer Mode Register)
  • 作用:设置定时器0和定时器1的工作模式。

  • 地址0x89

  • 参数

    • 低4位用于定时器0,高4位用于定时器1。
    • 模式:
      • 0x00:模式0(13位定时器)。
      • 0x01:模式1(16位定时器)。
      • 0x02:模式2(8位自动重装定时器)。
      • 0x03:模式3(定时器0分为两个8位定时器)。
  • 示例

    c 复制代码
    TMOD = 0x01; // 定时器0,模式1
TH0, TL0(Timer 0 High/Low Byte)
  • 作用:存储定时器0的计数值。

  • 地址

    • TH00x8C
    • TL00x8A
  • 示例

    c 复制代码
    TH0 = 0xFC; // 定时初值高字节
    TL0 = 0x18; // 定时初值低字节
TH1, TL1(Timer 1 High/Low Byte)
  • 作用:存储定时器1的计数值。

  • 地址

    • TH10x8D
    • TL10x8B
  • 示例

    c 复制代码
    TH1 = 0xFE; // 定时初值高字节
    TL1 = 0x0C; // 定时初值低字节
TCON(Timer Control Register)
  • 作用:控制定时器的启动、停止和中断标志。

  • 地址0x88

  • 参数

    • TR0:定时器0运行控制位(第4位)。
    • TR1:定时器1运行控制位(第6位)。
    • TF0:定时器0溢出标志位(第5位)。
    • TF1:定时器1溢出标志位(第7位)。
  • 示例

    c 复制代码
    TR0 = 1; // 启动定时器0

3. 中断寄存器

IE(Interrupt Enable Register)
  • 作用:使能或禁用中断。

  • 地址0xA8

  • 参数

    • EA:总中断使能位(第7位)。
    • ET0:定时器0中断使能位(第1位)。
    • ET1:定时器1中断使能位(第3位)。
    • EX0:外部中断0使能位(第0位)。
    • EX1:外部中断1使能位(第2位)。
  • 示例

    c 复制代码
    EA = 1;  // 使能总中断
    ET0 = 1; // 使能定时器0中断
IP(Interrupt Priority Register)
  • 作用:设置中断优先级。

  • 地址0xB8

  • 参数

    • PT0:定时器0中断优先级(第1位)。
    • PT1:定时器1中断优先级(第3位)。
    • PX0:外部中断0优先级(第0位)。
    • PX1:外部中断1优先级(第2位)。
  • 示例

    c 复制代码
    PT0 = 1; // 设置定时器0中断为高优先级

4. 串口寄存器

SCON(Serial Control Register)
  • 作用:控制串口的工作模式。

  • 地址0x98

  • 参数

    • SM0, SM1:串口模式选择位(第6、7位)。
      • 00:模式0(同步移位寄存器)。
      • 01:模式1(8位UART,波特率可变)。
      • 10:模式2(9位UART,波特率固定)。
      • 11:模式3(9位UART,波特率可变)。
    • REN:接收使能位(第4位)。
    • TI:发送中断标志位(第1位)。
    • RI:接收中断标志位(第0位)。
  • 示例

    c 复制代码
    SCON = 0x50; // 串口模式1,接收使能
SBUF(Serial Buffer Register)
  • 作用:存储串口发送或接收的数据。

  • 地址0x99

  • 示例

    c 复制代码
    SBUF = 'A'; // 发送字符'A'

5. 电源控制寄存器

PCON(Power Control Register)
  • 作用:控制单片机的电源模式。

  • 地址0x87

  • 参数

    • SMOD:波特率加倍位(第7位)。
    • PD:掉电模式位(第1位)。
    • IDL:空闲模式位(第0位)。
  • 示例

    c 复制代码
    PCON |= 0x01; // 进入空闲模式

6. 总结

寄存器 作用 地址 常用参数
P0 控制P0端口 0x80 P0 = 0xFF;
TMOD 设置定时器模式 0x89 TMOD = 0x01;
TH0 定时器0高字节 0x8C TH0 = 0xFC;
TL0 定时器0低字节 0x8A TL0 = 0x18;
TCON 控制定时器运行 0x88 TR0 = 1;
IE 使能中断 0xA8 EA = 1; ET0 = 1;
SCON 控制串口模式 0x98 SCON = 0x50;
SBUF 存储串口数据 0x99 SBUF = 'A';
PCON 控制电源模式 0x87 `PCON

这些寄存器是STC单片机编程的基础,掌握它们的用法可以更好地控制硬件模块。

相关推荐
赵谨言6 分钟前
基于单片机的防盗报警器设计与实现
经验分享·单片机·毕业设计
aloneboyooo9 分钟前
STM32H7时钟树
stm32·单片机·嵌入式硬件
技术流浪者10 分钟前
PCB设计(十九)PCB设计中NPN/PNP选型策略
单片机·嵌入式硬件·硬件工程·pcb工艺
长流小哥1 小时前
STM32实战指南:SG90舵机控制原理与代码详解
stm32·单片机·嵌入式硬件·keil5
xduryan5 小时前
16.1 - VDMA视频转发实验之TPG
嵌入式硬件
逼子格8 小时前
硬件工程师笔记——二极管Multisim电路仿真实验汇总
笔记·嵌入式硬件·硬件工程师·multisim·硬件工程师学习·电子器件·电路图
「QT(C++)开发工程师」8 小时前
STM32 | FreeRTOS 递归信号量
python·stm32·嵌入式硬件
芯眼9 小时前
ALIENTEK精英STM32F103开发板 实验0测试程序详解
开发语言·c++·stm32·单片机·嵌入式硬件·社交电子
百里东风9 小时前
STM32IIC协议基础及Cube配置
stm32·单片机·嵌入式硬件
2301_8003997210 小时前
stm32 DMA
stm32·单片机·嵌入式硬件