国产STC89C52RC单片机介绍
工作电压5V,Flash程序存储器8K字节,RAM数据存储器字节512字节,时钟频率11.0592M。
![](https://img-blog.csdnimg.cn/20201103091459519.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpbmdkb25nMjQ=,size_16,color_FFFFFF,t_70)
定时器
51系列单片机中有两个16位的加法计数器,分别叫做T0和T1.他们在计数脉冲的作用下,其计数值不断加1,再次过程中计数器可能产生溢出,产生溢出后可以向cpu发出中断请求。计数脉冲可以源于系统时钟或外部电路。如果计数脉冲来自于系统时钟,称之为定时器,每个机器周期计数器加1;如果计数脉冲来自外部电路,称之为计数器,此时单片机在每个机器周期对T0引脚进行检测,如果在两个连续的机器周期内,前一次检测为高电平,而后检测到低电平,则计数器加1,因此计数脉冲的频率不能高于振荡频率的1/24。
时钟周期=1/时钟频率;机器周期=12时钟周期;每经过一个机器周期,定时器内部寄存器加1;
![](https://img-blog.csdnimg.cn/20201103095220343.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpbmdkb25nMjQ=,size_16,color_FFFFFF,t_70)
定时器控制寄存器TCON,用于控制定时寄存器运行、溢出和中断,可位寻址。
![](https://img-blog.csdnimg.cn/20201103095533430.png)
![](https://img-blog.csdnimg.cn/20201103095605558.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpbmdkb25nMjQ=,size_16,color_FFFFFF,t_70)
定时器模式寄存器TMOD用于设置定时器工作模式,不可以位寻址。
![](https://img-blog.csdnimg.cn/20201103095831214.png)
![](https://img-blog.csdnimg.cn/20201103095926248.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpbmdkb25nMjQ=,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20201103095958443.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpbmdkb25nMjQ=,size_16,color_FFFFFF,t_70)
定时器使用步骤:
第一步:设置特殊功能寄存器 TMOD,配置好工作模式。
第二步:设置计数寄存器 TH0 和 TL0 的初值。
第三步:设置 TCON,通过 TR0 置 1 来让定时器开始计数。
第四步:判断 TCON 寄存器的 TF0 位,监测定时器溢出情况。
假设需要计时X秒钟,定时器初始计数值计算公式为(16位定时器为65536,8位定时器为256):
65536-X/(12/110592);将得到的结果转换成十六进制赋值给定时器的定时值存储寄存器。
中断
与定时器不同,定时器是单片机上确实存在一个模块,而中断是一种运行机制;控制中断的寄存器有两个,一个是中断使能寄存器IE,另一个是中断优先级寄存器IP。
中断使能寄存器IE,可位寻址。
中断响应过程:单片机在每个机器周期顺序采样每个中断源,在下一个机器周期按优先级顺序检测中断标志,如果发现某个中断标志为1,将在接下来的机器周期按优先级进行处理。中断系统通过硬件自动将当前的PC值压入堆栈,以保护断点,再将相应的中断服务程序的入口地址装入PC,使CPU转到中断服务程序的入口处开始执行程序。
![](https://img-blog.csdnimg.cn/20201103102712909.png)
![](https://img-blog.csdnimg.cn/20201103103018582.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpbmdkb25nMjQ=,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20201103104117764.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpbmdkb25nMjQ=,size_16,color_FFFFFF,t_70)
中断优先级寄存器IP,可以位寻址:
![](https://img-blog.csdnimg.cn/20201103104204874.png)
![](https://img-blog.csdnimg.cn/20201103104239935.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpbmdkb25nMjQ=,size_16,color_FFFFFF,t_70)
在都是默认优先级的情况下,高优先级也不会打断低级别优先级,几乎只用在仲裁阶段,当多个中断同时发生,会用到默认优先级;当设置优先级为1时,则为抢占优先级,高级别会打断低级别;在51中两种模式同时存在,共同起作用。