完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
我想用CH552定时器0,配置成8位自动重装载模式,100us产生一次中断,然后1s切换LED状态,但是设置完LED是4s才切换状态,不知道是哪里配置错了呢?
代码: sbit LED = P3^4; void main(void) { //设置时钟 SAFE_MOD = 0x55; //进入安全模式 SAFE_MOD = 0xAA; CLOCK_CFG &= ~bOSC_EN_XT; //关闭外部晶振 CLOCK_CFG |= bOSC_EN_INT; //使能内部晶振 CLOCK_CFG = CLOCK_CFG & (~MASK_SYS_CK_SEL) | 0x06; //24M SAFE_MOD = 0x00;//退出安全模式 //LED配置 //LED -- P3.4 -- 推挽输出 P3 &= ~(1 << 0x04); P3_DIR_PU |= (1 << 0x04); P3 |= (1 << 0x04);//关闭LED //定时器0初始化 T2MOD &= ~bT1_CLK; //系统时钟12分频 TMOD = TMOD & 0xF0 | bT0_M1; //模式2 TL0 = 0x38; //赋初值 100us TH0 = 0x38; ET0 = 1; TR0 = 1; EA = 1; while(1); } //定时器中断 void time0Interrupt(void) interrupt INT_NO_TMR0 using 1 { static uint16_t cnt = 0; cnt++; if(cnt >= 10000) { cnt = 0; LED ^= 1; } } 之后我用串口线接到LED引脚,引脚每次从高电平到低电平跳变时,串口会收到0x00 前后收到0x00的时间基本都是8s,也就是LED闪烁的时间间隔为4s,TH0和TL0的初值手算和工具算出来都是这个值。 |
|
相关推荐
4个回答
|
|
|
刚用这款单片机,定时器是按照手册和CH554例程来设置的
|
|
|
|
|
|
主频24m,定时器时钟12分频即2m,那么一个指令执行时间即1/2m,也就是0.5us。如果要设置100us的定时时间需要设置初值为200。
|
|
|
|
|
|
定时器不是往上加到全为1变成0就是溢出吗,所以计数200次,200*0.5 = 100,所以初值应该是256 - 200=56吧
|
|
|
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
344 浏览 0 评论
CH582M HOST发送数到设备后,提交IN一直是2A是什么问题?
860 浏览 0 评论
1459 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
3417 浏览 2 评论
2822 浏览 1 评论
安卓手机支持外接otg扩展坞 然后使用ch340+ch9329控制电脑吗
1808浏览 1评论
1461浏览 1评论
344浏览 0评论
CH582M HOST发送数到设备后,提交IN一直是2A是什么问题?
861浏览 0评论
467浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 00:49 , Processed in 0.747844 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
583