📄 波形信号发生器程序.txt
字号:
POP DPL
POP DPH
POP PSW
LJMP TSF0
;置数子程序
;/入口参数:KYEZHI 出口参数:50H-5FH*/
ZHISU1: PUSH PSW
PUSH DPH
PUSH DPL
SETB RS0
SETB RS1
MOV DPTR,#DT1
MOV COMX,#0B8H
MOV COMY,#40H ;频
MOV JCS1CS2,#00H
LCALL DISP
MOV DPTR,#DT2
MOV COMX,#0B8H
MOV COMY,#50H ;率
MOV JCS1CS2,#00H
LCALL DISP
MOV DPTR,#TABF2
MOV COMX,#0B8H
MOV COMY,#60H ;:
MOV JCS1CS2,#00H
LCALL DISP
MOV R6,#00H
MOV R5,#40H
MOV R4,#00H;计算输入数的个数
MOV R0,#50H
LOOOP1: LCALL KEY
MOV KEYZHI,A
MOV A,4EH ; 判是否有键按下
CJNE A,#00H,LOOOP1
MOV A,KEYZHI
CJNE A,#0EH,KU1
LJMP YY1
KU1: MOV @R0,KEYZHI
LCALL FINDTAB
MOV COMX,#0BAH
MOV COMY,R5
MOV JCS1CS2,R6
LCALL DISP
MOV A,R5
ADD A,#10H
MOV R5,A
INC R0
INC R4
MOV A,R4
CJNE A,#04H,RRR1
MOV R6,#01H
MOV R5,#40H
RRR1: LJMP LOOOP1
YY1: MOV A,R4
CJNE A,#00H,KS1
LJMP TSF0
KS1: MOV DPTR,#DT3
MOV COMX,#0BCH
MOV COMY,#40H
MOV JCS1CS2,#00H
LCALL DISP
MOV A,R4
ZZ1: CJNE A,#01H,ZL1
DEC 50H
LJMP ZS1
ZL1: CJNE A,#02H,ZM1
DEC 50H
DEC 51H
MOV R1,50H
MOV 50H,51H
MOV 51H,R1
LJMP ZS1
ZM1: CJNE A,#03H,ZN1
DEC 52H
DEC 51H
DEC 50H
MOV R1,50H
MOV 50H,52H
MOV 52H,R1
LJMP ZS1
ZN1: CJNE A,#04H,ZO1
DEC 53H
DEC 52H
DEC 51H
DEC 50H
MOV R1,50H
MOV R2,51H
MOV 50H,53H
MOV 51H,52H
MOV 52H,R2
MOV 53H,R1
LJMP ZS1
ZO1: CJNE A,#05H,ZP1
DEC 54H
DEC 53H
DEC 52H
DEC 51H
DEC 50H
MOV R1,50H
MOV R2,51H
MOV 50H,54H
MOV 51H,53H
MOV 53H,R2
MOV 54H,R1
LJMP ZS1
ZP1: CJNE A,#06H,ZA1
DEC 55H
DEC 54H
DEC 53H
DEC 52H
DEC 51H
DEC 50H
MOV R1,50H
MOV R2,51H
MOV R3,52H
MOV 50H,55H
MOV 51H,54H
MOV 52H,53H
MOV 53H,R3
MOV 54H,R2
MOV 55H,R1
LJMP ZS1
ZA1: CJNE A,#07H,ZB1
DEC 56H
DEC 55H
DEC 54H
DEC 53H
DEC 52H
DEC 51H
DEC 50H
MOV R1,50H
MOV R2,51H
MOV R3,52H
MOV 50H,56H
MOV 51H,55H
MOV 52H,54H
LJMP ZS1
ZB1: CJNE A,#08H,$
DEC 57H
DEC 56H
DEC 55H
DEC 54H
DEC 53H
DEC 52H
DEC 51H
DEC 50H
MOV R1,50H
MOV R2,51H
MOV R3,52H
MOV R4,53H
MOV 50H,57H
MOV 51H,56H
MOV 52H,55H
MOV 53H,54H
MOV 54H,R4
MOV 55H,R3
MOV 56H,R2
MOV 57H,R1
ZS1: PUSH PSW
MOV R0,#50H
MOV R1,#4FH
LCALL BCDHEX
MOV 4CH, 5CH ;高位不用置零
MOV 4DH, 5DH
MOV 4EH, 5EH
MOV 4FH, 5FH
MOV 5CH, #00H
MOV 5DH, #0AH ;置数值先送入4D~4F单元
MOV 5EH, #0D9H
MOV 5FH, #0C7H
LCALL MULNM
MOV 4AH,5AH
MOV 4BH,5BH
MOV 4CH,5CH
MOV 4DH,5DH
MOV 4EH,5EH
MOV 4FH,5FH
MOV 5AH,#00H
MOV 5BH,#00H
MOV 5CH,#00H
MOV 5DH,#0FH
MOV 5EH,#42H
MOV 5FH,#40H
LCALL DIVD2
;送频率字
PLZ1: CLR P1.7
MOV P0,4FH
NOP
LJMP $
POP DPL
POP DPH
POP PSW
LJMP TSF0
;双口RAM写字程序
;入口:00H~OFFH单元的内容写入
GRAM EQU 0C0H ;双口RAM高位地址
DRAM EQU 08H ;双口RAM地位地址
WRITERAM: MOV R7,#08H ;循环8次,写8个单元
MOV R1,#50H
MOV P2,#GRAM
MOV R0,#DRAM
AA: MOV P0,R0
MOV A,@R1
MOVX @R0,A
INC R1
INC R0
MOVX @R0,A
DJNZ R7,AA
RET
;读双口RAM字程序
;读回的内容存放在00H~0FFH单元中
GGRAM EQU 0C0H ;双口RAM高位地址
DDRAM EQU 08H ;双口RAM地位地址
READRAM: MOV R7, #08H
MOV R1, #40H
MOV P2, #GGRAM
MOV R0, #DDRAM
BB: MOV P0, R0
MOVX A, @R0
MOV @R1, A
INC R0
INC R1
DJNZ R7, BB
RET
AD0 EQU 30H
AD1 EQU 31H
AD2 EQU 32H
AD3 EQU 33H
AD4 EQU 34H
AD5 EQU 35H
AD6 EQU 36H
ADA EQU 4FH
ADB EQU 5FH
ADC EQU 4DH
ADDV EQU 5DH
;非压缩的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
;乘法子程序
MULNM: NOP ; N BYTES X M BYTES = N+M BYTES HERE N=4;M=4
MOV 30H,#07H ; (4C,4D,4E,4FH)*(5C,5D,5E,5FH)=(58--5FH)
MOV 31H,#08H
MULTT: MOV A,AD0
MOV R3,AD1
MOV R2,A
ADD A,R3
INC A
MOV AD2,A
MOV A,#ADB
CLR C
SUBB A,R3
MOV AD6,A
MOV R1,A
SUBB A,R2
MOV AD5,A
INC R2
MULNMZ: MOV @R1,#00H
DEC R1
DJNZ R2,MULNMZ
MULNMB: MOV R2,AD0
MOV R1,AD6
MOV R0,#ADA
CLR 00H
MULNML: MOV A,ADB
JZ MULNMD
MOV B,@R0
MUL AB
ADD A,@R1
MOV @R1,A
JNB 00H,MULNM1
INC B
MULNM1: MOV A,B
DEC R1
ADDC A,@R1
MOV @R1,A
MOV 00H,C
DEC R0
DJNZ R2,MULNML
MULNMD: MOV R0,AD5
CLR A
MOV R2,AD2
MULNMS: XCH A,@R0
INC R0
DJNZ R2,MULNMS
DJNZ R3,MULNMB
NOP
RET
;除法子程序
DIVD2: NOP ;2N BYTE / N BYTE = N BYTE ,HERE N=3 IN 31H
MOV 30H,#0CH ;(4A,4B,4C,4D,4E,4FH)/(5D,5E,5FH)=(4D,4E,4FH)
MOV 31H,#06H
DIVPP: MOV A,AD1
MOV R2,A
RL A
RL A
RL A
MOV R3,A
CLR 0F0H
CLR C
MOV A,#ADA
SUBB A,R2
MOV AD3,A
MOV R1,#ADB
DIVMB2B: MOV A,@R1
JNZ DIVM2B
DEC R1
DJNZ R2,DIVMB2B
SETB 0F0H
RET
DIVM2B: MOV R2,AD1
MOV R1,#ADB
MOV R0,AD3
DIVM2L: MOV A,@R0
SUBB A,@R1
DEC R0
DEC R1
DJNZ R2,DIVM2L
JNC DIVM20
DIVM2D: LCALL SHIL1
JC DIVM2S
DIVM2C: MOV R0,AD3
MOV R1,#ADB
MOV R2,AD1
DIVM2CL: MOV A,@R0
SUBB A,@R1
DEC R0
DEC R1
DJNZ R2,DIVM2CL
JC DIVM2E
DIVM2S: INC ADA
MOV R2,AD1
MOV R0,AD3
MOV R1,#ADB
LCALL SUBMBB
DIVM2E: DJNZ R3,DIVM2D
RET
DIVM20: SETB 0F0H
RET
SHIL1: MOV R2,AD0
MOV R0,#ADA
SHIL1B: CLR C
SHILL: MOV A,@R0
RLC A
MOV @R0,A
DEC R0
DJNZ R2,SHILL
RET
SUBMBB: CLR C
SUBMB1: MOV A,@R0
SUBB A,@R1
MOV @R0,A
DEC R0
DEC R1
DJNZ R2,SUBMB1
RET
END
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -