📄 sukong.asm
字号:
ADD A,#10H
MOV R5,A
INC R0
INC R4
MOV A,R4
CJNE A,#01H,RRRE1
MOV R6,#01H
MOV R5,#40H
RRRE1: LJMP LOOOPE1
YYE1: MOV A,R4
CJNE A,#00H,KS1
LJMP TSF0
KS1: MOV DPTR, #GG
MOV COMXSTART,#0BCH
MOV COMXEND, #0BDH ;(ma)
MOV COMYSTART,#50H
MOV COMYEND, #5FH
MOV JCS1CS2, #01H
LCALL DISP
;步进值的加,减(按制,按C键为加,按D键为减)
LOOOPE11: LCALL KEY
MOV KEYZHI,A
CJNE A,#00H,YU
LJMP LOOOPE11
YU: MOV A,KEYZHI
CJNE A,#0DH,SUB1 ;按下C键实现步进加
LJMP DSA
SUB1: LJMP SUBB1
DSA: MOV CY,#00H ;两字节和一字节的加法
MOV A,48H ;48h单元内容为步进值,56,57单元为给定值
ADDC A,57H
MOV 57H,A
MOV A,56H
ADDC A,#00H
MOV 56H,A
LCALL DAC08322
;LCALL ADC0809
MOV 30H,57H ;所加和高位放在31H单元,30h为低位
MOV 31H,56H
LCALL HEXBCD ;调十六进制转换十进制的子程序
MOV A,41H ;转换后的值放入40,41h单元
ANL A,#0F0H ;拆字把压缩的BCD转换成非压缩的BCD
;转换后放入50--53h单元(53为高位)
SWAP A
MOV 53H,A
MOV A,41H
ANL A,#0FH
MOV 52H,A
MOV A,40H
ANL A,#0F0H
SWAP A
MOV 51H,A
MOV A,40H
ANL A,#0FH
MOV 50H,A
MOV R6,#00H
MOV R5,#70H
MOV R4,#04H;显示数的个数
MOV R3,#00H
MOV R0,#53H
KUE01: MOV A,@R0
INC A
MOV KEYZHI,A
LCALL FINDTAB
MOV COMXSTART,#0B8H
MOV COMXEND,#0B9H
MOV COMYSTART,R5
MOV A,#0FH
ADD A,R5
MOV COMYEND,A
MOV JCS1CS2,R6
LCALL DISP
MOV A,R5
ADD A,#10H
MOV R5,A
DEC R0
INC R3
MOV A,R3
CJNE A,#01H,RRRE01
MOV R6,#01H
MOV R5,#40H
RRRE01: DJNZ R4,KUE01
MOV DPTR, #GG
MOV COMXSTART,#0B8H
MOV COMXEND, #0B9H ;(ma)
MOV COMYSTART,#70H
MOV COMYEND, #7FH
MOV JCS1CS2, #01H
LCALL DISP
; SJMP $
WWW: LCALL ADC0809 ;读取实测值
;MOV 60H,#0C8H
MOV 30H,60H ;所加和高位放在31H单元,30h为低位
MOV 31H,#00H
LCALL ADC0809 ;读取实测值
;MOV 60H,#0C8H
MOV 30H,60H ;所加和高位放在31H单元,30h为低位
MOV 31H,#00H
LCALL HEXBCD ;调十六进制转换十进制的子程序
MOV A,41H ;转换后的值放入40,41h单元
ANL A,#0F0H ;拆字把压缩的BCD转换成非压缩的BCD
;转换后放入50--53h单元(53为高位)
SWAP A
MOV 63H,A
MOV A,41H
ANL A,#0FH
MOV 62H,A
MOV A,40H
ANL A,#0F0H
SWAP A
MOV 61H,A
MOV A,40H
ANL A,#0FH
MOV 60H,A
MOV R0, #STEST
MOV A, @R0
LCALL FINDTAB1
MOV COMXSTART,#0BAH
MOV COMXEND, #0BBH
MOV COMYSTART,#70H
MOV COMYEND, #7FH
MOV JCS1CS2, #00H
LCALL DISP
DEC R0
MOV A, @R0
LCALL FINDTAB1
MOV COMXSTART,#0BAH
MOV COMXEND, #0BBH
MOV COMYSTART,#40H
MOV COMYEND, #4FH
MOV JCS1CS2, #01H
LCALL DISP
DEC R0
MOV A, @R0
LCALL FINDTAB1
MOV COMXSTART,#0BAH
MOV COMXEND, #0BBH
MOV COMYSTART,#50H
MOV COMYEND, #5FH
MOV JCS1CS2, #01H
LCALL DISP
DEC R0
MOV A, @R0
LCALL FINDTAB1
MOV COMXSTART,#0BAH
MOV COMXEND, #0BBH
MOV COMYSTART,#60H
MOV COMYEND, #6FH
MOV JCS1CS2, #01H
LCALL DISP
LJMP LOOOPE11
;步进值减运算程序
SUBB1: MOV A,KEYZHI
CJNE A,#0EH,RRR ;按下D键实现步进减
LJMP OI
RRR: MOV A,KEYZHI
CJNE A,#10H,LPE11
MOV SP, #90H;
MOV PSW, #00H;
MOV R0, #20H
MOV R7, #96
CLR A
LOOPG: MOV @R0, A
INC R0
DJNZ R7, LOOPG
LJMP TSF0
LPE11: LJMP LOOOPE11
OI: CLR CY
MOV A,57H
SUBB A,48H
MOV 57H,A
JNC LQQ
DEC 56H
LQQ: LCALL DAC08322
MOV 30H,57H
MOV 31H,56H
LCALL HEXBCD
MOV A,41H
ANL A,#0F0H
SWAP A
MOV 53H,A
MOV A,41H
ANL A,#0FH
MOV 52H,A
MOV A,40H
ANL A,#0F0H
SWAP A
MOV 51H,A
MOV A,40H
ANL A,#0FH
MOV 50H,A
MOV R6,#00H;用于判是在左,还是在右显示
MOV R5,#70H;显示的起始列
MOV R4,#04H;显示数的个数
MOV R3,#00H
MOV R0,#53H;显示数的首地此
KUE012: MOV A,@R0
INC A
MOV KEYZHI,A
LCALL FINDTAB
MOV COMXSTART,#0B8H
MOV COMXEND,#0B9H
MOV COMYSTART,R5
MOV A,#0FH
ADD A,R5
MOV COMYEND,A
MOV JCS1CS2,R6
LCALL DISP
MOV A,R5
ADD A,#10H
MOV R5,A
DEC R0
INC R3
MOV A,R3
CJNE A,#01H,RRRE012
MOV R6,#01H
MOV R5,#40H
RRRE012: DJNZ R4,KUE012
MOV DPTR, #GG
MOV COMXSTART,#0B8H
MOV COMXEND, #0B9H ;(ma)
MOV COMYSTART,#70H
MOV COMYEND, #7FH
MOV JCS1CS2, #01H
LCALL DISP
LJMP WWW
LJMP LOOOPE11
;数置转换区:
SZZH: MOV R0,#50H ;十进制数转换成十六进制数(转换后存入56,57单元)
MOV R1,#4FH
LCALL BCDHEX
;MOV 5FH,#80H
MOV 56H,5FH ;56存放高位
;DAC0832子程序
DAC0832: MOV R0,#56H
MOV DPTR,#0000H
MOV A,@R0
MOVX @DPTR,A
RET
DAC08322: MOV R0,#57H
MOV DPTR,#0000H
MOV A,@R0
MOVX @DPTR,A
RET
;读取实测值:
ADC0809:SETB P1.2 ;
SETB P1.1 ;M口控制
SETB P1.0
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
CLR P1.0 ;CLR控制
LCALL READRAM
RET
;非压缩的BCD码转换成十六数
BCDHEX :
MOV 4CH,#00H
MOV 4DH,#00H
MOV 4EH,#10H
MOV 4FH,#00H
MOV R7,#04H
KL: MOV A,@R0
MOV @R1,A
INC R0
MOV A,@R0
SWAP A
ORL A,@R1
MOV @R1,A
INC R0
DEC R1
DJNZ R7,KL
NOP ; N BYTES COMPRESSED BCD CODES TO M BYTES HEX CODES
MOV 30H,#07H ; HERE N=M=3 BCD(4C,4D,4E,4FH)--HEX(5C,5D,5E,5FH)
MOV 31H,#07H
MOV R1,#ADB
MOV R2,AD1
MOV R3,AD0
MOV A,#ADA
CLR C
SUBB A,R3
INC A
MOV R0,A
DBNZ: MOV @R1,#00H
DEC R1
DJNZ R2,DBNZ
SJMP DBNB
DBNJ: MOV R1,#ADB
MOV R2,AD1
CLR 00H
CLR A
DBNM: XCH A,@R1
MOV B,#64H
MUL AB
MOV C,00H
ADDC A,@R1
MOV @R1,A
MOV 00H,C
MOV A,B
DEC R1
DJNZ R2,DBNM
DBNB: CLR A
XCHD A,@R0
XCH A,@R0
SWAP A
MOV B,#0AH
MUL AB
ADD A,@R0
INC R0
DBNA: MOV R2,AD1
DEC R2
MOV R1,#ADB
ADD A,@R1
MOV @R1,A
DBNL: DEC R1
CLR A
ADDC A,@R1
MOV @R1,A
DJNZ R2,DBNL
DJNZ R3,DBNJ
NOP
RET
;十六进制数转换成十进制数子程序
HEXBCD : NOP ; 7 BYTE HEX TO 8 BYTE BCD : HEX(3XH-30H)-->BCD(4XH-40H)
MUBTD: MOV R0,#40H
MOV R7,#08H
CLR A
LOPP1: MOV @R0,A
INC R0
DJNZ R7,LOPP1
MOV R7,#38H
LOOP4: MOV R1,#30H
MOV R6,#07H
CLR C
LOPP2: MOV A,@R1
RLC A
MOV @R1,A
INC R1
DJNZ R6,LOPP2
MOV R5,#08H
MOV R0,#40H
LOOP3: MOV A,@R0
ADDC A,@R0
DA A
MOV @R0,A
INC R0
DJNZ R5,LOOP3
DJNZ R7,LOOP4
RET
;读双口RAM字程序
;读回的内容存放在00H~0FFH单元中
GGRAM EQU 0C0H ;双口RAM高位地址
DDRAM EQU 03H ;双口RAM地位地址
READRAM: MOV R7, #08H
MOV R1, #60H
MOV P2, #GGRAM
MOV R0, #DDRAM
BB: MOV P0, R0
MOVX A, @R0
MOV @R1, A
INC R0
INC R1
DJNZ R7, BB
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -