1秒加一个数字,求指点????中断里面该怎么写??

2019-07-16 01:11发布

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code S[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar x;
uint j=0;

delay1ms(uint i)//延时1毫秒
{
uchar t;
while(i--)
{
for(t=0;t<115;t++);
}
}

display(uchar x)//数码管显示
{
P2=0xef;
P0=S[x/10];
delay1ms(5);
P2=0xdf;
P0=S[x%10];
delay1ms(5);
P2=0xff;
}

void main()
{
TMOD=0x01;
EA=1;
IT0=0;
ET0=1;
TR0=1;
TH0=0x4c;
TL0=0x00;


while(1)        //20个50毫秒
{
do                       
{
TH0=0x4c;
TL0=0x00;
j=j+1;
}while(j<20);

j=0;
display(x);
x++;
}
}

void T0zhongduan() interrupt 1
{




}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
那低头一笑的温
1楼-- · 2019-07-16 05:55
.....
.....  //以上是你原来的程序
bit   _1_second_flag = 0;
main()
{
       ....
       ....      //这几句是你原来的
      while(1)
      {
              if(_1_second_flag)
              {
                    _1_second_flag = 0;
                    display(x++);
              }
      }
}

void T0zhongduan() interrupt 1
{
        if(++j == 20)
        {
              j = 0;
              _1_second_flag = 1;    //1秒
        }
        TH0=0x4c;
        TL0=0x00;
}
爱放火的小孩
2楼-- · 2019-07-16 06:17
那低头一笑的温 发表于 2013-4-23 20:52
.....
.....  //以上是你原来的程序
bit   _1_second_flag = 0;

基本上行了,但是为什么两个数码管亮了1秒又灭1秒啊???哪里出错了?
那低头一笑的温
3楼-- · 2019-07-16 09:47
你的x变量都没有限制范围,x++是从0~255循环, S[x/10]超出数组范围了
那低头一笑的温
4楼-- · 2019-07-16 12:05
 精彩回答 2  元偷偷看……
那低头一笑的温
5楼-- · 2019-07-16 15:33
.....
.....  //以上是你原来的程序
bit   _1_second_flag = 0;
main()
{
       ....
       ....      //这几句是你原来的
      while(1)
      {
              display(x);
              if(_1_second_flag)
              {
                    _1_second_flag = 0;
                   if(++x >= 100)
                        x = 0;
              }
      }
}

void T0zhongduan() interrupt 1
{
        if(++j == 20)
        {
              j = 0;
              _1_second_flag = 1;    //1秒
        }
        TH0=0x4c;
        TL0=0x00;
}
爱放火的小孩
6楼-- · 2019-07-16 16:02
那低头一笑的温 发表于 2013-4-23 22:16
.....
.....  //以上是你原来的程序
bit   _1_second_flag = 0;

OK了非常感谢。。。。。。

一周热门 更多>