找回密码
 立即注册
楼主: 大哲老师

STC8H的主频问题

[复制链接]
  • 打卡等级:常住居民I
  • 打卡总天数:61
  • 最近打卡:2025-02-18 18:39:08

13

主题

91

回帖

279

积分

中级会员

积分
279
发表于 2024-5-30 19:10:34 来自手机 | 显示全部楼层
晓飛飛 发表于 2024-5-30 16:44
实测35MHz和40MHz IRC工作频率下都很正常,没有上述问题,下面是代码和测试视频:

[apoyl_aliyunvideo]144 ...

晚点我试试你的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:61
  • 最近打卡:2025-02-18 18:39:08

13

主题

91

回帖

279

积分

中级会员

积分
279
发表于 2024-5-30 19:16:14 来自手机 | 显示全部楼层
晓飛飛 发表于 2024-5-30 16:44
实测35MHz和40MHz IRC工作频率下都很正常,没有上述问题,下面是代码和测试视频:

[apoyl_aliyunvideo]144 ...

话说你这是几mhz的代码呀😳

点评

40MHz的  发表于 2024-5-30 19:59
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:417
  • 最近打卡:2025-04-30 21:39:09
已绑定手机

34

主题

2096

回帖

2206

积分

荣誉版主

积分
2206
发表于 2024-5-30 20:09:43 | 显示全部楼层
本帖最后由 晓飛飛 于 2024-5-30 20:15 编辑
大哲*** 发表于 2024-5-30 19:10
你可以试试我的代码不,把输出脚改了就行,反正我单独跑就24mhz是稳的😔,35,40都不对 ...

用你的代码跑35MHz测试了,完全没有任何问题,另外特意用你的代码原封不动的测试了一下P2.0,也没任何问题

  1. #include <STC8H.H>
  2. void Timer0_Isr(void) interrupt 1
  3. {
  4.         static unsigned int T0Count1;
  5.         T0Count1++;
  6.         if(T0Count1 >= 1000)
  7.         {
  8.                 P45 = !P45;
  9.                 T0Count1 = 0;
  10.         }      
  11. }
  12. //定时器0(16位自动重载)
  13. void Timer0_Init(void)                //1毫秒@35MHz
  14. {
  15.         AUXR |= 0x80;                        //定时器时钟1T模式
  16.         TMOD &= 0xF0;                        //设置定时器模式
  17.         TL0 = 0x48;                                //设置定时初始值
  18.         TH0 = 0x77;                                //设置定时初始值
  19.         TF0 = 0;                                //清除TF0标志
  20.         TR0 = 1;                                //定时器0开始计时
  21.         ET0 = 1;                                //使能定时器0中断
  22. }
  23. void main(void)
  24. {
  25.         //测试引脚 P20:系统版载LED01  P21:系统板载按键SW01
  26.                 P4M0 = 0x00; P4M1 = 0x00;
  27.         P_SW2 |= 0x80;
  28.         Timer0_Init();
  29.         EA=1;
  30.         while(1)
  31.         {
  32.         }
  33. }
复制代码




睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:61
  • 最近打卡:2025-02-18 18:39:08

13

主题

91

回帖

279

积分

中级会员

积分
279
发表于 2024-5-30 21:03:40 | 显示全部楼层
晓*** 发表于 2024-5-30 20:09
用你的代码跑35MHz测试了,完全没有任何问题,另外特意用你的代码原封不动的测试了一下P2.0,也没任何问题 ...

好了好了谢谢你,真的玄学了

点评

应该是个压根不会去怀疑的低级问题,有时候经验反而带来烦恼  发表于 2024-5-30 21:07
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:61
  • 最近打卡:2025-02-18 18:39:08

13

主题

91

回帖

279

积分

中级会员

积分
279
发表于 2024-5-31 12:22:00 | 显示全部楼层
本帖最后由 大哲*** 于 2024-5-31 12:23 编辑
大哲老师 发表于 2024-5-30 21:03
好了好了谢谢你,真的玄学了

我还是个新手,第一次玩这个单片机,之前就玩过C51,这个问题我都不知道他咋好的,上午还不行,单独用这个代码跑的,下午睡个觉回来再试就好了,而且上午的时候出现这个情况的时候我的PWM波的频率也不对了,跟计算值不符合差了一大截,几乎一半,然后下午回来再试,两边都好了,奇奇怪怪
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:520
  • 最近打卡:2025-05-01 08:06:21

109

主题

1897

回帖

5204

积分

论坛元老

积分
5204
发表于 2024-5-31 13:33:22 | 显示全部楼层
不大可能误差会这么大的。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:520
  • 最近打卡:2025-05-01 08:06:21

109

主题

1897

回帖

5204

积分

论坛元老

积分
5204
发表于 2024-5-31 13:35:11 | 显示全部楼层
一般情况下,我是把
    if(T0Count1 >= 1000)
        {
                P20 = !P20;
                T0Count1 = 0;
        }  

放到大循环中的。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:61
  • 最近打卡:2025-02-18 18:39:08

13

主题

91

回帖

279

积分

中级会员

积分
279
发表于 2024-5-31 14:42:37 | 显示全部楼层
xxkj*** 发表于 2024-5-31 13:35
一般情况下,我是把
    if(T0Count1 >= 1000)
        {

已经莫名奇妙的好了哈哈哈
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:520
  • 最近打卡:2025-05-01 08:06:21

109

主题

1897

回帖

5204

积分

论坛元老

积分
5204
发表于 2024-5-31 15:00:17 | 显示全部楼层
有时是因为烧录失败而没有去注意它,以为是别的原因。
回复 支持 1 反对 0

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 02:34 , Processed in 0.603191 second(s), 98 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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