利用外部中断0测频率有问题

2019-07-15 12:10发布

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar f,pulse,t;
bit flat;
uint dis[3];
uchar con[]={0xfe,0xfd,0xfb,0xf7};
unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
sbit dula=P2^0;
sbit wela=P2^1;
void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=50;y>0;y--);
}
void ini()
{
        EA=1;
        EX0=1;
        ET0=1;
        IT0=1;
        TMOD=0x01;
        TH0=0x3c;
        TL0=0xb0;
        TR0=1;
}
void calcu()
{       
        dis[0]=f/1000;
        dis[1]=f%1000/100;
        dis[2]=f%100/10;       
        dis[3]=f%10;
}
void display()
{
        uchar i;
        for (i=0;i<4;i++)
                {
                        P0=con[i];
                        wela=1;
                        wela=0;

                        P0=table[dis[i]];
                        dula=1;
                        dula=0;
                        delay(10);
                }
}
void main()
{
        ini();
        while (1)
                {
                        calcu();
                        display();
               
                }
}
void int0() interrupt 0
{
        pulse++;
        if (flat==1)
        {
                flat=0;
                f=pulse;
                pulse=0;
        }       
}
void tim0() interrupt 1
{
        TR0=0;
        TH0=0x3c;
        TL0=0xb0;
        t++;
        if (t==20)
                {
                        flat=1;
                }
        TR0=1;
}



最后仿真不出来结果,显示为0是为什么???

proteus仿真 proteus仿真
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
hobbye501
1楼-- · 2019-07-15 17:18
中断是不是没触发啊 你看看
ST_Lover
2楼-- · 2019-07-15 22:24
可以讨论下
1002925094               
771039938
3楼-- · 2019-07-16 00:01
hobbye501 发表于 2017-1-6 14:38
中断是不是没触发啊 你看看

我不知道啊,我用了脉冲发给P32口啊,就是部行,要么全是0。都快心塞死了。
hobbye501
4楼-- · 2019-07-16 01:45
771039938 发表于 2017-1-6 15:26
我不知道啊,我用了脉冲发给P32口啊,就是部行,要么全是0。都快心塞死了。

你试试做一个开断和电源 开关开关给高低电平 看看外部中断进去了不
771039938
5楼-- · 2019-07-16 02:45
 精彩回答 2  元偷偷看……
hobbye501
6楼-- · 2019-07-16 08:22
771039938 发表于 2017-1-6 15:31
我试试吧,再不行就要爆炸了!!!

其实很简单的  一步一步调试  每个步骤都分别调试  模块化处理 再去合并在一起 比如 可以先分别单独调试  数码管显示    外部中断  定时中断  最后再合在一起 通过观察电平变化就知道问题在哪里了

一周热门 更多>