P1.0口作为输出,接1只发光二极管,编写程序使其发光二极管闪亮的程序

P1.0口作为输出,接1只发光二极管,编写程序使其发光二极管闪亮的程序,第1张

ORG 0000H 程序从0地址开始

START: CLR P1.0点亮发光二极管

LCALL DELAY 调用延时子程序(亮1秒钟)

SETBP1.0 关掉发光二极管

LCALL DELAY 调用延时子程序(关1秒钟)

LJMPSTART 跳到START标号处执行

DELAY: 1秒延时子程序(12MHz晶振)

MOV R5,#8 R5寄存器加载8次

D0:MOV R7,#250 R7寄存器加载250次数

D1:MOV R6,#250 R6寄存器加载250次数

D2:DJNZR6,D2D2循环执行R6次

DJNZR7,D1D1循环执行R7次

DJNZR5,D0D0循环执行R5次

RET 返回主程序

END 主程序结束

ORG 0000H程序开始

LJMP MAIN

ORG 030H

MAIN:MOV P0,#00H

MOV P1,#00H

MOV P2,#00H

MOV P3,#00H

lcall del

MOV P0,#0FFH

MOV P1,#0FFH

MOV P2,#0FFH

MOV P3,#0FFH

AJMP MAIN

DEL: MOV R7,#0FH延时子程序

DEL1:MOV R6,#0FFH

DJNZ R6,$

DJNZ R7,DEL1

RET

END

;这个是P0,口和P1口 ...P3口闪烁的,你稍微改动一下让其中一个口中的一个管脚变化电平就成。

方法:

1:设定一个变量i,可以从0到3循环的变化

2:检测一个经过消抖处理的按键,按一下,i+1

3:当i值为各个值时,执行相应的花样。

流水灯参考程序

#include

#include

#define uchar unsigned char

uchar j,temp

void delay(unsigned int ms)

{

uchar t

while(ms--)

for(t=0t<123t++)

}

void main()

{

P1=0xff

delay(500)

temp=0xfe//有点怪,led接在P2.3~P2.6

for(j=0j<4j++)

{

P1=temp

delay(500)

temp=_crol_(temp,1)

}

P1=0xff

while(1)

}


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

原文地址:https://54852.com/yw/11080701.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存