
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)
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)