微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 电机测速感觉无法进入中断计数

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

时间:10-02 整理:3721RD 点击:
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;                                        //重新开启定时器
        }
}

你要计数的话,我建议你 IT0 = 1;

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;                                        //重新开启定时器
        }
}

现在弄得差不多了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top