#include<reg52.h>
#include<stdio.h>
#include<intrins.h>
sbit out1 = P0^0;
sbit out2 = P0^1;
sbit out3 = P0^2;
int t1;
int t2;
int t3;int T1;
int T2;
int T3;
void Time1(void)//开启定时器,1ms进一次中断函数
{
TMOD =0x01 ;
TH1 = (65536-100)/256;
TL1 = (65536-100)%256;
ET1 = 1;
EA = 1;
TR1 = 1;
}
void Time11(void) interrupt 3 //中断函数
{
static int Count1=0;
static int Count2=0;
static int Count3=0;
TH1 = (65536-100)/256; //重新令定时器计时
TL1 = (65536-100)%256;
if(Count1 >= t1)
{
out1 = 1;
}
else
{
out1= 0;
};
Count1++;
if(Count1 == T1)
{
Count1=0;
if(pwm1 != 0)
{
out1= 0;
}
}
//*******************************************
if(Count2 > t2)
{
out2 = 1;
}
else
{
out2= 0;
};
Count2++;
if(Count2 == T2)
{
Count2=0;
if(pwm2 != 0)
{
out2= 0;
}
}//*************************************
if(Count3 > t3)
{
out3 = 1;
}
else
{
out3= 0;
};
Count3++;
if(Count3 == T3)
{
Count3=0;
if(pwm3 != 0)
{
out3= 0;
}
}}
void Main(void)
{
t1=100;T1=200;//定义pwm1周期为200ms,di电平时间为100ms
t2=50;
T2=100;//定义pwm2周期为100ms,di电平时间为50ms
t3=250;
T3=400;//定义pwm3周期为400ms,di电平时间为250ms
while(1);//死循环,不断发出pwm波
}