串口通信
每个串行口有两个数据缓冲器(SBUF)、一个移位寄存器、一个串行控制寄存器和一个波特率发生器组成
串口寄存器介绍
串口所需中断
EA = 1 : 总中断 必需开
ES: 串口1 中断运行位
串口1寄存器
SM0 、 SM1: 模式选择
REN: 串口允许接收控制位, 接收 1 禁止 0
TB8:
当串口1设置 为模式2、模式3时,TB8为发送为第9位,需要软件操作,在模式0、1不可用
RB8:
当串口1设置 为模式2、模式3时,RB8为接收为第9位,需要软件操作,在模式0、1不可用
TI :串口发送中断请求位,发送完毕就会置 1
模式0中,第8位数据发送结束时,硬件置 1 ,响应中断后 必须软件清 0
除模式0外,则在停止位发送时,硬件置 1 ,响应中断后 必须软件清 0
RI :串口接收中断请求位,发送完毕就会置 1
模式0中,第8位数据发送结束时,硬件置 1 ,响应中断后 必须软件清 0
除模式0外,则在停止位发送时,硬件置 1 ,响应中断后 必须软件清 0
SBUF 是两个寄存器
给SBUF赋值时:SBUF = X ,此时为写寄存器
把SBUF值赋给别人时:X = SBUF, 此时为读寄存器
UART_M0x6
串口1模式0的通讯速度控制,0:波特率不加倍,固定 fosc/12
SIST2
串口1波特率发射器
0 :选择定时器1 为波特率发射器
1 :选择定时器2 为波特率发射器
串口2寄存器
S2SM0 : 模式选择
S2REN: 串口允许接收控制位, 接收 1 禁止 0
S2TI :串口发送中断请求位,发送完毕就会置 1 ,响应中断后 必须软件清 0
S2RI :串口接收中断请求位,发送完毕就会置 1 ,响应中断后 必须软件清 0
功能
奇偶位
PSW是一个8位寄存器。PSW的全称是Program Status Word,即程序状态字
P : 奇偶标志位
每执行一条汇编指令,单片机都能根据ACC中 1的个数进行奇偶数量判断
使 P 置 1或置 0 ,奇数 P为 1,偶数 P为0
引脚复用
S1_S[1:0]: 串口1功能脚选择位
定时器、计数器
-
机器周期、时钟周期是什么?(
传送门
)
定时器寄存器介绍
定时器所需中断
EA = 1 : 总中断 必需开
ET0: 定时器0 、 计数器0 中断运行位
ET1: 定时器1 、 计数器1 中断运行位
ET2: 定时器2 、 计数器2 中断运行位
ET3: 定时器3 、 计数器3 中断运行位
ET4: 定时器4 、 计数器4 中断运行位
T2IF : 定时器2 中断溢出请求位,需要软件清 0 (手动清 0 )
T3IF : 定时器3 中断溢出请求位,需要软件清 0 (手动清 0 )
T4IF : 定时器4 中断溢出请求位,需要软件清 0 (手动清 0 )
定时器0、定时器1
TF1、TF0
为中断请求标志位,溢出时置 1 并请求中断,由硬件置 0 ,不管手动清 0
TR1、TR0:
为运行控制位,开始计数,需要置 1 。
T1_C/T、T0_C/T:
置 1 为定时器(内部定时),置 0 为计数器(对引脚/外部脉冲计数)
T1_M1、T1_M0、T0_M1、T1_M0:
模式选择
T0x12 : 定时器0 ,默认为0,12分频、1 不分频
T1x12 : 定时器1 ,默认为0,12分频、1 不分频
定时器2
T2R :
为运行控制位,开始计数,需要置 1 。
T2_C/T:
置 1 为定时器(内部定时),置 0 为计数器(对引脚/外部脉冲计数)
定时器3、定时器4
T3R、T4R:
为定时器3、4 运行控制位,开始计数,需要置 1 。
T3_C/T、T4_C/T:
置 1 为定时器(内部定时),置 0 为计数器(对引脚/外部脉冲计数)
T3x12、T4x12: 默认12分屏
看门狗:复位
STC8A8K64S4A12系列单片机的复位分为硬件复位和软件复位两种。
硬件复位时,所有寄存器的值会复位到初始值,系统会重新读取所有的硬件选项。同时根据硬件选项所设置的上电等待时间进行上电等待。
软件复位时,除与时钟相关的寄存器保持不变外,其余的所有寄存器的值会复位到初始值,软件复位不会重新读取所有的硬件选项。
- 硬件复位:看门狗
为了防止“系统在异常情况下,受到干扰,MCU/CPU程序跑飞,导致系统长时间异常工作”的情况发生,而设计了一种用于检测程序运行状态的芯片或电路,俗称看门狗(即Watchdog)。
看门狗通常有一个输入信号和一个输出信号。输入信号也称“喂狗”,输出信号关联MCU的复位端。系统运行后启动看门狗计数器,看门狗开始计数,当计数满后未收到清零信号(喂狗),看门狗计数器溢出,触发看门狗中断,输出控制MCU复位。
看门狗寄存器操作
WDT_FLAG
看门狗发生溢出时,硬件自动置 1 ,软件清零
EN_WDT
看门狗使能,0 无影响;1 启动开门狗定时器
CLR_WDT
看门狗定时器清零(喂狗)
1 清零看门狗定时器,才不会发生重启,重启时硬件自动将此位复位
WDTPS[2:0]
看门狗定时器时钟分频系数
外部中断
外部中断所需中断
EA = 1 : 总中断 必需开
EX0 、EX1: 外部中断 0 、外部中断 1 中断允许位
IT1、IT0:
为外部中断 触发控制位, 下降沿触发方式 置1 ; 上升沿和下降沿都可以触发 置0
IE0、IE1:
外部中断 允许位,硬件置 0 ;(代码不显示)
ADC
STC8A8K64S4A12系列单片机ADC是逐次比较型ADC
STC8系列单片机内部集成了一个12位15通道的高速A/D转换器。
ADC寄存器介绍
ADC所需中断
EADC : ADC允许中断位
ADC寄存器
ADC_POWER : ADC电源
ADC_START : ADC转换控制位,写1开始转换,转换完成后硬件清 0
ADC_CH[3:0] : ADC通道选择位
RESFMT : ADC转换结果 控制位,1 右对齐(高4低8),0 左对齐(高8低4)
SPEED[3:0] : ADC时钟控制
ADC_RES : 保存结果高字节
ADC_RESL : 保存结果低字节