;P2 外接八个按键,P1 外接八个 LED
;一个按键对应控制一个灯,比如 P2.0 只控制 P1.0。
;按一下键,对应的 LED 亮灭转换一次
;不按则保持状态,常亮或常灭
;题目链接:http://zhidao.baidu.com/question/1753935368330886868.html
;做而论道编写的程序如下:
ORG 0000H
LJMP START
ORG 000BH
MOV TH0, #HIGH(65536 - 10000) ;10ms@12MHz
MOV TL0, #LOW(65536 - 10000)
MOV A, P2
CPL A
MOV B, A
XRL A, 21H
ANL A, 21H
MOV 22H, A
MOV 21H, B
XRL 20H, A
MOV P1, 20H
RETI
;---------------------------------
START:
MOV TMOD, #01H
MOV TH0, #HIGH(65536 - 10000) ;10ms@12MHz
MOV TL0, #LOW(65536 - 10000)
SETB TR0
MOV IE, #82H
LOP:SJMP LOP
END
电路图可见:
http://hi.baidu.com/do_sermon/item/20cc5fc03aa9c63599b4984b
本程序完全符合题目要求,但是并没有被提问者选中。
提问者选中的程序,比做而论道写的,罗嗦的也太多了。
该程序的作者,对题目要求都理解不了,甚至说题目有矛盾。
当其故作高深的提出建议后,由此就得到了提问者的认同。
感兴趣的网友,可以打开题目链接,看看两个程序功能,相差多少。
其实,本程序,还可以更简单一些:
ORG 0000H
MOV A, P2
CPL A
MOV B, A
XRL A, 21H ;C_T
ANL A, 21H ;
MOV 21H, B ;C_L
XRL P1, A
DJNZ R7, $
DJNZ R6, $ - 2
JMP 0000H
END
做而论道写在答案中的程序,比这个稍有复杂,那是从上一个程序复制过来的。
因为急着写答案,也就没有特意进行精简。
即使这样,也还是比选中的答案,简单的多。