keil uVision4界面:
写法1
#include<reg51.h> //包含8051单片机寄存器定义的头文件
void delay(int x) //延时函数
{
int i,j;
for(i=x;i>0;i--)
for(j=120;j>0;j--);
}
void main() //主函数
{
while(1) //while循环
{
P1=0Xfe; //11111110
delay(800);
P1=0Xfd; //11111101
delay(800);
P1=0Xfb; //11111011
delay(800);
P1=0Xf7; //11110111
delay(800);
P1=0Xef; //11101111
delay(800);
P1=0Xdf; //11011111
delay(800);
P1=0Xbf; //10111111
delay(800);
P1=0X7f; //01111111
delay(800);
}
}
写法2
#include<reg51.h> //包含8051单片机寄存器定义的头文件
#include<intrins.h> //包含移位函数_crol_()的头文件
#define uchar unsigned char
#define uint unsigned int
void delay(int x) //延时函数
{
int i,j;
for(i=x;i>0;i--)
for(j=120;j>0;j--);
}
void main() //主函数
{
P1=0xfe; //向P1口送出点亮数据
while(1)
{
delay(10000); //10000是延时参数,可根据实际需要调整
P1=_crol_(P1,1); //函数_crol_(P1,1)把P1中的数据循环左移1位
}
}
写法3
#include<reg51.h>
//包含8051单片机寄存器定义的头文件
#define uchar unsigned char
uchar tab[]={0Xfe,0Xfd,0Xfb,0Xf7,0Xef,0Xdf,0Xbf,0X7f}; //8个数据为左移点亮数据
void delay(int x) //延时函数
{
int i,j;
for(i=x;i>0;i--)
for(j=120;j>0;j--);
}
void main() //主函数
{
uchar a;
while(1)
{
for(a=0;a<8;a++)
{
P1=tab[a]; //向P1口送出点亮数据
delay(500); //延时,即点亮一段时间
}
}
}
proteus仿真界面:
![](https://img-blog.csdnimg.cn/img_convert/86249d76ae0206dd977770eccc7a155b.png)