完善资料让更多小伙伴认识你,还能领取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); //等待按键松手 } } } |
|
相关推荐
1个回答
|
|
|
您好,您说的脉宽是LED1输出的波形吗?这个引脚的波形是如何测试的?
LED1输出高电平是cnt 按键按3次之后高电平时间固定,按照您的代码逻辑大致是这样的。 您是如何判断引脚脉宽的?以及是如何实现修改这个脉宽的? cnt的高电平占比在周期中最大应该就是90/65536,脉宽从占比上来说很低 不知我理解的有没有问题 |
|
|
|
|
只有小组成员才能发言,加入小组>>
379 浏览 0 评论
CH582M HOST发送数到设备后,提交IN一直是2A是什么问题?
885 浏览 0 评论
1483 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
3433 浏览 2 评论
2842 浏览 1 评论
安卓手机支持外接otg扩展坞 然后使用ch340+ch9329控制电脑吗
1833浏览 1评论
1483浏览 1评论
380浏览 0评论
CH582M HOST发送数到设备后,提交IN一直是2A是什么问题?
885浏览 0评论
485浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-12 23:26 , Processed in 0.660505 second(s), Total 73, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2710