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 ini
tial();
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--);
}
我也是刚学习,初始化函数调用错了,相当于没开中断
initial少了括号,这样就不是函数调用了,编译器把initial作为一个right value,计算后丢弃
既然没调用函数,那函数initial里的代码当然不会被执行
一周热门 更多>