要求:
51单片机
两个按键。。一个加一。一个减一。
两个8段共阴极数码管显示两位数
99时加一变为00。00时减一变为99
汇编语言。
PS。。只有20分了。有点少。实在对不住。。以后有分一定追加。
下面是我在网上找到的程序。。只有加,没有减。。大神可以帮我修改一下也行。
Count EQU 30H
SP1 BIT P3.7
ORG 0
START: MOV Count,#00H
NEXT: MOV A,Count
MOV B,#10
DIV AB
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
MOV A,B
MOVC A,@A+DPTR
MOV P2,A
WT: JNB SP1,WT
WAIT: JB SP1,WAIT
LCALL DELY10MS
JB SP1,WAIT
INC Count
MOV A,Count
CJNE A,#100,NEXT
LJMP START
DELY10MS: MOV R6,#20
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
RET
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
Count EQU 30H
KEY1 BIT P3.6
KEY2 BIT P3.7
ORG 0
START: MOV Count,#00H
NEXT: MOV A,Count
MOV B,#10
DIV AB
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P2,#02H
MOV P0,A
LCALL DELAY
MOV A,B
MOVC A,@A+DPTR
MOV P2,#01H
MOV P0,A
LCALL DELAY
WT: JB KEY1,WT1
LCALL DELY10MS
JB KEY1,WT1
JNB KEY1,$
INC Count
MOV A,Count
CJNE A,#100,NEXT
MOV Count,#0
LJMP NEXT
WT1:
JB KEY2,WT2
LCALL DELY10MS
JB KEY2,WT2
JNB KEY2,$
MOV A,Count
JZ WT11
DEC Count
LJMP NEXT
WT11:
MOV Count,#99
WT2:
LJMP NEXT
DELAY:
MOV R3,#6
DELAY1:
MOV R4,#250
DJNZ R4,$
DJNZ R3,DELAY1
RET
DELY10MS: MOV R6,#20
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
RET
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
本回答被提问者采纳
按照楼主给出的程序,增加了减一的功能。
程序已经调试成功,如下:
Count EQU 30H
SP1 BIT P3.7
SP2 BIT P3.6
ORG 0
START:
MOV Count, #0
;---------------------------
M_LOOP:
CALL DISP
WT1:
JB SP1, WT2
LCALL DELY10MS
JB SP1, WT2
JNB SP1, $
INC Count
MOV A, Count
CJNE A, #100, M_LOOP
LJMP START
;---------------------------
WT2:
JB SP2, WT1
LCALL DELY10MS
JB SP2, WT1
JNB SP2, $
DEC Count
MOV A, Count
CJNE A, #255, M_LOOP
MOV Count, #99
LJMP M_LOOP
;---------------------------
DELY10MS:
MOV R6, #20
D1: MOV R7, #248
DJNZ R7, $
DJNZ R6, D1
RET
;---------------------------
DISP:
MOV A, Count
MOV B, #10
DIV AB
MOV DPTR, #TABLE
MOVC A, @A + DPTR
MOV P0, A
MOV A, B
MOVC A, @A + DPTR
MOV P2, A
RET
TABLE:
DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH
;---------------------------
END
仿真截图如下: