51定時器用T0和T1共同控制產(chǎn)生精確的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的中斷服務(wù)程序
void T0ISR(void) interrupt 1 using 1
{
P1_1 = 0;
TR0= 0;
TH0= 0xF8;
TL0= 0x30;//定義2ms
}
//T1的中斷服務(wù)程序
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)
{
}
}