#include<reg52.h>
sbit control=P1^0
sbit pwm=P3^0
void delay()
{
unsigned char i,j
for(i=0i<10i++)
for(j=0j<112j++)
}
main()
{
unsigned char flag=1
TMOD=0x02//定时器0方式2自动载入;
TH0=0xe3/档梁扰/28us定时,即28us翻转一次;周期为56us,频率约为渣迹18K
TL0=0xe3
EA=1
ET0=1
TR0=1
while(1)
{
if(control==0)
{
delay()
if(control==0)
{
flag=~flag
switch(flag)
{
case 0:TR0=0EA=0pwm=0
break
case 1:EA=1TR0=1
}
}
}while(control==0)
}
}
void timer0()interrupt 1
{
pwm=~pwm
}
我用过销氏一段时间的C8051F020,应该是相通的,你查查数据手册,对于看门狗有相对应的控制寄存器羡伏,在MAIN函数的开头先把看门狗关闭至于占空比只要改变定时器的定时时间不就自然改变亏派散了占空比?
用定时器产生败态圆程序如察塌下:unsigned
int
a=0
,b=10
void
main()
{
tmod=0x01
th0=(65536-50000)/256
tl0=(65536-50000)%256
ea=1
et0=1
tr0=1
}
void
pwm()
interrupt
1
{
th0=(65536-50000)/256
tl0=(65536-50000)%256
a++
p1^1=0
if(a=20)
{
a=0
}
if(a=b)
{
p1^1=1
}
}
调节a
,b的值即可调节占空比,程闭激序框架就是这样,具体自己改吧
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)