51单片机pwm波的频率是怎么算的?

2019-07-15 11:26发布

这个程序的频率是多少?是不是看根据定时的时间计算的??要改成10k频率怎么改?谢谢!
  1. <div class="blockcode"><blockquote>
  2.   bit Right_moto_stop=1;
  3. bit Left_moto_stop =1;
  4. unsigned char pwm_val_left =0;//变量定义
  5. unsigned char push_val_left =0;// 左电机占空比N/20
  6. unsigned char pwm_val_right =0;
  7. unsigned char push_val_right=0;// 右电机占空比N/20
  8. unsigned int timer=0;

  9. /************************************************************************/
  10. /* PWM调制电机转速 */
  11. /************************************************************************/
  12. /* 左电机调速 */
  13. /*调节push_val_left的值改变电机转速,占空比 */
  14. void pwm_out_left_moto(void)
  15. {
  16. if(Left_moto_stop)
  17. {
  18. if(pwm_val_left<=push_val_left)
  19. {
  20. Left_moto_pwm=1;
  21. }
  22. else
  23. {
  24. Left_moto_pwm=0;
  25. }
  26. if(pwm_val_left>=20)
  27. pwm_val_left=0;
  28. }
  29. else
  30. {
  31. Left_moto_pwm=0;
  32. }
  33. }
  34. /******************************************************************/
  35. /* 右电机调速 */
  36. void pwm_out_right_moto(void)
  37. {
  38. if(Right_moto_stop)
  39. {
  40. if(pwm_val_right<=push_val_right)
  41. {
  42. Right_moto_pwm=1;
  43. }
  44. else
  45. {
  46. Right_moto_pwm=0;
  47. }
  48. if(pwm_val_right>=20)
  49. pwm_val_right=0;
  50. }
  51. else
  52. {
  53. Right_moto_pwm=0;
  54. }
  55. }



  56. /***************************************************/
  57. ///*TIMER1中断服务子函数产生PWM信号*/
  58. void timer1()interrupt 3
  59. {
  60. TH1=(65536-1000)/256; //1ms定时
  61. TL1=(65536-1000)%256;
  62. timer++;
  63. pwm_val_left++;
  64. pwm_val_right++;
  65. pwm_out_left_moto();
  66. pwm_out_right_moto();
  67. }
复制代码


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。