完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我用的是定时器写的,没用中断。用两个按键控制PWM的占空比变大变小。。。PWM连接P2^0输出的。但是用示波器没有出现PWM波形。望有大神解惑。初学多问,无怪!
#include #define uint unsigned int #define uchar unsigned char uchar count ,z; ***it key_1 = P3^7; ***it key_2 = P3^6; ***it PWM = P2^0; void key_control(); //这是两个按键控制变量,变化,从而控制占空比曾加减少的函数 void init (); //这是个定时器装初值函数 void create_PWM(uchar); //这是用IF语句写的,生成0,1信号的函数 void delay(uint); //这是简单的延时函数 void main () { init (); while(1); { key_control(); create_PWM(count); } } void delay(uint z) { uint x,y; for(x = z;x>0;x--) for(y = 110;y>0;y--); } void init() { TMOD = 0x10; TH1 = (65536-4608)/256;//50sm TL1 = (65536-4608)%256; TR1 = 1; } void create_PWM(uchar count) { static i; if(TF1 == 1) { TF1 = 0; TH1 = (65536-4608)/256;//50sm TL1 = (65536-4608)%256; i++; if(i == 100) i=0; if(i <= count) PWM = 1; else PWM = 0; } } void key_control() { if(key_1 ==0) { delay(10); if(key_1 == 0) { count+= 5; if(count >= 100)count = 0; } } if(key_2 ==0) { delay(10); if(key_2 ==0) { count-= 5; if(count <= 0)count =100; } } } |
|
相关推荐
3个回答
|
|
先不添加按键,给个固定值看看波是否正常,先确定是问题大概是出在哪里
|
|
|
|
没开总中断,EA=1漏写了吧
|
|
|
|
总中断没开,而且我没有记错的话,51单片机定时器设置时间到了应该是进该定时器中断的吧,单纯的依靠一个TF中断标志,不知道行不行,我没有试过
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
852 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
592 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
705 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
926 浏览 2 评论
657 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12005 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 23:38 , Processed in 0.509107 second(s), Total 73, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号