找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1447|回复: 6
打印 上一主题 下一主题
收起左侧

遇到ch552定时器2的使用问题

[复制链接]
跳转到指定楼层
楼主
ID:858009 发表于 2022-1-20 17:49 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 qwettyuio 于 2022-1-21 10:29 编辑

想用定时器2定时15秒。控制LED灯,只有按键按着的时候LED亮,松开不亮,定时器2没有控制
功能是,按键按下,LED亮,定时器2启动计时15s,15s后LED不亮,定时器2停止
void Time2_Init()
{
        back = 0;
        mTimer2Clk12DivFsys();
        mTimer_x_ModInit(2,1);
        mTimer_x_SetData(2,0xC350);
        mTimer2RunCTL(0);
        ET2 = 1;
        EA = 1;
}
void        mTimer2Interrupt( void ) interrupt INT_NO_TMR2 using 3                //timer2中断服务程序,使用寄存器组3
{
        if(TF2)
        {
                TF2=0;
            mTimer_x_SetData(2,0xC350);
            back++;
            if(back==300)
                {
                        back=0;
                    if(key1==1)
                        {
                                led0=1;
                                mTimer2RunCTL(0);
                        }
                }
        }
}
void main( )
{
        CfgFsys( );
        Time2_Init();
        Init_1621();
        HT1621_all_off();
        Port1Cfg(1,3);
        Port1Cfg(1,1);
        Port3Cfg(1,0);
        Port3Cfg(1,3);
        Port3Cfg(1,4);
        Port3Cfg(1,5);
        while(1)
        {
                Write_1621(10,0X80,4);
            Write_1621(30,0X10,4);
                if(key1==0)
                {
                        led0=0;
                    mTimer2RunCTL(1);
                }
        }
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

7#
ID:858009 发表于 2022-1-26 15:03 | 只看该作者
188610329 发表于 2022-1-21 20:22
mTimer2RunCTL(0);    这个,定时器2没开吧?
其实,不要搞那么复杂,

问题解决了
回复

使用道具 举报

6#
ID:624769 发表于 2022-1-21 20:22 | 只看该作者
       mTimer2RunCTL(0);    这个,定时器2没开吧?
其实,不要搞那么复杂,

直接写个 TR2 = 1; 不是大家看得都轻松么? CH552的库,里面很多东西很没意义的。
而且,定时器2的 RCAP 重载寄存器也要设的吧?

最后,back++ 这个,你在哪里声明的? 他真的能到300么?
回复

使用道具 举报

5#
ID:301191 发表于 2022-1-21 15:26 | 只看该作者
顶一下
回复

使用道具 举报

地板
ID:858009 发表于 2022-1-21 10:31 | 只看该作者
188610329 发表于 2022-1-20 19:28
代码和问题不吻合. 中断向量来看, 你只写了 定时器0的中断

修改了中断也不可以,想用定时器2控制三极管的截止,按键按下就导通三级管,定时器2计时15s,然后输出高电平,三级管截止
回复

使用道具 举报

板凳
ID:858009 发表于 2022-1-21 09:35 | 只看该作者
188610329 发表于 2022-1-20 19:28
代码和问题不吻合. 中断向量来看, 你只写了 定时器0的中断

使用这个中断也不可以
void        mTimer2Interrupt( void ) interrupt INT_NO_TMR2 using 3       //timer2中断服务程序,使用寄存器组3
{
        if(TF2)
        {
                TF2=0;
            mTimer_x_SetData(2,0xC350);
            back++;
            if(back==300)
                {
                        back=0;
                    if(key1==1)
                        {
                                led0=1;
                                mTimer2RunCTL(0);
                        }
                }
        }
}
回复

使用道具 举报

沙发
ID:624769 发表于 2022-1-20 19:28 | 只看该作者
代码和问题不吻合. 中断向量来看, 你只写了 定时器0的中断
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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