51定时器用T0和T1共同控制产生精确的PWM波形例程
扫描二维码
随时随地手机看文章
#include
sbit P1_1 = P1^1;
//定时器初始化
void InitTimer(void)
{
TMOD = 0x11;
EA= 1;
ET0= 1;
ET1= 1;//开启T0和T1的中断
TH1= 0xd8;
TL1= 0xf0;//定义10ms
TH0= 0xF8;
TL0= 0x30;//定义2ms
TR0= 1;
TR1= 1;//开启定时器0和1
P1_1 = 1;
}
//T0的中断服务程序
void T0ISR(void) interrupt 1 using 1
{
P1_1 = 0;
TR0= 0;
TH0= 0xF8;
TL0= 0x30;//定义2ms
}
//T1的中断服务程序
void T1ISR(void) interrupt 3 using 2
{
P1_1 = 1;
TR0= 1;
TH1= 0xd8;
TL1= 0xf0;//定义10ms
}
void main(void)
{
P1_1 = 0;
InitTimer();
while(1)
{
}
}