如下,用汇编语言编写:
利用单片机AT89S52、7个按键以及3个LED指示灯组成I/O控制实验系统。P0.0-P0.7与8个开关键相连,P1.0~P1.2与3个LED灯相连;利用按键控制LED指示灯亮与灭,完成如下功能:001 010 011 100 101 110 111
1.当P0.1开关键被按下时,P1.0~P1.2灯的状态依次为灭灭亮,即1的二进制状态001;
2.以此类推,当P0.7开关键被按下时,P1.0~P1.2灯的状态依次为亮亮亮,即7的二进制状态111;
代码如下:
ORG 0000H
START:
JNB P0.1,K2
JNB P0.2,K3
JNB P0.3,K4
JNB P0.4,K5
JNB P0.5,K6
JNB P0.6,K7
JNB P0.7,K8
SJMP START
;-------------
K2:
CALL DL10MS
JB P0.1,START
JNB P0.1,$
CLR P1.2
SJMP START
;--------------
K3:
CALL DL10MS
JB P0.2,START
JNB P0.2,$
CLR P1.1
SJMP START
;--------------
K4:
CALL DL10MS
JB P0.3,START
JNB P0.3,$
CLR P1.1
CLR P1.2
SJMP START
;--------------
K5:
CALL DL10MS
JB P0.4,START
JNB P0.4,$
CLR P1.0
SJMP START
;--------------
K6:
CALL DL10MS
JB P0.5,START
JNB P0.5,$
CLR P1.0
CLR P1.2
SJMP START
;--------------
K7:
CALL DL10MS
JB P0.6,START
JNB P0.6,$
CLR P1.0
CLR P1.1
SJMP START
;--------------
K8:
CALL DL10MS
JB P0.6,START
JNB P0.6,$
MOV P1,#0
SJMP START
;---------------
DL10MS:
MOV R6,#10
DJNZ R7,$
DJNZ R7,$
DJNZ R6,$-4
RET
;-------------
END
运行仿真没错误,但写入Proteus仿真却没有现象,求大佬帮忙看下
|