中易网

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

答案:5  悬赏:50  
解决时间 2021-01-18 13:17
  • 提问者网友:骑士
  • 2021-01-17 19:01
AT89S51单片机的P1.0~P1.3 接四个发光二极管, P1.4~P1.7 接四个开关, 编程反映对应关系
最佳答案
  • 二级知识专家网友:洎扰庸人
  • 2021-01-17 19:21
这个非常简单啊:

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追问首先感谢,但还是复杂了点,有没有语句更少的。追答;P1.3-P1.0=LED的L4-L1
;P1.7-P1.4=按键的K4-K1

LOOP: MOV A, P1 ;读入P1口
SWAP A ;交换高低半字节,用按键位状态驱动LED
ANL A, #0FH ;清零高四位(P1.7-P1.4)
ORL A, #0F0H ;置位高四位
MOV P1, A ;写入P1口
SJMP LOOP

你这人真是的。好了,这是最简单的了。
全部回答
  • 1楼网友:低音帝王
  • 2021-01-17 22:01
为什么要用汇编呢?C的要不要?
  • 2楼网友:动情书生
  • 2021-01-17 21:51
采用一楼的吧.
  • 3楼网友:你哪知我潦倒为你
  • 2021-01-17 20:36
无语
  • 4楼网友:傲气稳了全场
  • 2021-01-17 19:50
提问者追求的是:还有没有更简单的,语句更少的?
但是,提问者采纳的答案中,最后的程序,还不是最简的。
还有一条多余的指令。
最简的程序,如下:
;---------------------------------------------------------
LOOP:
MOV A, P1 ;读入P1口
ORL A, #0FH ;置位低四位
SWAP A ;交换高低半字节,用按键位状态驱动LED
MOV P1, A ;写入P1口
SJMP LOOP
;---------------------------------------------------------
这个程序,效率,比采纳答案中的程序,大约提高了 14%。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息