pwm是什么,要怎么写程序,谢谢!

pwm是什么,要怎么写程序,谢谢!,第1张

用计时器产生PWM不难,你设置个中断,中断程序里让你输出端口的状态异或1,这样就行了啊,自己试着调试调试嘛,这样才有乐趣,拿个示波器,你想怎么弄怎么弄,反正单片机只要供电合适,轻易又搞不坏,51又便宜,拿着玩行了。你自己还可以试着设置频率,用示波器验证你算得对不对,这样做一个东西,你就会对单片机内部的一些东西有深入的了解了

/T0中断服务程序/

/PWM产生/

void time0(void) interrupt 1 using 2

{

TR0=0;//停止T0计数

TH0=0xff;//当晶振频率是12M时,每隔001ms中断一次,200次中断为PWM信号输出的周期,

TL0=0xf6;//PWM信号的频率=1000/(200001ms)=500HZ

++t_0;//产生一次中断t_0加1

ACC=t_0;//将t_0的值赋值给ACC

CY=0;//清零CY

ACC-=motor_r;//用ACC减去右边电动机的参数(此参数决定了右边电机的转向和速度)

if(CY==1)//判断CY是否置1,如果为1,说明ACC-motor_r已经为负数,置位了CY

{

IN1=1;//IN1由原来的0变成了1

IN2=0;//IN2由原来的1变成了0

goto PWM_2;

}

IN1=0;//如果CY不等于1,IN1=0,IN2=1

IN2=1;

PWM_2:

ACC=t_0;//重新将t_0的值赋值给ACC

CY=0;//清零CY

ACC-=motor_l;//用ACC减去左边电动机的参数(此参数决定了左边电机的转向和速度)

if(CY==1)//判断CY是否置1,如果为1,说明ACC-motor_l已经为负数,置位了CY

{

IN3=1;//IN3由原来的0变成了1

IN4=0;//IN4由原来的1变成了0

goto HIGHT;

}

IN3=0;//如果CY不等于1,IN3=0,IN4=1

IN4=1;

HIGHT:

//ACC=t_0; //重新将t_0的值赋值给ACC

if(t_0!=0xc8)//判断t_0的值是否不等于200

goto EXIT;//如果不等于200,程序指针指向EXIT执行程序

ACC=0;//如果t_0的值等于200,清零ACC和t_0

t_0=ACC;

EXIT:

TR0=1;//打开TO计数

}

以上就是关于pwm是什么,要怎么写程序,谢谢!全部的内容,包括:pwm是什么,要怎么写程序,谢谢!、基于51单片机。从L298使能端输入PWM信号对直流电机进行调速,这个pwm信号的汇编程序要怎么写 急求!!!、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/10115679.html

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

发表评论

登录后才能评论

评论列表(0条)

保存