采用STC8A8K64SA12做资源
简介
机器周期:
从内存中读取一个指令字的最短时间来规定CPU周期(机器周期),即CPU完成一个基本操作所需的时间。
时钟周期:
可以表示为时钟晶振频率的倒数,时钟周期 = 晶振频率的倒数。
一个机器周期 = 12个时钟周期 = 12 x ( 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:
模式选择
定时器2
T2R :
为运行控制位,开始计数,需要置 1 。
T2_C/T:
置 1 为定时器(内部定时),置 0 为计数器(对引脚/外部脉冲计数)
定时器3、定时器4
T3R、T4R:
为定时器3、4 运行控制位,开始计数,需要置 1 。
T3_C/T、T4_C/T:
置 1 为定时器(内部定时),置 0 为计数器(对引脚/外部脉冲计数)
定时器操作代码
void TM0_Init()
{
TMOD |= 0X00;
TCON |= 0X10;
TH0 = (65535 - 50000) / 256;
TL0 = (65535 - 50000) % 256;
ET0 = 1;
EA = 1;
}
void TM0() interrupt 1
void TM1_Init()
{
TMOD |= 0X00;
TCON |= 0X40;
TH1 = (65535 - 50000) / 256;
TL1 = (65535 - 50000) % 256;
ET1 = 1;
EA = 1;
}
void TM1() interrupt 3
void TM2_Init()
{
AUXR |= 0X10 ;
AUXINTIF &= 0x00 ;
T2H = (65535 - 50000) / 256;
T2L = (65535 - 50000) % 256;
IE2 |= 0x04;
EA = 1;
}
void TM2() interrupt 12
void TM3_Init()
{
T4T3M |= 0X08 ;
AUXINTIF &= 0x00 ;
T3H = (65535 - 50000) / 256;
T3L = (65535 - 50000) % 256;
IE2 |= 0x20;
EA = 1;
}
void TM3 () interrupt 19
void TM4_Init()
{
T4T3M |= 0X80 ;
AUXINTIF &= 0x00 ;
T4H = (65535 - 50000) / 256;
T4L = (65535 - 50000) % 256;
IE2 |= 0x40;
EA = 1;
}
void TM4 () interrupt 20
|