永发信息网

51单片机P1.7和P1.8分别LED1和LED2,P2.0外接一个按键。现在要实现通电LED1亮,按下LED2亮LED1灭。

答案:3  悬赏:0  手机版
解决时间 2021-11-28 09:01
  • 提问者网友:山高云阔
  • 2021-11-28 00:34
51单片机P1.7和P1.8分别LED1和LED2,P2.0外接一个按键。现在要实现通电LED1亮,按下LED2亮LED1灭。
最佳答案
  • 五星知识达人网友:七十二街
  • 2021-11-28 00:49
;试试下列程序:

KEY EQU P2.0
LED1 EQU P1.7
LED2 EQU P1.6

ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
CLR LED1 ;通电LED1亮,LED2灭。
SETB LED2
;---------------------------
LOOP:
JB KEY, $ ;等待按下
CALL DELAY ;延时
JB KEY, LOOP ;消抖

SETB LED1 ;按下LED2亮LED1灭。
CLR LED2

JNB KEY, $ ;等待释放

LOOP1:
JB KEY, $
CALL DELAY
JB KEY, LOOP1

CLR LED1 ;在按下LED1亮LED灭,
SETB LED2

JNB KEY, $

JMP LOOP
;---------------------------

DELAY:
MOV R2, #20
DJNZ R3, $
DJNZ R2, $ - 2
RET

END追问试了不行,按键开关没反应,LED1一直是亮的追答这个程序,已经试验过,没有缺陷,可以满足题目要求。

楼主说不行,就请在电路上找找原因,自行解决。追问这个是电路图,直接用实验板焊的,不知道哪里有问题,脑袋都搞大了。。。。请大侠指导下!
追答看你的电路,KEY,按下时,输入是高电平?
松开时,又是什么电平?

看你的电路,KEY,按下、松开,都是高电平。
无法区分的。

KEY,按下时,应该接地。追问电路改好已经可以了,程序功能也已经实现了。可是通电的时候2个灯都是亮的,其中一个灯是高亮,另一个是半亮的那种,按键的时候来回切换,小灯亮度也是一个特亮,另一个半亮,这个是哪里的问题?追答LED 串联 1K 的电阻,是正确的。

看你电路,不应该出现《半亮》的情况。

但是,现在出现了,就是说,焊接的,还有问题。

可能,两个接点,靠的近,之间有些导电的物质。

换用 P1.0、P1.7,离开远一些,再试试。
全部回答
  • 1楼网友:千夜
  • 2021-11-28 02:18
KEY EQU P2.0

LED1 EQU P1.7
LED2 EQU P1.8
ORG 0000H
JMP MAIN
ORG 0030H
MAIN:
CALL KEYSCAN

JMP MAIN
MAININIT:
CLR LED1

SBIT LED2

RET

KEYSCAN:
JB KEY,$
CLR LED2

SBIT LED1

JNB KEY,$
CLR LED1

SBIT LED2
RET

END;按住切换 亮灯 放开切换亮灯
  • 2楼网友:煞尾
  • 2021-11-28 00:59
端口都是0-7,没有P1.8这个端口,改一下估计就对了追问试过了 程序没问题了 可是实际电路功能没实现追答loop,loop1两个地方都对按键处理,所以按下按键时不知道是哪个地方处理,而且中断中会取反LED2,所以建议先有个处理流程方法,再来编程追问大侠能帮我写下程序吗?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