15单片机的定时器编写一秒一加的程序,从0到99一循环

如题所述

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar num=0,a=0;

//共阴数码管七段码
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77};
void Delay1ms(uint i) //1ms延时程序
{
uint j;
for(;i>0;i--)
{
for(j=0;j<164;j++)
{;}
}
}
void main(void )//主程序
{
TMOD=0X01;
TH0=(65536-50000)/256;
TR0=(65536-50000)%256;
ET0=1;
EA=1;
TR0=1;
while(1)
{
if(a==20)//判断是否够1秒
{
a=0;
num++;
if(num==100)num=0;
}
display[num];
}

void timer0(void ) interrupt 1//定时器中断子程序
{
TH0=(65536-50000)/256;
TR0=(65536-50000)%256;
a++;
}
void display(uint n)//显示子程序,用锁存器,可显示4位数
{
uchar a1,a2,a3,a4;
a1=n/1000;
a2=n/100%10;
a3=n/10%10;
a4=n%10;
P0=table[a1]; //显示千位
dula=1;
dula=0;

P0=0xfe;
wela=1;
wela=0;
Delay1ms(2);
P0=table[a2]; //显示百位
dula=1;
dula=0;

P0=0xfd;
wela=1;
wela=0;
Delay1ms(2);
P0=table[a3]; //显示十位
dula=1;
dula=0;

P0=0xfb;
wela=1;
wela=0;
Delay1ms(2);

P0=table[a4]; //显示个位
dula=1;
dula=0;
P0=0xf7;
wela=1;
wela=0;
Delay1ms(2);
}追问

这是52

单片机的

而且也有错

?

追答

15单片机不兼容51单片机吗?自己手打的TL0写成了TR0
display[num]后面再多加一个大括号就 好了

追问

没定义锁存器啊

。。。。引脚不一样,具体也不一样

而且a==20能帮忙解释一下么

谢谢

温馨提示:内容为网友见解,仅供参考
无其他回答

如何编写一加一等于3的程序
If Text1.text="1+1" Then Text2.Text="3"End If End Sub

跪求~8051单片机工程实践任务键定义思路!懂单片机的来~~~
任务是:利用键盘(单片机键盘,不是电脑键盘)输入-19999到+19999任意五套数~可是只有4个键(K1--K4)可以利用,要输入0--9十个数、要有确认键、复位键、还有小数点的输入、位选控制。但前... 任务是:利用键盘(单片机键盘,不是电脑键盘)输入-19999到+19999任意五套数~可是只有4个键(K1--K4)可以利用,要输入0-...

相似回答