本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
#define uchar unsigned char
#include<reg51.h>
bit ldelay=0;//
长定时溢出标志,预置为
0
uchar m=-1,n=0;
uchar t=0;
void main(void)
{
uchar code ledp[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //
预定的写入
P2
的值
uchar code ledq[4]={0x7e,0xbd,0xdb,0xe7};
uchar i;
//
用来指示显示顺序
TMOD=0x01;
//
设置定时器
0
为工作方式
1
TH0=0x3c;
TL0=0xb0;
//
给定时器设定初始值
TR0=1;
//
启动定时器
0
ET0=1;
//
打开定时器
0
中断
EA=1;
//
打开总中断
while(1)
{
if(ldelay) //
发现时间溢出标志,进入处理
{
ldelay=0;
//
清除标记
if(m<8)n=0;
if(m>=8&m<16)n=1;
if(m>=16&m<20)n=2;
if(m>=20)n=3;
if(m==23)m=-1;
switch(n)
{
case 0:
P2=ledp[i];
//
读出一个值送到
P1
口
i++;
//
指向下一个
break;
case 1:
i--;
P2=ledp[i];
break;
case 2:
P2=ledq[i];
i++
;
break;
case 3:
i--;
P2=ledq[i];
break;
}
}
}
}
timer0 () interrupt 1
//http://www.mcuzx.net
定时器
0
中断
{
t++;
if(t==5)
{
t=0;
ldelay=1;
//
每次溢出置一个标志,以便主程序处理
++m;
}
TH0=0x3c;
TL0=0xb0;
//
是给定时器设定初始值
50MS
} |