IO口模拟PWM输出
时间:10-02
整理:3721RD
点击:
- 用STC89C52弄得 有兴趣的可以去看看
代码前面没添加好 现在补上
- #include <reg52.h>
- sbit PWM=P3^7;
- unsigned char a=1,b,c;
- void init()
- {
- TMOD= 0x11;//打开定时器0,定时器1
- IE =0x8A; //打开总中断,定时器0中断,定时器1中断
- TH0 = 0xFF;//定时器0赋初值 时间为200MS
- TL0 = 0x38;
- TR0 = 1; //定时器
- TH1 =(65535-(a*200))/256;
- TL1 =(65535-(a*200))%256;
- TR1=1;
- }
- void main()
- {
- P3=0x80;
- init();
- while(1)
- {
- if(TR1==0)PWM=1;
- else PWM=0;
- }
- }
- /*************************************
- 利用定时器产生PWM波形,128个点采集 两个定时器互相控制 来达到产生PWM
- *************************************/
- void T0zd(void) interrupt 1
- {
- TH0 = 0xFF; //12MHz
- TL0 = 0x38;
- c++;
- if(c==(129-a))
- {
- c=0;
- if(b==0)a++;
- if(a==128)b=1;
- if(b==1)a--;
- if(a==0)b=0;
- TR0=0;
- TR1=1;
- }
- }
- void T1zd()interrupt 3
- {
- TH1 =(65535-a*200)/256;
- TL1 =(65535-a*200)%256;
- TR1=0;
- TR0=1;
- }
学习个 小编辛苦了。
学习个
学习,谢谢分享!
初学,谢谢!
学习,谢谢分享!
有没有stc的呀,急求呀
很好的东东,谢谢
小编,c不用设置初值吗
灵活的运用I/O口,值得参考。
66666666666666666666666666666666666666666666666666666