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单片机编程的基础,掌握它们的用法可以更好地控制硬件模块。

相关推荐
i只喝怡宝1 小时前
基于辉芒51单片机的5档调光灯
c语言·单片机·嵌入式硬件·51单片机
云山工作室1 小时前
基于单片机的人体健康指标采集系统设计
单片机·嵌入式硬件·毕业设计·毕设
Asa3192 小时前
Personal APP
嵌入式硬件·个人开发·极限编程
佳心饼干-4 小时前
单片机-静动态数码管实验
单片机·嵌入式硬件
1101 11016 小时前
STM32-笔记35-DMA(直接存储器访问)
笔记·stm32·嵌入式硬件
小禾苗_7 小时前
51单片机——按键实验
单片机·嵌入式硬件·51单片机
浅陌pa9 小时前
I2C(一):存储器模式:stm32作为主机对AT24C02写读数据
c语言·stm32·单片机·嵌入式硬件
半个番茄9 小时前
STM32 和 ESP32
stm32·单片机·嵌入式硬件
嵌入式OG10 小时前
硬件-射频-PCB-常见天线分类-ESP32实例
嵌入式硬件·硬件工程·智能硬件·pcb工艺
JoneMaster10 小时前
[读书日志]从零开始学习Chisel 第一篇:书籍介绍,Scala与Chisel概述,Scala安装运行(敏捷硬件开发语言Chisel与数字系统设计)
开发语言·后端·嵌入式硬件·fpga开发·架构·scala