外部中断计数

2019-03-24 19:28发布

我用单片机进行外部中断计数,给他1HZ的脉冲,但是显示的计数值有时候间隔1,的有时候间隔5-10,(这个12864刷屏时间应该是1-2S之间,因为时间芯片pcf8563的时间能够在屏上连续读出)这是程序原因还是电路板的原因?我有点怀疑是我的程序问题,因为我的显示函数是放在主函数里面在的whle(1)里的,里面可能有些程序执行时间,但是我又有点怀疑不是这个原因,理由有以后两个: 1、我用的单片机是C8051F120,它接数字外设时,端口的耐压值为5V,但是我在用外部中断计数的时候,用的是幅度为10V的方波,不知道是不是因为这个原因导致外部中断端口出问题了,但是当时我用这个10V的方波测了一天的数据,当时候能够加1递增,没有出过问题呀;2、使用以前显示能够外部计数加1的那个程序做测试,出现相同的不能加1的现象,如果说我的程序的原因,那为什么这个程序以前可以加1现在又不可以加1呢?

[ 本帖最后由 jiangjieqazwsx 于 2011-12-26 20:20 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
jiangjieqazwsx
2019-03-25 03:56
//----------------------------------------------------------------------
//函数名称:      INT0_Init(void)
//函数功能:      配置外部中断0和外部中断1
//入口参数:      无
//出口参数:      无
//全局变量引用:  无                                                                                                 
//调用模块:      无
//----------------------------------------------------------------------

void INT0_Init(void)        //外部中断也可以用来计数
{
        char SFRPAGE_SAVE = SFRPAGE;

        SFRPAGE = TIMER01_PAGE;
        TCON|=0x05;    // INTO为边沿触发,即下跳沿触发
//        EX0=1;
//        EX1=1;
        SFRPAGE = SFRPAGE_SAVE;                 
}

//----------------------------------------------------------------------
//函数名称:      void INT0_ISR() interrupt 0
//函数功能:      外部中断0中断函数
//入口参数:      无
//出口参数:      无
//全局变量引用:  无                                                                                                 
//调用模块:      无
//----------------------------------------------------------------------


void INT0_ISR() interrupt 0  //外部中断控制安全
{
                extra_n0++;
}

void INT1_ISR() interrupt 2  //外部中断控制安全
{
                extra_n1++;
}

一周热门 更多>