|
#include<reg52.h>
#define uint unsigned int
sbit pwm=P2^0;//定義P2.0口為PWM輸出口
uint num,end,jd;//定義高電平、總時(shí)間、角度標(biāo)識(shí)
void main()//主程序
{
TMOD=17;//設(shè)置定時(shí)器T0、T1工作在方式一
TH0=(65535-92)/256;//T0定時(shí)為0.1MS
TL0=(65535-92)%256;
TH1=(65535-18349)/256;//T1定時(shí)為20MS
TL1=(65535-18349)%256;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
jd=10;
num=0;
if(end>3000)//如果T1定時(shí)器中斷次數(shù)達(dá)到3000次,也就是1分鐘,程序?qū)⑼V惯\(yùn)行
{
EA=0;
while(1);
}
}
void time1()interrupt 1
{
TH0=(65535-92)/256;
TL0=(65535-92)%256;
num++;//T0每中斷一次,高電平標(biāo)識(shí)加1,當(dāng)大于角度標(biāo)識(shí)時(shí),PWM置于低電平,同時(shí)關(guān)掉T0中斷
if(num>jd)
{
pwm=0;
num=0;
TR0=0;
}
}
void time3()interrupt 3
{
TH1=(65535-18349)/256;
TL1=(65535-18349)%256;
jd++;
end++;
TR0=1;
pwm=1;//T1每中斷一次,將PWM重新置為高電平
if(jd>22)//當(dāng)角度標(biāo)識(shí)大于22時(shí),也就是高電平時(shí)間大于2.2MS時(shí),將角度標(biāo)識(shí)重新置為10,也就是1MS
{
jd=10;
}
}
|
|