找回密码
 立即注册
查看: 1158|回复: 13

stc8h的定时器2延时1s的问题 | 已解决

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

13

主题

91

回帖

279

积分

中级会员

积分
279
发表于 2024-5-24 19:40:49 | 显示全部楼层 |阅读模式
为啥做不到延时1s呀,我的led灯一直闪很快,代码如下:




#include <STC8H.H>

void Timer2_Isr(void) interrupt 12
{
        P20 = !P20;
}

void Timer2_Init(void)                //1秒@24.000MHz
{
        TM2PS = 0x1E;                        //设置定时器时钟预分频 ( 注意:并非所有系列都有此寄存器,详情请查看数据手册 )
        AUXR &= 0xFB;                        //定时器时钟12T模式
        T2L = 0xFC;                                //设置定时初始值
        T2H = 0x03;                                //设置定时初始值
        AUXR |= 0x10;                        //定时器2开始计时
        IE2 |= 0x04;                        //使能定时器2中断
}

void main(void)
{
        P2M0 &= ~0x01;
        P2M1 &= ~0x01;
        Timer2_Init();
        EA=1;
        while(1);
}        


截图202405241939437015.jpg
回复

使用道具 举报 送花

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

34

主题

2096

回帖

2206

积分

荣誉版主

积分
2206
发表于 2024-5-24 23:04:07 | 显示全部楼层
并非所有系列都有此寄存器,详情请查看数据手册
使用STC8H8K64U测试没有问题,代码如下:
  1. #include "stc8h.h"
  2. #include "intrins.h"
  3. void Timer2_Isr(void) interrupt 12
  4. {
  5.         P34 = !P34;
  6.         P35 = !P34;
  7. }
  8. void Timer2_Init(void)                //500毫秒@11.0592MHz       11.0592MHz 最长定时周期1517ms约1.5s
  9. {
  10.         TM2PS = 0x54;                        //设置定时器时钟预分频 ( 注意:并非所有系列都有此寄存器,详情请查看数据手册 )
  11.         AUXR |= 0x04;                        //定时器时钟1T模式
  12.         T2L = 0xE2;                                //设置定时初始值
  13.         T2H = 0x01;                                //设置定时初始值
  14.         AUXR |= 0x10;                        //定时器2开始计时
  15.         IE2 |= 0x04;                        //使能定时器2中断
  16. }
  17. void main()
  18. {
  19.     EAXSFR();   //
  20.         P0M0 = 0x00;
  21.     P0M1 = 0x00;
  22.     P1M0 = 0x00;
  23.     P1M1 = 0x00;
  24.     P2M0 = 0x00;
  25.     P2M1 = 0x00;
  26.     P3M0 = 0x00;
  27.     P3M1 = 0x00;
  28.     P4M0 = 0x00;
  29.     P4M1 = 0x00;
  30.     P5M0 = 0x00;
  31.     P5M1 = 0x00;                                           
  32.         Timer2_Init();                        //初始化Timer2并启动中断
  33.     EA = 1;
  34.     while (1);
  35. }
复制代码



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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:294
  • 最近打卡:2025-03-06 09:25:41

8

主题

318

回帖

1835

积分

金牌会员

积分
1835
发表于 2024-5-24 23:49:57 | 显示全部楼层

2024-05-24_234600.png

2024-05-24_234623.png

回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2024-09-12 20:44:49

2

主题

64

回帖

358

积分

中级会员

积分
358
发表于 2024-5-25 05:54:31 | 显示全部楼层
  1. #include "reg51.h"
  2. #include "intrins.h"
  3. sfr     T2L     =   0xd7;
  4. sfr     T2H     =   0xd6;
  5. sfr     AUXR    =   0x8e;
  6. sfr     IE2     =   0xaf;
  7. #define ET2         0x04
  8. sfr     AUXINTIF =  0xef;
  9. #define T2IF        0x01
  10. sfr     P0M1    =   0x93;
  11. sfr     P0M0    =   0x94;
  12. sfr     P1M1    =   0x91;
  13. sfr     P1M0    =   0x92;
  14. sfr     P2M1    =   0x95;
  15. sfr     P2M0    =   0x96;
  16. sfr     P3M1    =   0xb1;
  17. sfr     P3M0    =   0xb2;
  18. sfr     P4M1    =   0xb3;
  19. sfr     P4M0    =   0xb4;
  20. sfr     P5M1    =   0xc9;
  21. sfr     P5M0    =   0xca;
  22. sbit    P10     =   P1^0;
  23. void TM2_Isr() interrupt 12
  24. {
  25.     P10 = !P10;                                 //测试端口
  26. }
  27. void main()
  28. {
  29.     P0M0 = 0x00;
  30.     P0M1 = 0x00;
  31.     P1M0 = 0x00;
  32.     P1M1 = 0x00;
  33.     P2M0 = 0x00;
  34.     P2M1 = 0x00;
  35.     P3M0 = 0x00;
  36.     P3M1 = 0x00;
  37.     P4M0 = 0x00;
  38.     P4M1 = 0x00;
  39.     P5M0 = 0x00;
  40.     P5M1 = 0x00;
  41.     T2L = 0x66;                                 //65536-11.0592M/12/1000
  42.     T2H = 0xfc;
  43.     AUXR = 0x10;                                //启动定时器
  44.     IE2 = ET2;                                  //使能定时器中断
  45.     EA = 1;
  46.     while (1);
  47. }
复制代码
测测这个   官方程序
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:518
  • 最近打卡:2025-05-01 05:52:49
已绑定手机

46

主题

1694

回帖

2540

积分

金牌会员

积分
2540
发表于 2024-5-25 06:43:02 | 显示全部楼层
可能是所选芯片没有那个寄存器吧
回复 支持 反对

使用道具 举报 送花

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

13

主题

91

回帖

279

积分

中级会员

积分
279
发表于 2024-5-25 11:25:07 来自手机 | 显示全部楼层
Lkck8210 发表于 2024-5-24 23:49

昨天找到原因了,就是没有使用psw2🤣
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:394
  • 最近打卡:2025-05-01 03:26:07

16

主题

702

回帖

2470

积分

金牌会员

积分
2470
发表于 2024-5-25 13:46:02 | 显示全部楼层
找到原因就好,官方有例程的,参考一下例程,再对比自己写的代码进行排查
回复 支持 反对

使用道具 举报 送花

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

13

主题

91

回帖

279

积分

中级会员

积分
279
发表于 2024-5-25 14:00:03 | 显示全部楼层
小*** 发表于 2024-5-25 13:46
找到原因就好,官方有例程的,参考一下例程,再对比自己写的代码进行排查 ...

还不太能理解为啥我用定时器也要使能访问xfr
截图202405251359468027.jpg
回复 支持 反对

使用道具 举报 送花

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

13

主题

91

回帖

279

积分

中级会员

积分
279
发表于 2024-5-25 14:01:01 | 显示全部楼层

你这个图 上的内容是在手册哪个部分呀,我用的stc8h8k64u,手册里一直没找这个地方
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:394
  • 最近打卡:2025-05-01 03:26:07

16

主题

702

回帖

2470

积分

金牌会员

积分
2470
发表于 2024-5-25 14:26:02 | 显示全部楼层
因为使用了扩展的XFR寄存器
截图202405251425456508.jpg
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 02:31 , Processed in 0.146696 second(s), 114 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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