请教我的代码问题出在哪?

2019-03-24 19:27发布

利用寒假学习学习keil c51。在学到动态扫描的时候,有这么一道题:利用实验板的三个数码管显示从000~999,每300ms增加一次,不断周而复始的循环。 可是我编好之后,发现只能点亮一个数码管。。   研究了一天,也没发现问题。。。   求坛友们,放假没事帮俺研究研究呗。。 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
孤獨の快樂
2019-03-26 09:48

你的程序看不下去了,简单的题目被你搞得这么麻烦,而且还好几处地方有问题

直接重新写个程序给你吧

 

#include<reg52.h>

#define uchar unsigned char
#define uint unsigned int

uchar num[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar count;
uint number;

sbit le = P3^7;

void T0_init()
{
 TMOD = 0x01;
 TH0 = 0xea;  //6ms中断一次
 TL0 = 0x66;
 TF0 = 0;  //中断标志位清零
 ET0 = 1;   //允许定时器0中断
 EA = 1;
 TR0 = 1;
}

void delay()
{
  uchar i,j;
  for(i=0;i<10;i++)
     for(j=0;j<10;j++);
}

void display(number)
{
 P2=4;
 P0=num[number/100];
 P2=0;
 delay();

 P2=4;
 P0=num[number%100/10];
 P2=1;
 delay();

 P2=4;
 P0=num[number%10];
 P2=2;
 delay();
}
void main()
{
 T0_init();
 le=1;
 while(1)
 {
  display(number);
 }
}

void timer0() interrupt 1
{
 TH0 = 0xea; 
 TL0 = 0x66;
 count++;
 if(count==50)
 {
  count=0;
  number++;
  if(number==1000)
  {
   number=0;
  } 
 }
}

[ 本帖最后由 孤獨の快樂 于 2012-1-16 16:11 编辑 ]

一周热门 更多>