标签:设置 接收 div 计时 自动 如何 工作 优先级 选择
52单片机一共有6个中断源,它们的符号,名称以及各产生的条件分别如下:
其中T2是52单片机特有的。
51单片机内部共有两个16位可编程的定时器/计数器,即定时器T0和定时器T1
52单片机内部多一个T2定时器/计数器
它们既有定时功能,也有计数功能。可通过设置与它们相关的特殊功能寄存器选择启用定时功能还是计数功能。
这个定时器系统是单片机内部一个独立的硬件部分,它与CPU和晶振通过内部某些控制线连接并相互作用,CPU一旦设置开启定时功能后,定时器便在晶振的作用下自动开始计时,但定时器的计数器计满后,会产生中断。
定时器/计数器的实质是加1计数器(16位), 由高8位和低8位两个寄存器组成,
TMOD:定时器/计数器的工作方式寄存器,确定工作方式和功能。
TCON:控制寄存器,控制T0,T1的启动和停止及设置溢出标志。
TMOD:定时器/计数器工作方式寄存器
TCON:定时器/计数器控制寄存器
每个定时器有4种工作方式,可通过设置TMOD寄存器中的M1和M0来进行工作方式选择。
方式1的技术位数是16bit,对T0来说, TL0寄存器作为低8bit,TH0寄存器作为高8bit,组成了16bit加1计数器,逻辑结构框图如下
#include<reg51.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int sbit led1 = P0^0; uchar num = 0; //主程序 void main() { TMOD = 0x01; TH0 = (65536 - 45872) / 256; // 设置定时器0为工作方式1(M1M0为01) TL0 = (65536 - 45872) % 256; // 装初值11.0592M晶振定时50ms数位45872 EA = 1; // 开总中断 ET0 = 1; // 开定时器0中断 TR0 = 1; // 启动定时器0 while(1) { if (num == 20) { num = 0; led1 = ~led1; } } } void T0_time() interrupt 1 { TH0 = (65536 - 45872) / 256; TL0 = (65536 - 45872) % 256; num++; }
标签:设置 接收 div 计时 自动 如何 工作 优先级 选择
原文地址:http://www.cnblogs.com/wxer/p/6815204.html