用户名
密码
 问题导航
·求教简单延时问题
·斑竹老大。赶快解决吧!!!我这怎么老非法推出啊?
·滚动显示 LED 点阵时钟全部制作资料(自己做)
·新年好!
·无绳电烙铁机
·用发高亮二极管做投影
·电主轴有啥技术?那么贵
·用定时器延时有什么好处?
·有没有人想过搞个无线电的遥控器呢?
·具有强大编程功能的多功能51/AVR单片机学习开发系统
·[求助]那位大哥知道AT89C51SND1经汉化的DATASHEET
·我家里的钟.程序经过仔细调节走时还比较准.没有用时钟芯片(1302之类),断电也不保存数据,仅仅用来练手而已!
·[求助] x25045能不能用P3口驱动?
·写字板该用什么材料
·DEC5402 Ver2.0开发套件 让利销售:500元/套
 
 
首页 - 电子制作 - 请指点:想用两个按键分别控制两个LED的亮灭
请指点:想用两个按键分别控制两个LED的亮灭
--   请指点:想用两个按键分别控制两个LED的亮灭
各位老师:

我的汇编学得很差,编了一个程序,用P1.0控制P2.0的LED亮灭,编得可能有点乱,但目的还是达到了.

我的问题是:再加一个按键,用P1.1控制P2.1的LED亮灭, 两个按键各自控制对应的LED而且互不影响.如何改或重编程序? 在此先谢谢了!!

loop:
jnb p1.0,led1
ajmp loop
led1:
lcall delay
jb p1.0,loop
clr p2.0
jnb p1.0,$
loop2:
jnb p1.0,led2
ajmp loop2
led2:
lcall delay
jb p1.0,loop2
setb p2.0
jnb p1.0,$
ajmp loop


delay:
mov r5,#30
delay1:mov r6,#250
djnz r6,$
djnz r5,delay1
ret
end

     
 
   

1.流程不合理,不能達到你要求 2.沒見到你操作p1.1,p2.1 3.你究竟是clr p2.0亮還是setb p2.0亮?

我也是菜鳥,故此看不明白,還請你從新整理一下發個新的上來大家討論好嗎?

[回复者] qazwsx155  
 
   

#pragma code
#include <reg51.h>
void main(void) // 主程序
{
while(1)

{

if(P1^0)//有键按下 高电平为有键按下

{

delay();//延时去抖动

if(P1^0)//有键按下

P2^0=1;//高电平点亮2.0LED

else

P2^0=0;//低电平点灭2.0LED

}

if(P1^1)//有键按下 高电平为有键按下

{

delay();//延时去抖动

if(P1^1)//有键按下

P2^1=1;//高电平点亮2.1LED

else

P2^1=0;//低电平点灭2.1LED

}

}
}

[2005-12-27 21:45:36]
[回复者] 雨嫣  
 
    樓上的挺牛,但樓主正學匯編呀,是否文不對題 ?
[回复者] 亲一下就跑  
 
   

楼主俺给弄一个你试一下,看是否要达到这样的目的?

ORG 0
MAIN:
MOV P1,#0FFH;初始化全部为高电平灯灭***
MOV P2,#0FFH;
LOOP:
JNB P1.0,L1;P1。0按下跳去执行第一个灯的控制
JNB P1.1,L2;P1。1按下跳去执行第二个灯的控制****
AJMP LOOP
L1:
ACALL DELAY;延时去抖
JB P1.0,LOOP;是抖动返回重新判断***
CPL P2.0;取反P2。0
JNB P1.0,$;等待键释放
AJMP LOOP
L2:
ACALL DELAY
JB P1.1,$
CPL P2.1
JNB P1.1,$
AJMP LOOP
DELAY:
MOV R3,#20
D1:MOV R4,#248
DJNZ R4,$
DJNZ R3,D1
RET
END

[回复者] 林夕儿  
 
@2000 - 2012