boya355 发布于 2007-9-3 0:20:33
有请高手:89C2051单片机,三个开关如何控制好这四路LED的三段功能呢
我现在使用为89C2051 要求:利用它的K1(P3.5), K2(P3.4), K3(P3.3)三个键控制P4\P5\P6\P7三的端口的输出灯. 四灯的功能 :第一段为四灯连亮;第二段为四灯同亮;第三段短为四灯轮流闪, K1控制第一段;K2控制第二段;K3控制第三段. 以下是我自编的,只能实现第一段,且开了, 同一个开关 又关不了. 我想实现K1能开关第一段, K2能开关第二段,K3能开关第三段, 我使用了JNB \JB 等 其他的语句我很难用到, 是不是这样的程序一定要使用C语言, 可我不会呀, 一定要用到吗, 烦请汇编的高手指点 ! 谢谢 org ajmp start start:mov p1,#0ffh mov p3,#0ffh LOOP: JNB P3.5,J1 JMP LOOP JNB P3.4,J2 JMP LOOP JNB P3.3,L3 JMP LOOP J1: JMP L1 ;转到P3.5(K1)控制的四灯连亮子程序 SETB P3.4 SETB P3.3 JMP LOOP J2: JMP L2 ;转到P3.4(K2)控制的四灯同闪子程序 SETB P3.5 SETB P3.3 JMP LOOP J3: JMP L3 ;转到P3.3(K3)控制的四灯轮流闪子程序 SETB P3.5 SETB P3.4 JMP LOOP ;四灯连亮;;;;;;;;;;;;;;;;;;;;;;;;;;;; L1: MOV P1,#0FFH CLR P1.4 mov 30h,#255 CALL DELAY CLR P1.4 CLR P1.5 mov 30H,#255 CALL DELAY CLR P1.4 CLR P1.5 CLR P1.6 MOV 30H,#255 CALL DELAY CLR P1.4 CLR P1.5 CLR P1.6 CLR P1.7 MOV 30H,#255 CALL DELAY SETB P1.4 SETB P1.5 SETB P1.6 SETB P1.7 MOV 30H,#255 CALL DELAY JNB P3.5,LOOP JMP L1 ;四灯同时亮;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; L2: CLR P1.4 CLR P1.5 CLR P1.6 CLR P1.7 MOV 30H,#255 CALL DELAY SETB P1.4 SETB P1.5 SETB P1.6 SETB P1.7 MOV 30H,#255 CALL DELAY JMP L2
;四灯轮流闪;;;;;;;;;;;;;;;;;;;;;;;;;;;; L3 : clr p1.7 MOV 30H,#255 call delay setb p1.7 MOV 30H,#255 call delay clr p1.6 MOV 30H,#255 call delay setb p1.6 MOV 30H,#255 call delay clr p1.5 MOV 30H,#255 call delay setb p1.5 MOV 30H,#255 call delay clr p1.4 MOV 30H,#255 call delay setb p1.4 MOV 30H,#255 call delay JMP L3 delay: mov r6,30h d2: mov r7,#255 djnz r7,$ djnz r6,d2 ret end 以上的程序未能实现我的需要.没有达到想要的功能! 其实要求的功能就是:一个开关控制一段功能,三个不同的开关控制各自的三个功能程序. 为何汇编语言很难编出呢!?望哪为高人指教!
「该帖子被 boya355 在 2007-9-3 22:01:20 编辑过」 poweryes 发布于 2007-9-3 6:33:45
说的是???有点看不明白的 elale 发布于 2007-9-3 16:12:14
对汇编不熟,看你程序的意思是输入高电平是转移,你开始就全部给高电平啦,肯定只能实现第一段啦。 boya355 发布于 2007-9-3 21:53:46
以上的程序未能实现我的需要.没有达到想要的功能! 其实要求的功能就是:一个开关控制一段功能,三个不同的开关控制各自的三个功能程序. 为何汇编语言很难编出呢!?望哪为高人指教! boya355 发布于 2007-9-3 22:07:00
以下是引用 poweryes 在(2007-9-3 6:33:45)的发言 说的是???有点看不明白的
以上的解释 可以明白吗:也就是想利用一个开关控制一段子程序, 三个开关想独自控制三个各自的子程序, 且不要相互干扰! 谢谢 指教! boya355 发布于 2007-9-3 22:09:39
以下是引用 elale 在(2007-9-3 16:12:14)的发言 对汇编不熟,看你程序的意思是输入高电平是转移,你开始就全部给高电平啦,肯定只能实现第一段啦。
谢谢 你的关注, 对于不用汇编, 可以使用C语言的 如何能实现我的要求呢? xjlfh 发布于 2007-9-3 22:37:38
org 000H ajmp start start:mov p1,#0ffh mov p3,#0ffh LOOP: JNB P3.5,J1 JMP LOOP JNB P3.4,J2 JMP LOOP JNB P3.3,L3 L3=J3 ?是不是错了 JMP LOOP J1: JMP L1 ;转到P3.5(K1)控制的四灯连亮子程序 SETB P3.4 SETB P3.3 JMP LOOP J2: JMP L2 ;转到P3.4(K2)控制的四灯同闪子程序 SETB P3.5 SETB P3.3 JMP LOOP J3: JMP L3 ;转到P3.3(K3)控制的四灯轮流闪子程序 SETB P3.5 SETB P3.4 JMP LOOP ;四灯连亮;;;;;;;;;;;;;;;;;;;;;;;;;;;; L1: MOV P1,#0FFH CLR P1.4 mov 30h,#255 ????????罗嗦
CALL DELAY CLR P1.4 ????多余 CLR P1.5 mov 30H,#255 ????????罗嗦 CALL DELAY CLR P1.4 ?????多余 CLR P1.5 ??????多余 CLR P1.6 MOV 30H,#255 ????????罗嗦 CALL DELAY CLR P1.4 ??????多余 CLR P1.5 ??????多余 CLR P1.6 ??????多余 CLR P1.7 MOV 30H,#255 ????????罗嗦 CALL DELAY SETB P1.4 SETB P1.5 SETB P1.6 SETB P1.7 MOV 30H,#255 ????????罗嗦 CALL DELAY JNB P3.5,LOOP JMP L1 ;四灯同时亮;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; L2: CLR P1.4 CLR P1.5 CLR P1.6 CLR P1.7 MOV 30H,#255 ????????罗嗦 CALL DELAY SETB P1.4 SETB P1.5 SETB P1.6 SETB P1.7 MOV 30H,#255 ????????罗嗦 CALL DELAY JMP L2 ;四灯轮流闪;;;;;;;;;;;;;;;;;;;;;;;;;;;; L3 : clr p1.7 MOV 30H,#255 ????????罗嗦 call delay setb p1.7 MOV 30H,#255 ????????罗嗦 call delay clr p1.6 MOV 30H,#255 ????????罗嗦 call delay setb p1.6 MOV 30H,#255 ????????罗嗦 call delay clr p1.5 MOV 30H,#255 ????????罗嗦 call delay setb p1.5 MOV 30H,#255 ????????罗嗦 call delay clr p1.4 MOV 30H,#255 ????????罗嗦 call delay setb p1.4 MOV 30H,#255 ????????罗嗦 call delay JMP L3 delay: mov r6,30h MOV R6,#255 d2: mov r7,#255 djnz r7,$ djnz r6,d2 ret end 写的太乱了,看着头晕,好好再改一下吧! boya355 发布于 2007-9-4 0:04:38
以下是引用 xjlfh 在(2007-9-3 22:37:38)的发言 K1 BIT P3.5 K2 BIT P3.4 K3 BIT P3.3 org 0 ajmp LOOP
LOOP: JNB K1,J1 LOOP1: JNB K2,J2 JNB K3,J3 JMP LOOP J1: JMP L1 ;转到P3.5(K1)控制的四灯连亮子程序 SETB K2 SETB K3 JMP LOOP J2: JMP L2 ;转到P3.4(K2)控制的四灯同闪子程序 SETB K1 SETB K3 JMP LOOP J3: JMP L3 ;转到P3.3(K3)控制的四灯轮流闪子程序 SETB K1 SETB K2 JMP LOOP ;四灯连亮;;;;;;;;;;;;;;;;;;;;;;;;;;;; L1: MOV P1,#0FFH CLR P1.4
CALL DELAY CLR P1.4 CLR P1.5 CALL DELAY CLR P1.4 CLR P1.5 CLR P1.6 CALL DELAY CLR P1.4 CLR P1.5 CLR P1.6 CLR P1.7 CALL DELAY SETB P1.4 SETB P1.5 SETB P1.6 SETB P1.7 CALL DELAY JNB K1,LOOP1 JMP L1 ;在这里,我就无法出来了,其他的L2 L3也就无法运行了 ,救救我出来吧? ;四灯同时亮;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; L2: CLR P1.4 CLR P1.5 CLR P1.6 CLR P1.7 CALL DELAY SETB P1.4 SETB P1.5 SETB P1.6 SETB P1.7 CALL DELAY JMP L2 ;四灯轮流闪;;;;;;;;;;;;;;;;;;;;;;;;;;;; L3 : clr p1.7 call delay setb P1.7 call delay clr p1.6 call delay setb p1.6 call delay clr p1. call delay setb p1.5 call delay clr p1.4 call delay setb p1.4 call delay JMP L3 delay: mov r6,#255 d2: mov r7,#255 djnz r7,$ djnz r6,d2 ret end 写的太乱了,看着头晕,好好再改一下 谢谢 你的关注!现在改了, 明白我的意思吧(我是初学 见笑了!), 我的想法是 利用一个开关能独立控制相对应的一个程序, 同一个开关可开也可关该程序(这样的各自程序可能不能叫子程序吧,因为它是没有返回的, 只能是那个对应的K键 可以停止或打开), xjlfh 发布于 2007-9-4 11:07:37
以下是引用 boya355 在(2007-9-4 0:04:38)的发言
以下是引用 xjlfh 在( 2007-9-3 22:37:38)的发言 K1 BIT P3.5 K2 BIT P3.4 K3 BIT P3.3 org 000H ajmp LOOPORG 0030H
LOOP: JNB K1,J1 JNB K2,J2 JNB K3,J3 JMP LOOP J1: JMP L1 ;转到P3.5(K1)控制的四灯连亮子程序 ; SETB K2 多余 ; SETB K3 多余
; JMP LOOP 多余
J2: JMP L2 ;转到P3.4(K2)控制的四灯同闪子程序 ; SETB K1 多余
; SETB K3 多余
; JMP LOOP 多余
J3: JMP L3 ;转到P3.3(K3)控制的四灯轮流闪子程序 ; SETB K1 多余
; SETB K2 多余
; JMP LOOP 多余
;四灯连亮;;;;;;;;;;;;;;;;;;;;;;;;;;;; L1: MOV P1,#0FFH ;可以不要,上电后本来就是置高位 CLR P1.4
CALL DELAY ; CLR P1.4 多余,置位后若没有别的命令去改变它的状态,则会一直保持最后一个命令 赋 予它的状态,以下同理。
CLR P1.5 CALL DELAY ; CLR P1.4 多余
; CLR P1.5 多余 CLR P1.6 CALL DELAY ; CLR P1.4 多余
; CLR P1.5 多余
; CLR P1.6 多余
CLR P1.7 CALL DELAY SETB P1.4 SETB P1.5 SETB P1.6 SETB P1.7 CALL DELAY JNB k1,J1 JNB k2,J2 JNB k3,j3 JMP L1 ;若要用K1直接控制,就JMP LOOP,若要在目前程序运行中由K1、K2、K3状态控制跳转,就JMP L1 ;四灯同时亮;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; L2: MOV P1,#0FH 用它更简单 ;CLR P1.4 ;CLR P1.5 ; CLR P1.6 ; CLR P1.7 CALL DELAY MOV P1,#0FFH 用它更简单 ; SETB P1.4 ; SETB P1.5 ; SETB P1.6 ;SETB P1.7 CALL DELAY JNB k1,J1 JNB k2,J2 JNB k3,j3 JMP L2 ;若要用K2直接控制,就JMP LOOP,若要在目前程序运行中由K1、K2、K3状态控制跳转,就JMP L2 ;四灯轮流闪;;;;;;;;;;;;;;;;;;;;;;;;;;;; L3 : clr p1.7 call delay setb P1.7 call delay clr p1.6 call delay setb p1.6 call delay clr p1. call delay setb p1.5 call delay clr p1.4 call delay setb p1.4 call delay JNB k1,J1 JNB k2,J2 JNB k3,j3 JMP L3 ;若要用K3直接控制,就JMP LOOP,若要在目前程序运行中由K1、K2、K3状态控制跳转,就JMP L3 delay: mov r6,#255 d2: mov r7,#255 djnz r7,$ djnz r6,d2 ret end
boya355 发布于 2007-9-4 21:41:48
 真的感谢您_xjlfh!让你这么改,效果忽然出现,这就是我想要的. 不过我改进这个程序和要求,可能还有难题!望能一如既往的关注 谢谢了 boya355 发布于 2007-9-3 0:20:33
