[求助] 外部中断计数

jiangjieqazwsx   2011-12-25 22:08 楼主
我用单片机进行外部中断计数,给他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)

利用外部中断设计一个数字抽奖机应该就不错了
QQ:1564006173
点赞  2011-12-26 08:59
那谁知道啊,没有程序也没有电路图的。
有可能是信号传输过程中有干扰信号。
点赞  2011-12-26 09:00

代码太多,不知道用贴哪段代码了

//----------------------------------------------------------------------
//函数名称:      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++;
}
点赞  2011-12-26 09:44
飘过……
点赞  2011-12-26 09:48
问题找到了,今天跟老师查了一天的原因,从端口的配置,到定时器的配置,再到仪器,最后发现是自己的信号发生器有问题,是学校给的信号发生器的问题,你们可能无法想象我们现在用的仪器是多么的古老,哎,学样穷呀,真是纠结了我这么多天,还以为是自己把端口烧了
点赞  2011-12-29 15:31
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复