#include<reg52.h>//包含单片机对应的头文件
#define uchar unsigned char//宏定义
sbit LED = P0^0;
sbit ENLED = P1^4;
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
void delay_ms(unsigned int time)//延时函数
{
unsigned int i,j; //声明 i,j 为整型变量
for(i=time;i>0;i--) //将变量 time 赋予 i,当 i 大于 0 的条件成立,执行循环体,i 自减 1
for(j=112;j>0;j--) //将变量 112 赋予 j,当 j 大于 0 的条件成立,执行循环体,j 自减 1
{;} //空等待,直到以上的循环条件结束,从而实现延时。
}
void main(void)
{ ENLED = 0;
ADDR0 = 0; ADDR1 = 1; ADDR2 = 1; ADDR3 = 1;
uchar i,j; //声明 i,j 为字符型变量
uchar move_1,move_2; //声明 move_1, move_2 为字符型变量
while(1) //死循环,永远不会退出循环体
{
i=0; //i 赋予 0
while(i<2) //假如 i 小于 2 执行循环体语句
{
P1=0x7e;delay_ms(200);//点亮 LED0。LED7
P1=0xbd;delay_ms(200);//点亮 LED1。LED6
P1=0xdb;delay_ms(200);//点亮 LED2。LED5
P1=0xe7;delay_ms(200);//点亮 LED3。LED4
i++; //i 自加 1, 为退出循环体制造条件
}
i=0; //i 赋予 0
while(i<2) //假如 i 小于 2 执行循环体语句
{
P1=0xe7;delay_ms(200);//点亮 LED3。LED4
P1=0xdb;delay_ms(200);//点亮 LED2。LED5
P1=0xbd;delay_ms(200);//点亮 LED1。LED6
P1=0x7e;delay_ms(200);//点亮 LED0。LED7
i++; //i 自加 1, 为退出循环体制造条件
}
move_1=0x7f; //move_1 赋值 0x7f
i=0; //i 赋予 0
while(i<8) //假如 i 小于 8 执行循环体语句
{
P1=move_1; //move_1 赋于 P1 端口
move_1=(move_1>>1)|0x80;//move_1 右移一位,然后与 0x80 相或,高位总保特1
delay_ms(300); //延时 300ms
move_2=0xfe; //move_2 赋值 0xfe
j=0; //j 赋予 0
while(j<8) //假如 j 小于 8 执行循环体语句
{
P1=move_2; //move_2 赋于 P1 端口
move_2=(move_2<<1)|0x01;//move_2 左移一位,然后与 0x01 相或,低位总1
delay_ms(100); //延时 300ms
j++; //j 自加 1, 为退出循环体制造条件
}
i++; //i 自加 1, 为退出循环体制造条件
}
}
}
|