|
|
|
| 首页 - 电子制作
- 请指点:想用两个按键分别控制两个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
|
|
 |
| [回复者] |
林夕儿 |
 |
|
|
|
|
|
|