LED EQU P0
KEY EQU P10
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV LED,#0
CLR A
LOOP:
JB KEY,$
JNB KEY,$
INC A
MOV LED,A
SJMP LOOP
END
这个流水灯是很普通的一种花样,假设LED接P1口,程序如下:
ORG 0000H
LJMP MAIN
0RG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H
MOV TH0,#HIGH(65536-50000) ;50毫秒定时
MOV TL0,#LOW(65536-50000)
SETB TR0
SETB ET0
SETB EA
MOV A,#0FEH
MOV P1,A
MOV R2,#20
SJMP $
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
DJNZ R2,T0E ;1秒未到直接退出
MOV R2,#20
RL A
MOV P1,A ;1秒一变的花样流水灯。
T0E:
RETI
END
KEY BIT P10;按键与P10相连接
;LED与P2相连接,低电平有效
KZW BIT 20H0;标志控制位,1——向左循,0——右循环
ORG 00H
LJMP MAIN
ORG 30H
MAIN:
MOV P2,#0FFH
JB P10,$
ACALL DELAY10MS;延时10ms
JNB P10,$
MOV P2,#0FEH
SETB KZW
LOOP:
JB P10,KS
ACALL DELAY10MS;延时10ms
JNB P10,$
CPL KZW
KS: JNB KZW,R_M
L_M:;左循环
MOV A,P2
RL A
MOV P2,A
ACALL DELAY
LJMP LOOP
R_M:;右循环
MOV A,P2
RR A
MOV P2,A
ACALL DELAY
LJMP LOOP
DELAY10MS:(略)
RET
DELAY:(略)
RET
END
;以89c51单片机为例,假定用P1控制LED:
IO_LED EQU P1;
led_0 BIT P10;
led_1 BIT P11;
led_2 BIT P12;
led_3 BIT P13;
led_4 BIT P14;
led_5 BIT P15;
led_6 BIT P16;
led_7 BIT P17;
;定义开关LED的数据,假定LED正极一端接电源,另一端通过限流电阻接I/O端口:
DATA_CloseLED EQU 11111111B;
DATA_OpenLED EQU 00000000B;
ORG 0000H
AJMP MAIN
ORG 0030H
;-----------------------
;延时05秒程序(注:此延时函数摘自STC-ISP)
DELAY500MS: ;@12000MHz
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;延时05秒
MOV IO_LED,#DATA_OpenLED;同时打开8个LED
LCALL DELAY500MS;延时05秒
LJMP MAIN;循环
END;
上面程序演示了8个LED间隔05秒同时亮和灭的变化。
以上就是关于编写汇编程序,利用led灯亮暗表示按键按下次数,按一次加一,用二进制全部的内容,包括:编写汇编程序,利用led灯亮暗表示按键按下次数,按一次加一,用二进制、用汇编语言编流水灯,有8个LED灯,LED1~LED8 灯按顺序点亮,每个等亮一秒转到下个灯,一直循环亮、如何用汇编语言编写一道程序,使得1个LED在按键的控制下,按一次按键LED向左循环亮,再按一次,又向右循环亮等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)