找回密码
 立即注册
查看: 11|回复: 2

求教AI8051U定时器T1

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-11-13 21:06:14
已绑定手机

4

主题

12

回帖

66

积分

注册会员

积分
66
发表于 昨天 21:06 | 显示全部楼层 |阅读模式
按照定时器生成代码,  频率40MHz      TL1 = 0xD8;        TH1 = 0xFF;        产生的时钟不是1us,而是1.72~1.73us左右,通过示波器发现,当TL1=0xE0 TH1=0xFF时,产生1.5us的定时,而且TL1 = 0xCC  是2.02~2.03us,但TL1=0xCD时,直接1.96us,按说一个计数应该是25ns,咋差这么多?而且而且当定时器设定TL1 > 0xEC之后,基本就是1.2us不会减少了,且会出现USB连接识别不对的情况,我是把定时器T0,T1写成的timer.c文件调用的,是不是这个原因,哪位大神帮忙看一下
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-11-13 21:06:14
已绑定手机

4

主题

12

回帖

66

积分

注册会员

积分
66
发表于 昨天 21:13 | 显示全部楼层
通过把T1函数挪到main里面,发现同样是TL1 = 0XE0   中断是1.05us,0xD8  是1.27us
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-11-13 21:06:14
已绑定手机

4

主题

12

回帖

66

积分

注册会员

积分
66
发表于 昨天 21:17 | 显示全部楼层
0xE2 还是1.05us,0xE3 1.05,0xE4 就变成了976ns....   我就是想单纯的产生一个标准的1us中断啊



44.2368MHz下的0xDE,1.02us,是我找到的误差最小的


最后测试了    TH1 = 0xFF;  // 40MHz下1us初值
                    TL1 = 0xE4;
                    _nop_();               
                    P26 = !P26;                       基本上能实现1us,但偶尔会变成正脉冲1.01us 负脉冲996ns  应该是T0的1ms定时器影响的



回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-11-14 01:17 , Processed in 0.105905 second(s), 49 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表