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

相关推荐
点灯小铭2 小时前
基于单片机的智能水箱温度液位控制系统设计
单片机·嵌入式硬件·毕业设计·课程设计
沐欣工作室_lvyiyi6 小时前
基于物联网的体温心率监测系统设计(论文+源码)
单片机·物联网·毕业设计·体温心率检测
小莞尔9 小时前
【51单片机】【protues仿真】基于51单片机火灾报警系统
单片机·嵌入式硬件
qiuiuiu41310 小时前
正点原子RK3568学习日志-编译第一个驱动程序helloworld
linux·c语言·开发语言·单片机
易享电子10 小时前
基于单片机智能台灯(调光,时钟)系统Proteus仿真(含全部资料)
单片机·嵌入式硬件·fpga开发·51单片机·proteus
hazy1k11 小时前
51单片机基础-动态数码管显示
stm32·单片机·嵌入式硬件·51单片机
Heavy sea11 小时前
STM32 DMA直接存储器访问(寄存器与HAL库实现)
stm32·单片机
漫夜85511 小时前
MCU和GPIO (1)
单片机·嵌入式硬件
点灯小铭11 小时前
基于单片机的智能洗碗机设计
单片机·嵌入式硬件·mongodb·毕业设计·课程设计
ShiMetaPi12 小时前
操作【GM3568JHF】FPGA+ARM异构开发板 使用指南:音频接口
arm开发·嵌入式硬件·fpga开发·rk3568