电机测速感觉无法进入中断计数

2019-07-15 17:26发布

void time_init(void)                        //定时器初始化
{
        TMOD = 0x01;                                //设置定时器0 1 均为工作方式1
        TH0 = (65536 - 50000) / 256;//设置定时器0为50ms定时
        TL0 = (65536 - 50000) % 256;
        EA = 1;
        EX0 = 1;                        //打开外部中断0
        IT0 = 0;
        ET0 = 1;
        TR0 = 0;
}

void ser(void) interrupt 0
{
        count++;
}
void Time0(void) interrupt 1
{
        char num;
        TH0 = (65536 - 50000) / 256;//重装初值
        TL0 = (65536 - 50000) % 256;
        num++;
        if(num == 20)
        {
                num = 0;
                TR0 = 0;                                        //关闭定时器
                speed = count*60;                //测出当前的速度为多少圈每分钟
                count = 0;                                //计数清零
                TR0 = 1;                                        //重新开启定时器
        }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
武力戡乱
1楼-- · 2019-07-15 17:27
你要计数的话,我建议你 IT0 = 1;
Aidaohuakai
2楼-- · 2019-07-15 22:05

void Time_init(void)                        //定时器初始化
{
        TMOD = 0x01;                                //设置定时器0 1 均为工作方式1
        TH0 = (65536 - 50000) / 256;//设置定时器0为50ms定时
        TL0 = (65536 - 50000) % 256;
        EA = 1;
        EX0 = 1;                        //打开外部中断0
        IT0 = 0;
        ET0 = 1;
        TR0 = 1;
}

void ser(void) interrupt 0
{
        count++;
}
void Time0(void) interrupt 1
{
        char num;
        TH0 = (65536 - 50000) / 256;//重装初值
        TL0 = (65536 - 50000) % 256;
        num++;
        if(num == 20)
        {
                num = 0;
                TR0 = 0;                                        //关闭定时器
                speed = count*60;                //测出当前的速度为多少圈每分钟
                count = 0;                                //计数清零
                TR0 = 1;                                        //重新开启定时器
        }
}
15374515640
3楼-- · 2019-07-15 22:51
Aidaohuakai 发表于 2015-4-28 09:23
void Time_init(void)                        //定时器初始化
{
        TMOD = 0x01;                                //设置定时器0 1 均为工作方式1

现在弄得差不多了

一周热门 更多>