1.汇编言语的源代码如下:
ORG0000H;这个汇编程序完成的是跑马灯试验
JMPSTART
ORG0200H
DELAY:MOVR1,#50;延时程序,延时0.5秒
DELAY0:MOVR2,#99
DELAY1:MOVR3,#49
DJNZR3,$
DJNZR2,DELAY1
DJNZR1,DELAY0
RET
ZX:MOVA,#0FEH;正序点亮流水灯
L1:MOVP0,A
RLA
CALLDELAY
MOVP2,#0FFH;把P2口写1,
SETBC;置C为1
MOVC,P2.1;假如P2.1按下,则C的值为0,
JNCJ2;C的值为0的时分跳到主程序的J2这个段
MOVC,P2.2;读P2.2的值,赋给C
JNCJ3;C为0的时分跳到主程序中J3这个段
JMPL1;跳到ZX这儿,死循环完成灯的活动
NX:MOVA,#7FH;逆序点亮流水灯
L2:MOVP0,A
RRA
CALLDELAY
MOVP2,#0FFH
SETBC
MOVC,P2.0
JNCJ1
MOVC,P2.3
JNCJ3
JMPL2
XM:MOVA,#0FFH;平息流水灯
L3:MOVP0,A
MOVP2,#0FFH
SETBC
MOVC,P2.0
JNCJ1
MOVC,P2.1
JNCJ2
JMPL3
START:;主程序段,也是程序开端的当地
MOVP2,#0FFH;将P2口写1
MOVP0,#0FFH;将P1口写1
SETBC;将C的值置1
J1:MOVC,P2.0;读P2.0的数据,赋给C
JNCZX;假如C的值为0跳转到流水灯正序循环这个段
J2:MOVC,P2.1;读P2.1的数据,赋给C
JNCNX;假如C的值为0,跳转到流水灯逆序循环这个段
J3:MOVC,P2.2;读P2.2的数据,赋给C
JNCXM;假如C的值为0,跳转到流水灯平息这个段
JMPSTART
END
2.C言语源代码如下:
#include//C言语咱们都比较了解,就不做过多的注释
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitk1=P2^0;
sbitk2=P2^1;
sbitk3=P2^2;
uchars1,s2,s3;
voiddelay(uintt);
voidf1();
voidf2();
voidf3();
voidmain()
{
uchark=0xfe;
while(1)
{
if(k1==0)f1();
if(k2==0)f2();
if(k3==0)f3();
}
}
voidf1()//正序点亮流水灯
{
uinti=0,k=0xfe;
while(1)
{
P0=k;
delay(100);
k=_crol_(k,1);
if(k2==0)break;
if(k3==0)break;
}
}
voidf2()//倒序点亮流水灯
{
uintk=0x7f;
while(1)
{
P0=k;
delay(100);
k=_cror_(k,1);
if(k1==0)break;
if(k3==0)break;
}
}
voidf3()//平息流水灯
{
while(1)
{
P0=0xff;
if(k1==0)break;
if(k2==0)break;
}
}
voiddelay(uintt)
{uinti,j;
for(i=t;i>0;i–)
for(j=114;j>0;j–);
}