#include "reg52.h" sbit OUT=P2^0; //pwm输出 sbit add=P2^7; //占空比增加 sbit dec=P2^6; //占空比减少 sbit addhz=P2^5; //改变频率 实际上是增加周期 减少频率 sbit dechz=P2^4; // unsigned int tt=10; // unsigned int th0=0xff; unsigned int tl0=0xfe; unsigned int th; unsigned char hpwm=50; //高电平占空比 unsigned char lpwm=50; //低电平 unsigned char count =0; void time0() interrupt 1 { //TH0=(65536-2)/256; //TL0=(65536-2)%256; TH0=th0;; TL0=tl0; count++; if (count >= 101) count = 0; if (count < (100 - hpwm)) OUT = 1; else OUT = 0; TR0=1; } void main() { TMOD=0x01; //TH0=(65536-2)/256; //TL0=(65536-2)%256; TH0=th0; TL0=tl0; EA = 1; TR0=1; //IE=0x82; ET0=1; OUT=1; while(1) { if(!add) { while(add==0); hpwm=hpwm+10; if(hpwm>=100) hpwm=100; if(hpwm<=0) hpwm=0; } if(!dec) { while(dec==0); hpwm=hpwm-10; if(hpwm>=100) hpwm=100; if(hpwm<=0) hpwm=0; } if(!addhz) //改变频率 实际上是增加周期 减少频率 { while(addhz==0); tt=tt+50; } if(!dechz) { while(dechz==0); tt=tt-10; } if(tt>=50000) tt=50000; if(tt<=0) tt=10; th=65536-tt; th0=th/256; tl0=th%256; } }
收藏0 举报
dirtwillfly 发表于 2013-5-11 19:50 程序哪?
16777216 发表于 2013-5-11 20:07 不是在帖子里贴出来了么
dirtwillfly 发表于 2013-5-11 22:32 看到了。用手机浏览时看不到程序
HaydnSyx 发表于 2013-5-12 00:09 用51这类做PWM的用两个定时器比较简单,通过一个定时器对另一个定时器的TR0/1控制,占空比在两个定时器里分 ...
16777216 发表于 2013-5-12 07:29 为什么我原来写的有问题呢
HaydnSyx 发表于 2013-5-13 15:08 首先养成良好的编写 按键判断程序 ,你这样精简的写,会使你的tt值瞬间增大许多或减小许多。而且你对tt设 ...
ayb_ice 发表于 2013-5-13 16:26 NB的人就是不一样 65536-2
16777216 发表于 2013-5-13 18:32 嗯 确实是这个问题 我昨天改了 已经ok了
四叶草2014 发表于 2013-6-26 15:21 能把程序给我发一份么,1074553478@qq.com,谢谢了
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
人才类勋章
时间类勋章
发帖类勋章
等级类勋章
61
399
1
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号