资源描述
汇编程序
01:AD转换器 此为0.01精度
ORG 0000H
LJMP MAIN
ORG 0013H
LJMP LOOP
MAIN:MOV SP,#30H
SETB IT1
SETB EA
SETB EX1
MOV DPTR,#0FEF8H
MOVX @DPTR,A
HERE:LCALL DISPLAY
AJMP HERE
LOOP:MOV DPTR,#0FEF8H
MOVX A,@DPTR
MOVX @DPTR,A
LCALL DSP ;对接收的数据进行处理
LCALL DSP1
LCALL DISPLAY ;显示转换的数据
LJMP LOOP
DSP: MOV B,#100
MUL AB
MOV R7,B
MOV R6,A
MOV R5,#00H
MOV R4,#33H
MOV R3,#00H
MOV R2,#00H
LCALL DIV2BY
MOV R5,#00H
MOV R4,#64H
MOV R3,#00H
MOV R2,#00H
LCALL DIV2BY
MOV 73H,R6 ;百位电压值
MOV A,R3
MOV R7,A
MOV A,R2
MOV R6,A
MOV R5,#00H
MOV R4,#0AH
MOV R3,#00H
MOV R2,#00H
LCALL DIV2BY
MOV 72H,R6 ;十位电压值
MOV A,R3
MOV R7,A
MOV A,R2
MOV R6,A
MOV R5,#00H
MOV R4,#01H
MOV R3,#00H
MOV R2,#00H
LCALL DIV2BY
MOV 71H,R6 ;个位电压值
RET
DIV2BY: MOV 20H,#16 ;双字节除法
DIV2B:CLR C ;商存在R7R6,余数存R3R2
MOV A,R6
RLC A
MOV R6,A
MOV A,R7
RLC A
MOV R7,A
MOV A,R2
RLC A
MOV R2,A
MOV A,R3
RLC A
MOV R3,A
CLR C
MOV A,R2
SUBB A,R4
MOV R0,A
MOV A,R3
SUBB A,R5
JC NEXT
CLR C
MOV R3,A
MOV A,R0
MOV R2,A
MOV A,R6
ADD A,#01H
MOV R6,A
MOV A,R7
ADDC A,#00H
MOV R7,A
NEXT:DJNZ 20H,DIV2B
RET
DSP1:MOV R0,#71H
MOV A,@R0
CLR C
CJNE A,#10,EXIT1 ;个位加1等于10?等于10,是则个位清零
CLR A
MOV @R0,A
INC R0 ;指向十位
MOV A,@R0
INC A ;十位加1
MOV @R0,A
CJNE A,#10,EXIT1
CLR A
MOV @R0,A
INC R0
MOV A,@R0
INC A
MOV @R0,A
CJNE A,#10,EXIT1
CLR A
MOV @R0,A
INC R0
MOV A,@R0
INC A
MOV @R0,A
CJNE A,#10,EXIT1
CLR A
MOV @R0,A
EXIT1:RET
DISPLAY:MOV R1,#74H ;指向数据显示缓冲区
MOV R5,#0FEH ;显示位选择
PLAY:MOV A,R5
MOV P2,A
MOV A,@R1
MOV DPTR,#TAB
MOVC A,@A+DPTR
CJNE R1,#73H,POW
XRL A,#80H;输出点.
POW: MOV P1,A
LCALL DL1MS
DEC R1
MOV A,R5
JNB ACC.3,ENDOUT
RL A
MOV R5,A
AJMP PLAY
ENDOUT:RET
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DL1MS:MOV R6,#20
DL1:MOV R7,#50
DL2:DJNZ R7,DL2
DJNZ R6,DL1
RET
END
DA转换实验
ORG 0000H
LJMP MAIN
MAIN: MOV SP,#30H
MOV 74H,#00H
KEY:ACALL KS;键盘扫描程序段
JNZ LK1;有键闭合
LCALL DELAY
AJMP KEY ;没有键闭合
LK1:LCALL DELAY;驱动显示程序防抖
LCALL DELAY
ACALL KS;确认有键闭合?
JNZ LK2 ;真有键闭合
LCALL DELAY;没有键闭合是误按 回去!
AJMP KEY
LK2:MOV 74H,A
LCALL DELAY
JNZ SK
AJMP KEY;不是!不与理睬
KS:MOV A,P1;键盘扫描子程序
CPL A
ANL A,#0FFH
RET
SK: ACALL KS
JNZ SK
LCALL DELAY
LCALL DELAY
ACALL KS
JNZ SK
MOV A,74H
JB ACC.0,MAIN1
JB ACC.1,MAIN2
JB ACC.2,MAIN3
JB ACC.3,MAIN4
JB ACC.4,MAIN5
LCALL DELAY
AJMP KEY
MAIN1:MOV DPTR,#7000H;方波
MOV R0,#00H
ABCD: MOV A,R0
MOVX @DPTR,A
INC R1
MOV R7,P1
CJNE R7,#0FFH,KEY
XYZ: CJNE R1,#10,ABCD
CPL A
MOV R0,A
AJMP ABCD
MAIN2:MOV DPTR,#7000H;锯齿波
MOV R0,#00H
ABCD2:MOV A,R0
MOVX @DPTR,A
INC R0
MOV R7,P1
CJNE R7,#0FFH,KEY
LJMP ABCD2
MAIN3:MOV DPTR,#7000H ;三角波
MOV R0,#00H
ABCD3:MOV A,R0
MOVX @DPTR,A
INC R0
CJNE R0,#0FFH,ABCD3
MOV R7,P1
CJNE R7,#0FFH,CNM
ABCF3:DEC R0
MOV A,R0
MOVX @DPTR,A
CJNE R0,#00H,ABCF3
MOV R7,P1
CJNE R7,#0FFH,CNM
AJMP ABCD3
MAIN4:MOV DPTR,#7000H ;正弦波
MOV R0,#00H
AAA:MOV A,R0
INC R0
MOV DPTR,#CCC
MOVC A,@A+DPTR
MOV DPTR,#5000H
MOVX @DPTR,A
CJNE R0,#100,AAA
MOV R7,P1
CJNE R7,#0FFH,CNM
LJMP BBB
BBB:MOV A,R0
DEC R0
MOV DPTR,#CCC
MOVC A,@A+DPTR
MOV DPTR,#5000H
MOVX @DPTR,A
CJNE R0,#00,BBB
MOV R7,P1
CJNE R7,#0FFH,CNM
LJMP AAA
CNM:LJMP KEY
MAIN5:MOV DPTR,#7000H;梯形波
MOV R0,#00H
ABCD4:MOV A,R0
MOVX @DPTR,A
INC R0
CJNE R0,#064H,ABCD4
MOV R1,#0FFH
AAA1: NOP
DJNZ R1,AAA1
ABCF4:DEC R0
MOV A,R0
MOVX @DPTR,A
CJNE R0,#00H,ABCF4
MOV R1,#0FFH
AAA2: NOP
DJNZ R1,AAA2
MOV R7,P1
CJNE R7,#0FFH,CNM
JMP ABCD4
DELAY:MOV R6,#0AH
LOOP7:MOV R4,#64H
LOOP8:NOP
NOP
NOP
DJNZ R4,LOOP8
DJNZ R6,LOOP7
RET
CCC:DB 00H,00H,01H,02H,04H,06H,09H,0CH,10H,14H
DB 18H,1DH,23H,28H,2EH,35H,3BH,42H,49H,51H
DB 58H,60H,68H,70H,77H,80H,88H,8FH,97H,9FH
DB 0A7H,0AEH,0B6H,0BDH,0C4H,0CAH,0D1H,0D7H,0DCH,0E2H
DB 0E7H,0EBH,0EFH,0F3H,0F6H,0F9H,0FBH,0FDH,0FEH,0FFH
DB 0FFH,0FFH,0FEH,0FDH,0FBH,0F9H,0F6H,0F3H,0EFH,0EBH
DB 0E7H,0E2H,0DCH,0D7H,0D1H,0CAH,0C4H,0BDH,0B6H,0AEH
DB 0A7H,9FH,97H,8FH,88H,80H,77H,70H,68H,60H
DB 58H,51H,49H,42H,3BH,35H,2EH,28H,23H,1DH
DB 18H,14H,10H,0CH,09H,06H,04H,02H,01H,00H
END
AD转换器 此为0.001精度
ORG 0000H
LJMP MAIN
ORG 0013H
LJMP LOOP
MAIN:MOV SP,#30H
SETB IT1
SETB EA
SETB EX1
MOV DPTR,#0FEF8H
MOVX @DPTR,A
HERE:LCALL DISPLAY
AJMP HERE
LOOP:MOV DPTR,#0FEF8H
MOVX A,@DPTR
MOVX @DPTR,A
LCALL DSP ;对接收的数据进行处理
LCALL DSP1
LCALL DISPLAY ;显示转换的数据
LJMP LOOP
DSP: MOV B,#196
MUL AB
MOV R7,B
MOV R6,A
MOV R3,#00H
MOV R2,#00H
MOV R5,#27H
MOV R4,#10H
LCALL DIV2BY
MOV 73H,R6 ;千位电压值
MOV A,R3
MOV R7,A
MOV A,R2
MOV R6,A
MOV R5,#03H
MOV R4,#0E8H
MOV R3,#00H
MOV R2,#00H
LCALL DIV2BY
MOV 72H,R6 ;百位电压值
MOV A,R3
MOV R7,A
MOV A,R2
MOV R6,A
MOV R5,#00H
MOV R4,#64H
MOV R3,#00H
MOV R2,#00H
LCALL DIV2BY
MOV 71H,R6 ;十位电压值
MOV A,R3
MOV R7,A
MOV A,R2
MOV R6,A
MOV R5,#00H
MOV R4,#0AH
MOV R3,#00H
MOV R2,#00H
LCALL DIV2BY
MOV 70H,R6 ;个位电压值
RET
DIV2BY: MOV 20H,#16 ;双字节除法
DIV2B:CLR C ;商存在R7R6,余数存R3R2
MOV A,R6
RLC A
MOV R6,A
MOV A,R7
RLC A
MOV R7,A
MOV A,R2
RLC A
MOV R2,A
MOV A,R3
RLC A
MOV R3,A
CLR C
MOV A,R2
SUBB A,R4
MOV R0,A
MOV A,R3
SUBB A,R5
JC NEXT
CLR C
MOV R3,A
MOV A,R0
MOV R2,A
MOV A,R6
ADD A,#01H
MOV R6,A
MOV A,R7
ADDC A,#00H
MOV R7,A
NEXT:DJNZ 20H,DIV2B
RET
DSP1:MOV R0,#70H
MOV A,@R0
CLR C
SUBB A,#05H
JC EXIT1 ;为1则小于5,退出
INC R0 ;指向十位
MOV A,@R0
INC A ;十位加1
MOV @R0,A
CJNE A,#10,EXIT1 ;十位加1等于10?等于10,是则十位清零
CLR A
MOV @R0,A
INC R0 ;指向百位
MOV A,@R0
INC A ;百位加1
MOV @R0,A
CJNE A,#10,EXIT1
CLR A
MOV @R0,A
INC R0 ;指向千位
MOV A,@R0
INC A ;千位加1
MOV @R0,A
CJNE A,#10,EXIT1
CLR A
MOV @R0,A
EXIT1:RET
DISPLAY:MOV R1,#73H ;指向数据显示缓冲区
MOV R5,#0FEH ;显示位选择
PLAY:MOV A,R5
MOV P2,A
MOV A,@R1
MOV DPTR,#TAB
MOVC A,@A+DPTR
CJNE R1,#73H,POW
XRL A,#80H;输出点.
POW: MOV P1,A
LCALL DL1MS
DEC R1
MOV A,R5
JNB ACC.3,ENDOUT
RL A
MOV R5,A
AJMP PLAY
ENDOUT:RET
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DL1MS:MOV R6,#20
DL1:MOV R7,#50
DL2:DJNZ R7,DL2
DJNZ R6,DL1
RET
END
展开阅读全文