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

STC8H8K64U-关于timer0定时器的问题-比较简单初级的问题 | 已解决

[复制链接]
  • TA的每日心情
    开心
    2024-4-10 16:57
  • 签到天数: 46 天

    [LV.5]常住居民I

    2

    主题

    10

    回帖

    284

    积分

    中级会员

    积分
    284
    发表于 2023-10-29 21:11:53 | 显示全部楼层 |阅读模式
    /**************************主函数*****************************************************/

    void main(void)
    {
            
    config_main();                                                //初始化函数                        
            while(1)
            {
                    if(TM0_P==1)
                    {
                            TM0_P=0;
                            P2 = 0X00;
                    }
            }
    }


    /**************************初始化函数*****************************************************/

    void config_main(void)                        //初始化函数
    {
            timer0_Init();
            P_SW2 |= 0x80;                                          //使能访问XFR
            led_Init();
            
    }
    /**************************LED初始化函数*****************************************************/

    void led_Init(void)                        //LED初始化
    {
            P2M1=0X00; P2M0=0X00;
    }


    -------------------------------------------------------------------------------------------------

    unsigned char TM0_COUNT=0;
    unsigned int TM0_P=0;



    void timer0_Init(void)                                        //timer0初始化
    {
                            AUXR |=0X80;                        //定时器时钟1T模式
                            TMOD |=0x00;                        //设置定时器模式
                            TL0 = 0xCD;                                //设置定时初始值
                            TH0 = 0xD4;                                //设置定时初始值
                            TF0 = 0;                                //清除TF0标志
                            TR0 = 1;                                //定时器0开始计时
                            ET0        = 1;
                            EA=1;

    }

    -------------------------------------------------------------------------------------------------


    void TM0_Isr() interrupt 1
    {
      
            TM0_COUNT++;
                    if(TM0_COUNT  == 500)
                    {
                            TM0_COUNT=0;
                            TM0_P=1;
                    }
    }


    -----------------------------------------------------------------------------------------------------------------------------
    说明:
    1.1T模式,16位自动重装

    2.在定时器内计数,每500毫秒,点亮LED灯

    怎么调都调不出来,想问问大神,我错在什么地方了。
    给思路也可以。谢谢


    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-10 16:57
  • 签到天数: 46 天

    [LV.5]常住居民I

    2

    主题

    10

    回帖

    284

    积分

    中级会员

    积分
    284
     楼主| 发表于 2023-10-29 21:45:30 | 显示全部楼层
    在主函数  P2=0x00;这里错了。

    复制错了,取反就好了
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2023-12-27 20:55
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    2

    主题

    12

    回帖

    56

    积分

    注册会员

    积分
    56
    发表于 2023-11-12 21:43:44 | 显示全部楼层
    定时器中断里,500ms到了LED灯取反就可以了
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-17 20:16 , Processed in 0.056019 second(s), 37 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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