📄 led09.c
字号:
/*******************************************************************************
* 描述: C语言 范例 直接使用 *
* LED数码管显示演示程序 *
* 在6个LED数码管上依次显 0123456789速度由快到慢 *
* *
* *
********************************************************************************
* 51测试网论坛例程 51测试网版权所有转载注明版权连接WWW.8951.COM *
*******************************************************************************/
#include <reg51.h>
unsigned char intcounter;
unsigned char intbcdcounter;
char idata bcd[10]={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60};
//int idata timer();
void display(int n,char tempbcd);
int idata counter;
static int signb=0;
void delay(int fredelay);
int fredelay;
void ex0() interrupt 0 using 0
{ unsigned char tempint;
delay(100);
delay(250);
intbcdcounter++;
intcounter*=2;
if(intcounter==128)
intcounter=2;
tempint=intcounter;
P2=~tempint;
if(intbcdcounter>=10)
intbcdcounter=0;
P0=bcd[intbcdcounter];
delay(250);
delay(250);
delay(250);
delay(250);
delay(250);
}
void main()
{ int counterb,tempdelay;
IE=0x81;
IP=0x1;
TCON=0X2;
intcounter=2;
intbcdcounter=0;
loopx: for(fredelay=0;fredelay<256;fredelay+=10)
{
for(counter=0;counter<10;counter++)
{ for(counterb=0;counterb<6;counterb++)
{
display(counterb,counter);
}
}
counter=0;
}
goto loopx;
}
void display(int n,char datanum)
{ int tempn;
unsigned char tempbcd;
unsigned char posp1=2;
P2=0xff;
tempbcd=bcd[datanum];
for(tempn=0;tempn<n;tempn++)
{
posp1*=2;
}
P2=~posp1;
P0=tempbcd;
switch(signb)
{
case 0: signb=1;
INT1=1;
break;
case 1: signb=0;
INT1=0;
break;
default: INT1=1;
signb=0;
}
delay(fredelay);
}
void delay(int fredelay)
{
unsigned char c1;
unsigned char c2;
for(c1=0;c1<fredelay;c1++)
{ for(c2=0;c2<125;c2++)
{;}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -