×
单片机 > 单片机程序设计 > 详情

单片机实验--跑马灯

发布时间:2020-08-31 发布时间:
|
1.汇编语言的源代码如下:

ORG 0000H;这个汇编程序实现的是跑马灯实验

JMP START

ORG 0200H

DELAY:MOV R1,#50;延时程序,延时0.5秒

DELAY0: MOV R2,#99

DELAY1: MOV R3,#49

DJNZ R3,$

DJNZ R2,DELAY1

DJNZ R1,DELAY0

RET   

 

ZX:MOV A, #0FEH        ;正序点亮流水灯  

L1:MOV P0, A

RL A 

CALL DELAY

MOV P2,#0FFH;把P2口写1,

SETB C;置C为1

MOV C, P2.1;如果P2.1按下,则C的值为0,

JNC J2;C的值为0的时候跳到主程序的J2这个段

MOV C, P2.2;读P2.2的值,赋给C

JNC J3;C为0的时候跳到主程序中J3这个段

JMP L1;跳到ZX这里,死循环实现灯的流动

NX:MOV A, #7FH;逆序点亮流水灯

L2:MOV P0, A

RR A

CALL DELAY

MOV P2,#0FFH

SETB C

MOV C, P2.0

JNC J1

MOV C, P2.3

JNC J3

JMP L2

XM:MOV A, #0FFH;熄灭流水灯

L3:MOV P0, A

MOV P2,#0FFH

SETB C

MOV C, P2.0

JNC J1

MOV C, P2.1

JNC J2

JMP L3

START:;主程序段,也是程序开始的地方

MOV P2, #0FFH;将P2口写1

MOV P0, #0FFH;将P1口写1

SETB C;将C的值置1

J1:MOV C, P2.0;读P2.0的数据,赋给C

JNC  ZX;如果C的值为0跳转到流水灯正序循环这个段

J2:MOV C, P2.1;读P2.1的数据,赋给C

JNC  NX ;如果C的值为0,跳转到流水灯逆序循环这个段

J3: MOV C, P2.2;读P2.2的数据,赋给C

JNC  XM ;如果C的值为0,跳转到流水灯熄灭这个段

JMP START

END

2.C语言源代码如下:

#include    //C语言我们都比较熟悉,就不做过多的注释

#include 

#define uint unsigned int

#define uchar unsigned char

sbit k1=P2^0;

sbit k2=P2^1;

sbit k3=P2^2;

uchar s1,s2,s3;

void delay(uint t);

void f1();

void f2();

void f3();

void main()

{

uchar k=0xfe;

while(1)

{

if(k1==0) f1();

if(k2==0) f2();

if(k3==0) f3();

}

}

void f1() //正序点亮流水灯

{

uint i=0,k=0xfe;

while(1)

{

P0=k;

delay(100);

k=_crol_(k,1);

if(k2==0)break;

if(k3==0)   break;

}

}

void f2() //倒序点亮流水灯

{

uint k=0x7f;

while(1)

{

P0=k;

delay(100);

k=_cror_(k,1);

if(k1==0)break;

if(k3==0) break;

}

}

void f3()//熄灭流水灯

{

while(1)

{

P0=0xff;

if(k1==0) break;

if(k2==0)break;

}

}

void delay(uint t)

{uint i,j;

for(i=t;i>0;i--)

for(j=114;j>0;j--);

}

关键字:单片机实验  跑马灯 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机CO2检测显示程序解析