微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > IO口模拟PWM输出

IO口模拟PWM输出

时间:10-02 整理:3721RD 点击:

  1. 用STC89C52弄得  有兴趣的可以去看看

复制代码






代码前面没添加好  现在补上

  1. #include <reg52.h>
  2. sbit PWM=P3^7;
  3. unsigned char a=1,b,c;
  4. void init()
  5. {
  6.     TMOD= 0x11;//打开定时器0,定时器1
  7.     IE =0x8A;  //打开总中断,定时器0中断,定时器1中断
  8.         TH0 = 0xFF;//定时器0赋初值  时间为200MS
  9.         TL0 = 0x38;
  10.         TR0 = 1;   //定时器
  11.         TH1 =(65535-(a*200))/256;
  12.         TL1 =(65535-(a*200))%256;
  13.         TR1=1;
  14. }
  15. void main()
  16. {
  17.         P3=0x80;
  18.         init();
  19.         while(1)
  20.         {
  21.                 if(TR1==0)PWM=1;
  22.                 else PWM=0;
  23.         }
  24. }

  25. /*************************************
  26. 利用定时器产生PWM波形,128个点采集          两个定时器互相控制 来达到产生PWM
  27. *************************************/
  28. void T0zd(void) interrupt 1  
  29. {
  30.         TH0 = 0xFF; //12MHz
  31.         TL0 = 0x38;
  32.         c++;
  33.         if(c==(129-a))
  34.         {       
  35.                 c=0;
  36.                 if(b==0)a++;
  37.                 if(a==128)b=1;
  38.                 if(b==1)a--;
  39.                 if(a==0)b=0;
  40.                 TR0=0;
  41.                 TR1=1;
  42.         }         
  43. }
  44. void T1zd()interrupt 3
  45. {
  46.         TH1 =(65535-a*200)/256;
  47.         TL1 =(65535-a*200)%256;
  48.         TR1=0;
  49.         TR0=1;               
  50. }

复制代码


学习个  小编辛苦了。

学习个   

学习,谢谢分享!

初学,谢谢!

学习,谢谢分享!

有没有stc的呀,急求呀

很好的东东,谢谢

小编,c不用设置初值吗

灵活的运用I/O口,值得参考。

66666666666666666666666666666666666666666666666666666

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top