各种周期之间的关系
51单片机T数是12.
中断寄存器
单片机的中断寄存器主要包括:
IE – 中断允许控制寄存器(重点)
IP – 中断优先级控制寄存器
TMOD – 定时器工作方式寄存器(重点)
TCON – 定时器控制寄存器(重点)
SCON – 串口控制寄存器
THx/TLx – 定时器初值寄存器(重点)
中断允许控制寄存器 IE
EA -全局中断允许位,当此位是1时中断可用。(重要)
ET2-定时器/计数器2中断允许位
ES -串口中断允许位
ET1-定时器/计数器1中断允许位
EX1-外部中断1允许位
ET0-定时器/计数器0中断允许位 (重要)
EX0-外部中断0允许位
定时器控制寄存器 TCON
TF1 定时器1溢出标志位
TR1 定时器1运行控制位,将该位置1时启动定时器1(重要)
TF0 定时器0溢出标志位
TR0 定时器0运行控制位,将该位置1时启动定时器0 (重要)
IE1 外部中断1请求标志
IT1 外部中断1触发方式选择位
IE0 外部中断0请求标志
IT0 外部中断0触发方式选择位
定时器初值寄存器 THx/TLx
第一种
TH0=(65536-50000)/256; //定时器T0的高8位赋初值
TL0=(65536-50000)%256; //定时器T0的高8位赋初值
50000就是我们设置的时间,比如机械周期是1us,那么50000*1us=50ms
第二种
TH0 = 0x3c;//高位
TL0 = 0xb0; //低位
首先把高低位拼在一起,THTL=0x3cb0,转换成十进制为THTL =15536,65536-15536=50000
定时器工作方式寄存器 TMOD TMOD中取决定因素的是M1、M0两位,TMOD=10,则T1采用方式1,T0采用方式0。
四种模式的定时时间算法为: 1、(2^13-T0初值)振荡周期单片机T数 2、(2^16-T0初值)振荡周期单片机T数 3、(2^8-T0初值)振荡周期单片机T数
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
sbit led=P2^0;
void Timer0Init()
{
TMOD|=0X01;
TH0=0XFC;
TL0=0X18;
ET0=1;
EA=1;
TR0=1;
}
void main()
{
Timer0Init();
while(1);
}
void Timer0() interrupt 1
{
static u16 i;
TH0=0XFC;
TL0=0X18;
i++;
if(i==1000)
{
i=0;
led=~led;
}
}
|