AT89S51单片机的P1.0~P1.3 接四个发光二极管, P1.4~P1.7 接四个开关, 编程反映对应关系

2024-07-27 13:00:20
推荐回答(5个)
回答1:

提问者追求的是:还有没有更简单的,语句更少的?

但是,提问者采纳的答案中,最后的程序,还不是最简的。
还有一条多余的指令。

最简的程仿咐序,如下:
;---------------------------------------------------------

LOOP:
MOV A, P1 ;读入P1口
ORL A, #0FH ;置位低四位
SWAP A ;交换高低半字节,用按键位状态驱动LED
MOV P1, A ;写入P1口
SJMP LOOP

;---------------------------------------------------------

这个程序,早大颤效率,比采纳答陆败案中的程序,大约提高了 14%。

回答2:

这肢族个非常仔喊简单啊:

L1 EQU P1.0 ;LED1
L2 EQU P1.1 ;LED2
L3 EQU P1.2 ;LED3
L4 EQU P1.3 ;LED4
ANK1 EQU P1.4 ;按键1
ANK2 EQU P1.5 ;按念饥野键2
ANK3 EQU P1.6 ;按键3
ANK4 EQU P1.7 ;按键4

ORG 0100H

MOV P1, #0FFH
LOP10: JB ANK1, LOP11
CLR L1
SJMP LOP20
LOP11: SETB L1

LOP20: JB ANK2, LOP21
CLR L2
SJMP LOP30
LOP21: SETB L2

LOP30: JB ANK3, LOP31
CLR L3
SJMP LOP40
LOP31: SETB L3

LOP40: JB ANK4, LOP41
CLR L4
SJMP LOP10
LOP41: SETB L4
SJMP LOP10

END

回答3:

为什么要用汇编呢?C的要不要?

回答4:

采用一楼的吧.

回答5:

无语