STC单片机内部常见寄存器及其作用
STC单片机是基于8051架构的增强型单片机,广泛应用于嵌入式系统中。其内部有多个特殊功能寄存器(SFR, Special Function Register),用于控制硬件模块(如定时器、串口、中断等)。以下是STC单片机中常见的寄存器及其作用的详细介绍。
1. 端口寄存器
P0, P1, P2, P3
-
作用:控制I/O端口的状态。
-
地址:
P0
:0x80
P1
:0x90
P2
:0xA0
P3
:0xB0
-
示例:
cP1 = 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位定时器)。
-
示例:
cTMOD = 0x01; // 定时器0,模式1
TH0, TL0(Timer 0 High/Low Byte)
-
作用:存储定时器0的计数值。
-
地址:
TH0
:0x8C
TL0
:0x8A
-
示例:
cTH0 = 0xFC; // 定时初值高字节 TL0 = 0x18; // 定时初值低字节
TH1, TL1(Timer 1 High/Low Byte)
-
作用:存储定时器1的计数值。
-
地址:
TH1
:0x8D
TL1
:0x8B
-
示例:
cTH1 = 0xFE; // 定时初值高字节 TL1 = 0x0C; // 定时初值低字节
TCON(Timer Control Register)
-
作用:控制定时器的启动、停止和中断标志。
-
地址 :
0x88
-
参数:
TR0
:定时器0运行控制位(第4位)。TR1
:定时器1运行控制位(第6位)。TF0
:定时器0溢出标志位(第5位)。TF1
:定时器1溢出标志位(第7位)。
-
示例:
cTR0 = 1; // 启动定时器0
3. 中断寄存器
IE(Interrupt Enable Register)
-
作用:使能或禁用中断。
-
地址 :
0xA8
-
参数:
EA
:总中断使能位(第7位)。ET0
:定时器0中断使能位(第1位)。ET1
:定时器1中断使能位(第3位)。EX0
:外部中断0使能位(第0位)。EX1
:外部中断1使能位(第2位)。
-
示例:
cEA = 1; // 使能总中断 ET0 = 1; // 使能定时器0中断
IP(Interrupt Priority Register)
-
作用:设置中断优先级。
-
地址 :
0xB8
-
参数:
PT0
:定时器0中断优先级(第1位)。PT1
:定时器1中断优先级(第3位)。PX0
:外部中断0优先级(第0位)。PX1
:外部中断1优先级(第2位)。
-
示例:
cPT0 = 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位)。
-
示例:
cSCON = 0x50; // 串口模式1,接收使能
SBUF(Serial Buffer Register)
-
作用:存储串口发送或接收的数据。
-
地址 :
0x99
-
示例:
cSBUF = 'A'; // 发送字符'A'
5. 电源控制寄存器
PCON(Power Control Register)
-
作用:控制单片机的电源模式。
-
地址 :
0x87
-
参数:
SMOD
:波特率加倍位(第7位)。PD
:掉电模式位(第1位)。IDL
:空闲模式位(第0位)。
-
示例:
cPCON |= 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单片机编程的基础,掌握它们的用法可以更好地控制硬件模块。