完善资料让更多小伙伴认识你,还能领取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这个变量做比较吗?您可以仔细阅读一下前面的代码,看一下缺少的是哪一个部分,将对应的部分代码贴出来
|
|
|
|
只有小组成员才能发言,加入小组>>
386 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2824 浏览 2 评论
2320 浏览 1 评论
707浏览 2评论
1146浏览 2评论
783浏览 2评论
746浏览 2评论
请问MounRiver Studio软件双语切换在菜单哪里?
1937浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-19 23:35 , Processed in 1.156902 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号