完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include "CH552.H"
#include "Debug.H" #include "timer.H" #include "stdio.h" #include "GPIO.H" #pragma NOAREGS //UINT8 FLAG; //UINT16 Cap[8] = {0}; //typedef unsigned int uint16_t; sbit LED1 = P3^4; sbit led2 = P1^3; sbit key = P1^4; unsigned int condition=0;//这里高电平占一份 unsigned int cnt; //整个周期 void button(); void main( ) { CfgFsys( ); //CH554时钟选择配置 mDelaymS(5); //修改主频,建议稍加延时等待主频稳定 Port3Cfg(1,4); Port1Cfg(1,3); Port1Cfg(3,4); mTimer0Clk12DivFsys(); //T0定时器时钟设置 mTimer_x_ModInit(0,2); //T0 定时器模式设置 mTimer_x_SetData(0,0x5555); //T0定时器赋值 mTimer0RunCTL(1); //T0定时器启动 ET0 = 1; //T0定时器中断开启 EA = 1; while(1) { if(cnt>=100) { LED1=0; } if(cnt<condition) { LED1=1; } else { LED1=0; } button(); } } void Time0Interrupt(void) interrupt INT_NO_TMR0 using 1 { mTimer_x_SetData(0,0x5555); //T0定时器赋值 cnt++; } void button() { if(key==0) { mDelaymS(5); if(key==0) { condition=condition+30; //调制脉宽 led2=!led2;//led灯反转 if(condition>=90)//如果脉宽等于总周期了等于0 { condition=90; } while(!key); //等待按键松手 } } } 您好,您说的脉冲大小改变指的是脉宽的变化吗? 贴出来的代码有部分丢失。 |
|
相关推荐
3个回答
|
|
|
|
|
|
|
|
|
|
这边不太清楚代码到底是怎么运行的,猜测是定时器中对cnt做加加运行,尚且不知道主循环中对cnt的判断是怎么的,是和condition这个变量做比较吗?您可以仔细阅读一下前面的代码,看一下缺少的是哪一个部分,将对应的部分代码贴出来
|
|
|
|
只有小组成员才能发言,加入小组>>
523 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2904 浏览 2 评论
2400 浏览 1 评论
870浏览 2评论
689浏览 1评论
riscv-none-embed-objcopy: \'PWM_Output.elf\': No such file这个咋解决,
418浏览 1评论
531浏览 1评论
请教一下,Mounriver 编译不成功:找不到库文件,怎么整
814浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 06:20 , Processed in 1.049625 second(s), Total 83, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号