单片机计时器0和串行口初始化函数详解
单片机计时器0和串行口初始化函数详解
该函数 void t0_init() 用于初始化单片机的计时器0和串行口,具体实现的功能如下:
void t0_init()
{
TMOD=0x20;
// SCON=0x50;
// PCON=0X80;
TH1=0xfd;
TL1=0xfd; //装入初值
TR1=1;//计时中断允许
SM0=0;
SM1=1;//串行口工作于方式2
ES=1;//串行口中断允许
REN=1;//接收允许
EA=1;// 总中断允许
RI=1;
}
功能实现:
- 将计时器0的模式设为方式2(8位自动重装载计数器),并将串行口的工作方式设置为方式2(8位异步收发,波特率可变)。
- 设置计时器0的初值为0xfd,即255,使其在计数到255时溢出并触发计时器0中断。
- 开启计时器0中断并允许串行口中断,以便在接收到数据时能够触发串行口中断并进行数据处理。
- 开启接收允许,使串行口能够接收数据。
- 开启总中断允许,以便能够响应计时器0中断和串行口中断。
- 将RI(接收中断标志位)设为1,以便在接收数据之前清除接收中断标志位。
代码解析:
TMOD=0x20;: 将计时器0设置为方式2工作模式。TH1=0xfd; TL1=0xfd;: 设置计时器0的初值为0xfd,即255。TR1=1;: 开启计时器0中断允许。SM0=0; SM1=1;: 设置串行口工作于方式2。ES=1;: 开启串行口中断允许。REN=1;: 开启接收允许。EA=1;: 开启总中断允许。RI=1;: 清除接收中断标志位。
通过该函数的初始化,可以实现计时器0定时中断和串行口数据接收功能,为单片机应用程序提供基础功能支持。
原文地址: https://www.cveoy.top/t/topic/nDe0 著作权归作者所有。请勿转载和采集!