微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 程序问题,求助。

程序问题,求助。

时间:10-02 整理:3721RD 点击:
我想在单片机外部中断0处输入一个频率信号,然后用数码管显示出频率来,但是数码管为什么不听话呢?
#include<reg52.h>
sbit WE=P2^1;
sbit DUAN=P2^0;
sbit DS1302=P2^7;
#define uchar unsigned char
#define uint unsigned int
uint t,num1,num2,num3,num4,num5,num6,num7,num8;
uint s,t;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(uint z)
{
        uint y,x;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
void chushihua()
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        DS1302=0;               
}
void display()
{
        DUAN=1;
        P0=table[num8];
        DUAN=0;
        WE=1;
        P0=0xfe;
        WE=0;
        P0=0xff;
        delay(1);
        DUAN=1;
        P0=table[num7];
        DUAN=0;
        WE=1;
        P0=0xfd;
        WE=0;   
        P0=0xff;
        delay(1);
        DUAN=1;
        P0=table[num6];
        DUAN=0;
        WE=1;
        P0=0xfb;
        WE=0 ;
        P0=0xff;
        delay(1);
        DUAN=1;
        P0=table[num5];
        DUAN=0;
        WE=1;
        P0=0xf7;
        WE=0;
        P0=0xff;
        delay(1);
        DUAN=1;
        P0=table[num4];
        DUAN=0;
        WE=1;
        P0=0xef;
        WE=0;
        P0=0xff;
        delay(1);
        DUAN=1;
        P0=table[num3];
        DUAN=0;
        WE=1;
        P0=0xdf;
        WE=0;
        P0=0xff;
        delay(1);
        DUAN=1;
        P0=table[num2];
        DUAN=0;
        WE=1;
        P0=0xbf;
        WE=0;
        P0=0xff;
        delay(1);
        DUAN=1;
        P0=table[num1];
        DUAN=0;
        WE=1;
        P0=0x7f;
        WE=0 ;
        P0=0xff;
        delay(1);
}
void main()
{       
        chushihua();
        TMOD=0x01;
        EA=1;
        EX0=1;//开外部中断0
        ET0=1;//开定时器中断0
        IT0=1;
        while(1)
        {       
                display();               
                num1=s;
                num5=num1/10000;
                num1%=10000;
                num4=num1/1000;
                num1%=1000;
                num3=num1/100;
                num1%=100;
                num2=num1/10;
                num1%=10;
                if(t==20)
                {
                        num1=s;
                        t=0;
                        s=0;
                }
               
        }
}

void time0() interrupt 0
{
        s++;
        TR0=1;       
}
void time1() interrupt 1
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        t++;
}

这个问题等于没问,什么叫不听话?

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

网站地图

Top