#include<reg52.h>
#include<intrins.h> //包含_nop_(),汇编中的子函数
#define uchar unsigned char
sbit PWM=P1^0; //PWM输出
uchar count,PWMH; //count组波计数,PWMH设置高低挡
void delay(uchar i) //延时100us,和定时器组波无光,可自己随意定义
{
uchar j;
for(;i>0;i--)
{
for(j=100;j>0;j--)
{
_nop_(); //一个机器周期;
}
}
}
void timer0() interrupt 1
{
if(PWMH==0) //0档,全0
PWM=0;
else if(PWMH==10) //1档,全1
PWM=1;
else //组波
{
if(count++<PWMH) //举例PWMH=1,则第一次count=0(然后就++);执行一次(即只能进入中断一次);以后则为0
PWM=1;
else
PWM=0;
if(count>=10) //count=10,即为到了一个周期,重新计数
count=0;
}
}
void main()
{
TMOD=0x02; //工作方式2(自动再装入,预置数方式)
TL0=265-100; //低八位放初值;高八位放预置数;定时100次
TH0=265-100; //八位寄存器,故为265
count=0;
PWMH=0;
TR0=1; //启动定时器1
ET0=1; //定时器0中断允许
EA=1; //cpu中断允许
while(1)
{
PWMH=0;
delay(200); //延时20ms
PWMH=1;
delay(200);
PWMH=2;
delay(200);
PWMH=3;
delay(200);
PWMH=4;
delay(200);
PWMH=5;
delay(200);
PWMH=6;
delay(200);
PWMH=7;
delay(200);
PWMH=8;
delay(200);
PWMH=9;
delay(200);
PWMH=10;
delay(200);
}
}
#include<intrins.h> //包含_nop_(),汇编中的子函数
#define uchar unsigned char
sbit PWM=P1^0; //PWM输出
uchar count,PWMH; //count组波计数,PWMH设置高低挡
void delay(uchar i) //延时100us,和定时器组波无光,可自己随意定义
{
uchar j;
for(;i>0;i--)
{
for(j=100;j>0;j--)
{
_nop_(); //一个机器周期;
}
}
}
void timer0() interrupt 1
{
if(PWMH==0) //0档,全0
PWM=0;
else if(PWMH==10) //1档,全1
PWM=1;
else //组波
{
if(count++<PWMH) //举例PWMH=1,则第一次count=0(然后就++);执行一次(即只能进入中断一次);以后则为0
PWM=1;
else
PWM=0;
if(count>=10) //count=10,即为到了一个周期,重新计数
count=0;
}
}
void main()
{
TMOD=0x02; //工作方式2(自动再装入,预置数方式)
TL0=265-100; //低八位放初值;高八位放预置数;定时100次
TH0=265-100; //八位寄存器,故为265
count=0;
PWMH=0;
TR0=1; //启动定时器1
ET0=1; //定时器0中断允许
EA=1; //cpu中断允许
while(1)
{
PWMH=0;
delay(200); //延时20ms
PWMH=1;
delay(200);
PWMH=2;
delay(200);
PWMH=3;
delay(200);
PWMH=4;
delay(200);
PWMH=5;
delay(200);
PWMH=6;
delay(200);
PWMH=7;
delay(200);
PWMH=8;
delay(200);
PWMH=9;
delay(200);
PWMH=10;
delay(200);
}
}