c语言
#include<reg52.h>
typedef unsigned char uint8;
sbit ADDR0=P1^0;
sbit ADDR1=P1^1;
sbit ADDR2=P1^2;
sbit ENLED0=P1^4;
sbit ENLED1=P1^3;
uint8 i;
uint8 j;
void delay()
{
for(i=0;i<255;i++)
{
for(j=0;j<255;j++)
{
}
}
}
uint8 x;
void Main()
{
ENLED0=0;ENLED1=1;
ADDR0=0;ADDR1=1;ADDR2=1;
x=1;
while(1)
{
P0=~x;
delay();
if(0x80==x)
{
x=1;
}
else
x=x<<1;
}
}
汇编:
org 00H
ajmp start
org 30H
start:
/*为流水灯发亮做好准备工作*/
//1.使ENLEDS=0----
clr P1.4
setb P1.3
setb P1.2
setb P1.1
clr P1.0
//汇编位定义的使用,上面的几句话就等效于下面的六行代码
//sbit ADDR0=P1.0
//sbit ADDR1=P1.1
//sbit ADDR2=P1.2
//setb ADDR2
//setb ADDR1
//clr ADDR0
mov A,#1H
mov P0,A
main:
cpl A
mov P0,A
lcall delay
cpl A
rl A
ajmp main
delay:
mov R1,#1H
loop1:
mov R2,#0FFH
loop2:
mov R3,#0FFH
loop3:
djnz R3,loop3
djnz R2,loop2
djnz R1,loop1
ret
end