请帮写一段C语言的pwm固定输出程序

请帮写一段C语言的pwm固定输出程序,第1张

/*s52,12M晶振,P30输出行旦PWM,P10按键控制输出*/

#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的值即可调节占空比,程闭激序框架就是这样,具体自己改吧


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8270808.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存