#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, 為退出循環體制造條件
}
}
}
|