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

相关推荐
源远流长jerry2 小时前
STM32之RTOS移植和使用
stm32·单片机·嵌入式硬件
2301_1472583692 小时前
STM32 单片机开发 - SPI 总线
单片机·嵌入式硬件
范纹杉想快点毕业9 小时前
ZYNQ PS 端 UART 接收数据数据帧(初学者友好版)嵌入式编程 C语言 c++ 软件开发
c语言·笔记·stm32·单片机·嵌入式硬件·mcu·51单片机
方圆工作室10 小时前
51单片机驱动数码管
单片机·嵌入式硬件·51单片机
乔宕一11 小时前
stm32 链接脚本没有 .gcc_except_table 段也能支持 C++ 异常
c++·stm32·嵌入式硬件
范纹杉想快点毕业12 小时前
STM32 串口接收数据包(自定义帧头帧尾)
stm32·单片机·嵌入式硬件
茯苓gao12 小时前
STM32G4 电流环闭环
笔记·stm32·单片机·嵌入式硬件·学习
单片机系统设计13 小时前
基于stm32的环境监测系统/智能家居/空气质量监测系统
stm32·单片机·嵌入式硬件·毕业设计·智能家居
不知所云,14 小时前
5. STM32 时钟系统分配
stm32·单片机·嵌入式硬件
电子科技圈15 小时前
芯科科技FG23L无线SoC现已全面供货,为Sub-GHz物联网应用提供最佳性价比
科技·嵌入式硬件·mcu·物联网·制造·智能硬件·交通物流