📄 aaa.txt
字号:
SDDD DATA 30H
MC1 DATA 31H
MC2 DATA 32H
MC3 DATA 33H
MC4 DATA 34H
MC5 DATA 35H
MC6 DATA 36H
MC7 DATA 37H
MC8 DATA 38H
MC9 DATA 39H
MC10 DATA 3AH
CJDD DATA 40H
XS1 DATA 41H
XS2 DATA 42H
XS3 DATA 43H
K_ENTER BIT P1.0
K_JIA BIT P1.1
K_JIAN BIT P1.2
ORG 0000H
LJMP MAIN
ORG 0013H
LCALL INT1
ORG 001BH
LCALL T1
ORG 0100H
MAIN:
MOV SP,#60H ;给堆栈指针赋初值
MOV TMOD,#14H ;定时器1在模式1下工作、计数器0工作在模式0
MOV TL1,#0B0H ;定时器每50ms产生一次溢出
MOV TH1,#3CH
SETB ET1 ;使能定时器1中断
SETB IT1;边沿触发
SETB EX1;开外部中断1
SETB EA ;使能总中断
SETB TR1 ;开始计时
MOV TL0,#00H
MOV TH0,#00H
SETB TR0 ;开始计数
MOV R5,#0AH
MOV R6,#0FFH
MOV R7,#78H
MOV R0,# MC1
CLR P1.7
MOV SDDD,#64H
MOV CJDD,#78H
MOV MC1,#78H
MOV MC2,#00H
MOV MC3,#00H
MOV MC4,#00H
MOV MC5,#00H
MOV MC6,#00H
MOV MC7,#00H
MOV MC8,#00H
MOV MC9,#00H
MOV MC10,#00H
LOOP:
MOV A,MC1
ADD A,MC2
ADD A,MC3
ADD A,MC4
ADD A,MC5
ADD A,MC6
ADD A,MC7
ADD A,MC8
ADD A,MC9
ADD A,MC10
MOV CJDD,A
LCALL JPCL
MOV R2,CJDD
LCALL SJCL ;数据处理程序
LCALL DISPLAY ;调用数码管显示子程序
LCALL DIANJI
AJMP LOOP
T1:
PUSH PSW
PUSH ACC
DJNZ R7,TC1
MOV R7,#78H
MOV @R0,TL0
INC R0
MOV TL0,#00H
MOV TH0,#00H
CJNE R0,#3BH,TC1
MOV R0,# MC1
TC1:
MOV TL1,#0B0H
MOV TH1,#3CH
POP ACC
POP PSW
RETI
INT1:
PUSH PSW
PUSH ACC
SETB P1.7
POP ACC
POP PSW
RETI
JPCL:
JB K_ENTER,QUIT
LCALL K_DELAY
JB K_ENTER,QUIT
LOOP2:
MOV R2,SDDD
LCALL SJCL
LCALL DISPLAY
JB K_JIA,QUIT1
LCALL K_DELAY
JB K_JIA,QUIT1
LCALL JIA
QUIT1:
JB K_JIAN,QUIT0
LCALL K_DELAY
JB K_JIAN,QUIT0
LCALL JIAN
QUIT0:
DJNZ R5,LOOP2
MOV R5,#0AH
DJNZ R6,LOOP2
QUIT:
MOV R5,#0AH
MOV R6,#0FFH
RET
JIA:
MOV A,SDDD
INC A
MOV SDDD,A
CJNE A,#96H,TC2
MOV SDDD,#14H
TC2:
MOV R5,#00AH
MOV R6,#0FFH
RET
JIAN:
MOV A,SDDD
DEC A
MOV SDDD,A
CJNE A,#14H,TC3
MOV SDDD,#96H
TC3:
MOV R5,#0AH
MOV R6,#0FFH
RET
K_DELAY:
SETB PSW.4
SETB PSW.3
MOV R5,#0C8H
JOOP1: MOV R4,#0FFH
JOOP2: DJNZ R4,JOOP2
DJNZ R5,JOOP1
CLR PSW.4
CLR PSW.3
RET
SJCL:
MOV A,R2
MOV B,#64H
DIV AB
MOV XS1,A
MOV A,#0AH
XCH A,B
DIV AB
MOV XS2,A
MOV XS3,B
RET
DIANJI:
CLR C
MOV A,CJDD
CJNE A,SDDD,LOOP3
CLR P1.6
CLR P1.5
AJMP TC4
LOOP3:
JC LOOP4
SUBB A,SDDD
CJNE A,#05H,LOOP5
AJMP TC4
LOOP5:
JC TC4
CLR P1.6
SETB P1.5
AJMP TC4
LOOP4:
MOV A,SDDD
SUBB A,CJDD
CJNE A,#05H,LOOP6
AJMP TC4
LOOP6:
JC TC4
SETB P1.6
CLR P1.5
TC4:
RET
DISPLAY:
MOV DPTR,#DISTAB
MOV R3,#01H
MOV R1,# XS1
DPLOP:
MOV A,@R1
MOVC A,@A+DPTR
MOV P2,R3
MOV P0,A
MOV A,R3
RL A
MOV R3,A
INC R1
LCALL DS1M
CJNE R3,#08H,DPLOP
MOV P0,#000H ;一次显示结束,P0口复位
MOV P2,#000H ;P2口复位
RET
DS1M:
SETB PSW.4
SETB PSW.3
MOV R7,#05H
JOOP0:
MOV R6,#64H
JOOP:
DJNZ R6,JOOP
DJNZ R7,JOOP0
CLR PSW.4
CLR PSW.3
RET
;数码管TAB
DISTAB:
DB 03FH ;0
DB 006H ;1
DB 05BH ;2
DB 04FH ;3
DB 066H ;4
DB 06DH ;5
DB 07DH ;6
DB 007H ;7
DB 07FH ;8
DB 06FH ;9
DB 000H ;NONE
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -