#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uint t=0,f=39,w=2;//t为单位计时数 500次为0.5ms f+1 为周期 (39+1)*0.5=20ms w 为占空比 1w=0.5ms
sbit P10=P1^0; // 输出端
void init()
{
TMOD=0x21;
SM0=0;
SM1=1;
REN=1;
PCON=0;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
ET0=1;
TR0=1;
EA=1;
ES=1;
ET1=1;
TH1=0xFD;
TL1=0xF9;
TR1=1;//计时器互相影响 一个用于传输数据 一个用于产生pwm波
}
void time0() interrupt 1
{
TH0=(65536-500)/256;
TL0=(65536-500)%256;
t++; //t为0.5ms
if(t>=f)
t=0;
}
// void getspeed0() //interrupt 4 using 1
//{
//P0=SBUF;while(!RI);RI=0; //接收数据
//SBUF=P0;while(!TI);TI=0; //发送数据
//}
void main()
{
init();
while(1)
{
if(t<w)P10=1; //单个周期
else P10=0;
}
}