您的位置 首页 电路

单片机试验–跑马灯

1汇编语言的源代码如下:ORG0000H;这个汇编程序实现的是跑马灯实验JMPSTARTORG0200HDELAY:MOVR1,50;延时程序,延时05秒DELAY0:MOVR2,99

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–);

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/dianlu/261723.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部