有请高手:89C2051单片机,三个开关如何控制好这四路LED的三段功能呢
我现在使用为89C2051 要求:利用它的K1(P3.5), K2(P3.4), K3(P3.3)三个键控制P4\P5\P6\P7三的端口的输出灯. 四灯的功能 :第一段为四灯连亮;第二段为四灯同亮;第三段短为四灯轮流闪, K1控制第一段;K2控制第二段;K3控制第三段. 以下是我自编的,只能实现第一段,且开了, 同一个开关 又关不了. 我想实现K1能开关第一段, K2能开关第二段,K3能开关第三段, 我使用了JNB \JB 等 其他的语句我很难用到, 是不是这样的程序一定要使用C语言, 可我不会呀, 一定要用到吗, 烦请汇编的高手指点 ! 谢谢 org ajmp start start:mov p1,#0ffh mov p3,#0ffh LOOP: JNB P3.5,J1 JMP LOOP JNB P3.4,J2 JMP LOOP JNB P3.3,L3 JMP LOOP J1: JMP L1 ;转到P3.5(K1)控制的四灯连亮子程序 SETB P3.4 SETB P3.3 JMP LOOP J2: JMP L2 ;转到P3.4(K2)控制的四灯同闪子程序 SETB P3.5 SETB P3.3 JMP LOOP J3: JMP L3 ;转到P3.3(K3)控制的四灯轮流闪子程序 SETB P3.5 SETB P3.4 JMP LOOP ;四灯连亮;;;;;;;;;;;;;;;;;;;;;;;;;;;; L1: MOV P1,#0FFH CLR P1.4 mov 30h,#255 CALL DELAY CLR P1.4 CLR P1.5 mov 30H,#255 CALL DELAY CLR P1.4 CLR P1.5 CLR P1.6 MOV 30H,#255 CALL DELAY CLR P1.4 CLR P1.5 CLR P1.6 CLR P1.7 MOV 30H,#255 CALL DELAY SETB P1.4 SETB P1.5 SETB P1.6 SETB P1.7 MOV 30H,#255 CALL DELAY JNB P3.5,LOOP JMP L1 ;四灯同时亮;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; L2: CLR P1.4 CLR P1.5 CLR P1.6 CLR P1.7 MOV 30H,#255 CALL DELAY SETB P1.4 SETB P1.5 SETB P1.6 SETB P1.7 MOV 30H,#255 CALL DELAY JMP L2
;四灯轮流闪;;;;;;;;;;;;;;;;;;;;;;;;;;;; L3 : clr p1.7 MOV 30H,#255 call delay setb p1.7 MOV 30H,#255 call delay clr p1.6 MOV 30H,#255 call delay setb p1.6 MOV 30H,#255 call delay clr p1.5 MOV 30H,#255 call delay setb p1.5 MOV 30H,#255 call delay clr p1.4 MOV 30H,#255 call delay setb p1.4 MOV 30H,#255 call delay JMP L3 delay: mov r6,30h d2: mov r7,#255 djnz r7,$ djnz r6,d2 ret end 以上的程序未能实现我的需要.没有达到想要的功能! 其实要求的功能就是:一个开关控制一段功能,三个不同的开关控制各自的三个功能程序. 为何汇编语言很难编出呢!?望哪为高人指教!
「该帖子被 boya355 在 2007-9-3 22:01:20 编辑过」 poweryes 发布于 2007-9-3 6:33:45
说的是???有点看不明白的 elale 发布于 2007-9-3 16:12:14
对汇编不熟,看你程序的意思是输入高电平是转移,你开始就全部给高电平啦,肯定只能实现第一段啦。 boya355 发布于 2007-9-3 21:53:46
以上的程序未能实现我的需要.没有达到想要的功能! 其实要求的功能就是:一个开关控制一段功能,三个不同的开关控制各自的三个功能程序. 为何汇编语言很难编出呢!?望哪为高人指教! boya355 发布于 2007-9-3 22:07:00
以下是引用 poweryes 在(2007-9-3 6:33:45)的发言 说的是???有点看不明白的
以上的解释 可以明白吗:也就是想利用一个开关控制一段子程序, 三个开关想独自控制三个各自的子程序, 且不要相互干扰! 谢谢 指教! boya355 发布于 2007-9-3 22:09:39
以下是引用 elale 在(2007-9-3 16:12:14)的发言 对汇编不熟,看你程序的意思是输入高电平是转移,你开始就全部给高电平啦,肯定只能实现第一段啦。
谢谢 你的关注, 对于不用汇编, 可以使用C语言的 如何能实现我的要求呢? xjlfh 发布于 2007-9-3 22:37:38
org 000H ajmp start start:mov p1,#0ffh mov p3,#0ffh LOOP: JNB P3.5,J1 JMP LOOP JNB P3.4,J2 JMP LOOP JNB P3.3,L3 L3=J3 ?是不是错了 JMP LOOP J1: JMP L1 ;转到P3.5(K1)控制的四灯连亮子程序 SETB P3.4 SETB P3.3 JMP LOOP J2: JMP L2 ;转到P3.4(K2)控制的四灯同闪子程序 SETB P3.5 SETB P3.3 JMP LOOP J3: JMP L3 ;转到P3.3(K3)控制的四灯轮流闪子程序 SETB P3.5 SETB P3.4 JMP LOOP ;四灯连亮;;;;;;;;;;;;;;;;;;;;;;;;;;;; L1: MOV P1,#0FFH CLR P1.4 mov 30h,#255 ????????罗嗦
CALL DELAY CLR P1.4 ????多余 CLR P1.5 mov 30H,#255 ????????罗嗦 CALL DELAY CLR P1.4 ?????多余 CLR P1.5 ??????多余 CLR P1.6 MOV 30H,#255 ????????罗嗦 CALL DELAY CLR P1.4 ??????多余 CLR P1.5 ??????多余 CLR P1.6 ??????多余 CLR P1.7 MOV 30H,#255 ????????罗嗦 CALL DELAY SETB P1.4 SETB P1.5 SETB P1.6 SETB P1.7 MOV 30H,#255 ????????罗嗦 CALL DELAY JNB P3.5,LOOP JMP L1 ;四灯同时亮;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; L2: CLR P1.4 CLR P1.5 CLR P1.6 CLR P1.7 MOV 30H,#255 ????????罗嗦 CALL DELAY SETB P1.4 SETB P1.5 SETB P1.6 SETB P1.7 MOV 30H,#255 ????????罗嗦 CALL DELAY JMP L2 ;四灯轮流闪;;;;;;;;;;;;;;;;;;;;;;;;;;;; L3 : clr p1.7 MOV 30H,#255 ????????罗嗦 call delay setb p1.7 MOV 30H,#255 ????????罗嗦 call delay clr p1.6 MOV 30H,#255 ????????罗嗦 call delay setb p1.6 MOV 30H,#255 ????????罗嗦 call delay clr p1.5 MOV 30H,#255 ????????罗嗦 call delay setb p1.5 MOV 30H,#255 ????????罗嗦 call delay clr p1.4 MOV 30H,#255 ????????罗嗦 call delay setb p1.4 MOV 30H,#255 ????????罗嗦 call delay JMP L3 delay: mov r6,30h MOV R6,#255 d2: mov r7,#255 djnz r7,$ djnz r6,d2 ret end 写的太乱了,看着头晕,好好再改一下吧! boya355 发布于 2007-9-4 0:04:38
以下是引用 xjlfh 在(2007-9-3 22:37:38)的发言 K1 BIT P3.5 K2 BIT P3.4 K3 BIT P3.3 org 0 ajmp LOOP
LOOP: JNB K1,J1 LOOP1: JNB K2,J2 JNB K3,J3 JMP LOOP J1: JMP L1 ;转到P3.5(K1)控制的四灯连亮子程序 SETB K2 SETB K3 JMP LOOP J2: JMP L2 ;转到P3.4(K2)控制的四灯同闪子程序 SETB K1 SETB K3 JMP LOOP J3: JMP L3 ;转到P3.3(K3)控制的四灯轮流闪子程序 SETB K1 SETB K2 JMP LOOP ;四灯连亮;;;;;;;;;;;;;;;;;;;;;;;;;;;; L1: MOV P1,#0FFH CLR P1.4
CALL DELAY CLR P1.4 CLR P1.5 CALL DELAY CLR P1.4 CLR P1.5 CLR P1.6 CALL DELAY CLR P1.4 CLR P1.5 CLR P1.6 CLR P1.7 CALL DELAY SETB P1.4 SETB P1.5 SETB P1.6 SETB P1.7 CALL DELAY JNB K1,LOOP1 JMP L1 ;在这里,我就无法出来了,其他的L2 L3也就无法运行了 ,救救我出来吧? ;四灯同时亮;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; L2: CLR P1.4 CLR P1.5 CLR P1.6 CLR P1.7 CALL DELAY SETB P1.4 SETB P1.5 SETB P1.6 SETB P1.7 CALL DELAY JMP L2 ;四灯轮流闪;;;;;;;;;;;;;;;;;;;;;;;;;;;; L3 : clr p1.7 call delay setb P1.7 call delay clr p1.6 call delay setb p1.6 call delay clr p1. call delay setb p1.5 call delay clr p1.4 call delay setb p1.4 call delay JMP L3 delay: mov r6,#255 d2: mov r7,#255 djnz r7,$ djnz r6,d2 ret end 写的太乱了,看着头晕,好好再改一下 谢谢 你的关注!现在改了, 明白我的意思吧(我是初学 见笑了!), 我的想法是 利用一个开关能独立控制相对应的一个程序, 同一个开关可开也可关该程序(这样的各自程序可能不能叫子程序吧,因为它是没有返回的, 只能是那个对应的K键 可以停止或打开), xjlfh 发布于 2007-9-4 11:07:37
以下是引用 boya355 在(2007-9-4 0:04:38)的发言
以下是引用 xjlfh 在( 2007-9-3 22:37:38)的发言 K1 BIT P3.5 K2 BIT P3.4 K3 BIT P3.3 org 000H ajmp LOOPORG 0030H
LOOP: JNB K1,J1 JNB K2,J2 JNB K3,J3 JMP LOOP J1: JMP L1 ;转到P3.5(K1)控制的四灯连亮子程序 ; SETB K2 多余 ; SETB K3 多余
; JMP LOOP 多余
J2: JMP L2 ;转到P3.4(K2)控制的四灯同闪子程序 ; SETB K1 多余
; SETB K3 多余
; JMP LOOP 多余
J3: JMP L3 ;转到P3.3(K3)控制的四灯轮流闪子程序 ; SETB K1 多余
; SETB K2 多余
; JMP LOOP 多余
;四灯连亮;;;;;;;;;;;;;;;;;;;;;;;;;;;; L1: MOV P1,#0FFH ;可以不要,上电后本来就是置高位 CLR P1.4
CALL DELAY ; CLR P1.4 多余,置位后若没有别的命令去改变它的状态,则会一直保持最后一个命令 赋 予它的状态,以下同理。
CLR P1.5 CALL DELAY ; CLR P1.4 多余
; CLR P1.5 多余 CLR P1.6 CALL DELAY ; CLR P1.4 多余
; CLR P1.5 多余
; CLR P1.6 多余
CLR P1.7 CALL DELAY SETB P1.4 SETB P1.5 SETB P1.6 SETB P1.7 CALL DELAY JNB k1,J1 JNB k2,J2 JNB k3,j3 JMP L1 ;若要用K1直接控制,就JMP LOOP,若要在目前程序运行中由K1、K2、K3状态控制跳转,就JMP L1 ;四灯同时亮;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; L2: MOV P1,#0FH 用它更简单 ;CLR P1.4 ;CLR P1.5 ; CLR P1.6 ; CLR P1.7 CALL DELAY MOV P1,#0FFH 用它更简单 ; SETB P1.4 ; SETB P1.5 ; SETB P1.6 ;SETB P1.7 CALL DELAY JNB k1,J1 JNB k2,J2 JNB k3,j3 JMP L2 ;若要用K2直接控制,就JMP LOOP,若要在目前程序运行中由K1、K2、K3状态控制跳转,就JMP L2 ;四灯轮流闪;;;;;;;;;;;;;;;;;;;;;;;;;;;; L3 : clr p1.7 call delay setb P1.7 call delay clr p1.6 call delay setb p1.6 call delay clr p1. call delay setb p1.5 call delay clr p1.4 call delay setb p1.4 call delay JNB k1,J1 JNB k2,J2 JNB k3,j3 JMP L3 ;若要用K3直接控制,就JMP LOOP,若要在目前程序运行中由K1、K2、K3状态控制跳转,就JMP L3 delay: mov r6,#255 d2: mov r7,#255 djnz r7,$ djnz r6,d2 ret end
boya355 发布于 2007-9-4 21:41:48
 真的感谢您_xjlfh!让你这么改,效果忽然出现,这就是我想要的. 不过我改进这个程序和要求,可能还有难题!望能一如既往的关注 谢谢了
|