微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求大神支招啊,我这个程序进不去中断时怎么回事啊

求大神支招啊,我这个程序进不去中断时怎么回事啊

时间:10-02 整理:3721RD 点击:
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[]=
{
        ~0x3F,~0x06,~0x5B,~0x4F,
        ~0x66,~0x6D,~0x7D,~0x07,
        ~0x7F,~0x6F
};
uchar DUAN_table[3];
uchar t;
uint num;
void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
void display()
{
        if(t==20)           
        {
                t=0;
                num=num++;
        }
        DUAN_table[0]=~table[num/100];
        DUAN_table[1]=~table[num%100/10];
        DUAN_table[2]=~table[num%100%10];
       
        P2=0x01;
        P0=DUAN_table[0];
        delay(2);
       
        P2=0x02;
        P0=DUAN_table[1];
        delay(2);
       
        P2=0x04;
        P0=DUAN_table[2];
        delay(2);
       
}
void init()
{
        num=0;
        TMOD=0x10;
        TH1=(65536-50000)/256;
        TL1=(65536-50000)%256;
        EA=1;
        ET1=1;
        TR1=1;
}
void main()
{
        init();
        while(1)
        {
                display();
        }
}
void time() interrupt 3
{
        TH1=(65536-50000)/256;
        TL1=(65536-50000)%256;
        t++;
}

  1. void time() interrupt 3
  2. {
  3.         TH1=(65536-50000)/256;
  4.         TL1=(65536-50000)%256;
  5.         t++;
  6.         if(t==20)           
  7.         {
  8.                 t=0;
  9.                 num=num++;
  10.         }
  11. }

  12. 删除void display()中的有关代码

复制代码


处理三个delay(2)的时候很有可能t=20,这样将无法执行num++,把它放到中断中就可以了,每次中断都比较t的值。

问题已解决,谢谢大神指点!

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

网站地图

Top