IO_LED EQU P1
led_0 BIT P1.0
led_1 BIT P1.1
led_2 BIT P1.2
led_3 BIT P1.3
led_4 BIT P1.4
led_5 BIT P1.5
led_6 BIT P1.6
led_7 BIT P1.7
定义开关LED的数据,假定LED正极一端接桥桐电源,另一端通过限流电阻接I/O端口:
DATA_CloseLED EQU 11111111B
DATA_OpenLED EQU 00000000B
ORG 0000H
AJMP MAIN
ORG 0030H
-----------------------
延时0.5秒程序(注:此延时函数摘自STC-ISP)
DELAY500MS: @12.000MHz
PUSH 30H
PUSH 31H
PUSH 32H
MOV 30H,#4
MOV 31H,#205
MOV 32H,#180
NEXT:
DJNZ 32H,NEXT
DJNZ 31H,NEXT
DJNZ 30H,NEXT
POP 32H
POP 31H
POP 30H
RET
-----------------------
下面是主程序
MAIN:
MOV IO_LED,#DATA_CloseLED同时关闭8个LED
LCALL DELAY500MS延时0.5秒
MOV IO_LED,#DATA_OpenLED同时打开8个LED
LCALL DELAY500MS延时0.5秒
LJMP MAIN循环
END
上面程序演示了8个LED间返伍隔0.5秒同时亮和灭的变化。
在四个灯循环点亮的状态下,每点亮旁做散一个灯需要延时,如果调胡亩用延时子程序,按键就显示不灵敏了,所以,采用定时器运氏中断的方式控制延时,就不影响按键了。
#include<reg51.h>
#include<intrins.h>
仿真图效果。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)