微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机实验--跑马灯

单片机实验--跑马灯

时间:11-22 来源:互联网 点击:
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--);

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top