数码管显示0-100,求帮忙看看程序

2019-07-16 05:17发布

RT,好心人帮我看看写的哪里错啊?数码只显示000,不会跳动。
小弟初学,求指教,谢谢~

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char const dofly[]={0x3f,0x06,0x5b,0x4f
,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值01234567
unsigned char code  seg[]={0,1,2,3,4
,5,6,7};//分别对应相应的数码管点亮,即位码
int a=0,task=0;
void initial();
void display(int z);
void delay(int t);
void main()
{
initial;
while(1)
{
  if(a==20)
    {
   a=0;
   task++;
   if(task==100)
      {
     task=0;
      }
   
    }
  
  display(task);
}
}

void initial()
{
TMOD=0x11;
TH0=(65536-50000)/256;
TL0=(665536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(665536-50000)%256;
a++;
}
void display(int z)
{ int ge= z%10;
  int shi= z%100/10;
  int bai= z/100;
  P0=dofly[ge];
  P2=seg[2];
  delay(1);
  P0=dofly[shi];
  P2=seg[1];
  delay(1);
  P0=dofly[bai];
  P2=seg[0];
  delay(1);
}
void delay(int t)
{
int x,y;
for(x=t;x>0;x--)
  for (y=110;y>0;y--);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
elevm
1楼-- · 2019-07-16 07:05
本帖最后由 elevm 于 2012-7-8 14:39 编辑

我也是刚学习,初始化函数调用错了,相当于没开中断
initial少了括号,这样就不是函数调用了,编译器把initial作为一个right value,计算后丢弃
既然没调用函数,那函数initial里的代码当然不会被执行
新手在线
2楼-- · 2019-07-16 11:06
初始化错 了
540960708
3楼-- · 2019-07-16 13:53
初始化错 了
lovedollar
4楼-- · 2019-07-16 19:52
新手在线 发表于 2012-7-8 15:40
初始化错 了

恩恩,谢谢啊
Ignorant_chi杜
5楼-- · 2019-07-16 22:12
 精彩回答 2  元偷偷看……
新手在线
6楼-- · 2019-07-16 23:21
lovedollar 发表于 2012-7-9 09:04
恩恩,谢谢啊

一周热门 更多>