用C语言编写按键控制流水灯的程序

用C语言编写按键控制流水灯的程序,第1张

1灭)。编译器keil

c代码如下:

#include<reg51.h>

#include<intrins.h>

//包含循环左移函数

_cro_l头文件

unsigned

char

tmp

//中间变量

//////////////////////////////////////////////////////////////////////////////////////////////////

//

延时子程序

////////////////////////////////////////////////////////////////////////////////////////////////

void

delay(unsigned

int

cnt)

{

while(--cnt)

}

//////////////////////////////////////////////////////////////////////////////////////////////////

//

主函数

////////////////////////////////////////////////////////////////////////////////////////////////

main()

{

while(1)

//外层循环

{

tmp

=

0xfe

p1

=

tmp

while(1)

//内层循环,执行1、3、5、7亮灯循环

{

delay(30000)

//延时以便能观察到灯亮移动,自己可以调整时间,由晶振和实参决定

tmp

=

_crol_(tmp,2)

p1

=

tmp

if(tmp

==

0xbf)

//判断是否已经点亮到第7灯。是,则退出进入2、4、6、8循环

{

break

}

}

tmp

=

0xfd

p1

=

tmp

while(1)

//内层循环,执行2、4、6、8亮灯循环

{

delay(30000)

//延时以便能观察到灯亮移动,自己可以调整时间,由晶振和实参决定

tmp

=

_crol_(tmp,2)

p1

=

tmp

if(tmp

==

0x7f)

//判断是否已经点亮到第8灯。是,则退出进入1、3、5、7循环

{

break

}

}

}

}

低电平点亮

START:MOV R0,#8

MOV R1,#8

SETB C

MOV A,#0FEH

MOV P1,A

S1:RLC A

CALL DELAY

MOV P1,A

DJNZ R0,S1

SETB C

MOV A,#0FEH

MOV P2,A

S2:RLC A

CALL DELAY

MOV P2,A

DJNZ R1,S2

AJMP START

DELAY:MOV R5,#0FFH //改变值变延时时间

LOOP2: MOV R4,#0FFH//改变值变延时时间

LOOP1:DJNZ R4,LOOP1

DJNZ R5,LOOP2

RET

END

#include "reg51.h"

unsigned char led[]={0xfe,0xfd,0xfb,0xf7} //LED灯的花样数据

void delay(unsigned char time){//延时函数

unsigned int j=15000

for(time>0time--)

for(j>0j--)

}

void main(){

bit dir=0,run=0 //标志位定义及初始化

char i

while(1){

switch (P0 &0x0f){ //读取键值

case 0x0e:run=1break //K1动作,设run=1

case 0x0d:run=0,dir=0break // K2动作,设run=dir=0

case 0x0b:dir=1break //K3动作,设dir=1

case 0x07:dir=0break //K4动作,设dir=0

}

if (run)//若run=dir=1,自上而下流动

if(dir)

for(i=0i<=3i++){

P2=led[i]

delay(200)

}

else

for(i=3i>=0i--){ //run=1,dir=0,自下而上流动

P2=led[i]

delay(200)

}

else P2=0xff //若run=0,全部灯灭

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11494403.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存