📄 new1595.asm
字号:
;输出电阻数据给LTC1595子程序; 最大输出65535(655.35)
;输入电阻值bcd码在15-17H L在前
SC_R: MOV R_DATA2,17H ;h
MOV R_DATA1,16H ;m
MOV R_DATA0,15H ;l
PUSH 01H
LCALL PY_SUB ;转换成HEX码并补偿误差 5e-5fh ;变换成0-100MV输出
MOV A,OUTDATA1
LCALL ROUT ;往TLC1595送数据子程序(写一个8BIT数据)h
MOV A,OUTDATA2
LCALL ROUT ;往TLC1595送数据子程序(写一个8BIT数据)l
CLR ROUT_LD ;D/A OUT
LCALL DELAY
SETB ROUT_LD
LCALL DELAY
POP 01H
RET
PY_SUB: MOV R1,#PY_BCD1 ;偏移量子程序的主程序
MOV @R1,R_DATA2 ;h ;9c-9eh
MOV R1,#PY_BCD2
MOV @R1,R_DATA1 ;m
MOV R1,#PY_BCD3
MOV @R1,R_DATA0 ;l
LCALL JSJCSJ ;计算原始电阻输出值 (bcd--hex)存9A-9BH
MOV R1,#JSOUTDT1
MOV A,@R1
MOV R1,#5eh ;转移到5e-5fh
MOV @R1,A
MOV R1,#JSOUTDT2
MOV A,@R1
MOV R1,#5fh
MOV @R1,A
; mov 4eh,5EH ;备用
; mov 4fh,5FH
ret
;变换成0-100MV输出
mov r2,5eh
mov r3,5fh
mov r4,#00
mov r5,#00
mov r6,#27h ;100mv ;10000-2710h
mov r7,#10h ;200mv= 4e20h 78.00mv= 1E78
LCALL DIVD ;(r2r3r4r5/r6r7)=r4r5
mov 5eh,r4 ;获得最终数据 ;5e-5fh
mov 5fh,r5
mov 4eh,5EH ;备用
mov 4fh,5FH
RET
PY_ADD: CLR C ;最终结果放在OUTDATA2~OUTDATA1中。
MOV R0,#PY0
MOV R1,#JCDATA2
MOV A,@R1
ADD A,@R0
MOV OUTDATA2,A
MOV R1,#JCDATA1
MOV A,@R1
ADDC A,#00H
MOV OUTDATA1,A
RET
JSJCSJ: PUSH 00H ;计算基础数据子程序
PUSH 01H ;入口为PY_BCD1(高)~PY_BCD3(低)
PUSH 02H
PUSH 03H
PUSH 04H
PUSH 05H
PUSH 06H
PUSH 07H
LCALL PY_CGE3 ;将3字节PY_BCD1~PY_BCD3分高低位放到94-9ah
MOV R1,#SC_N ;bcd码起始地址 93h
MOV @R1,#05H ;位数
LCALL PY_BCDCB ;bcd--hex转换结果放9a-9bh
POP 07H
POP 06H
POP 05H
POP 04H
POP 03H
POP 02H
POP 01H
POP 00H
RET
PY_CGE3: MOV R1,#PY_BCD1 ;将3字节PY_BCD1~PY_BCD3分高低位放到PYMD1~PYMD5中
MOV A,@R1 ;以备BCDCB使用
ANL A,#0F0H
SWAP A
MOV R1,#PYMD1
MOV @R1,A
MOV R1,#PY_BCD1
MOV A,@R1
ANL A,#0FH
MOV R1,#PYMD2
MOV @R1,A
MOV R1,#PY_BCD2
MOV A,@R1
ANL A,#0F0H
SWAP A
MOV R1,#PYMD3
MOV @R1,A
MOV R1,#PY_BCD2
MOV A,@R1
ANL A,#0FH
MOV R1,#PYMD4
MOV @R1,A
MOV R1,#PY_BCD3
MOV A,@R1
ANL A,#0F0H
SWAP A
MOV R1,#PYMD5
MOV @R1,A
MOV R1,#PY_BCD3
MOV A,@R1
ANL A,#0FH
MOV R1,#PYMD6
MOV @R1,A
MOV R0,#PYMD1
RET
PY_BCDCB: ;3字节BCD数转化为16进制数(输入十进制数须小于65536,即输出16进制数小于等于0FFFFH)
;入口:(R0)=内部RAM中BCD码高字节地址指针
;(R7)=BCD码位数减1,即N=5
;出口:(R3R4)=转换结果
MOV R3,#0 ;hex_h 结果高字节清零
MOV A,@R0 ;取BCD码
MOV R4,A ;hex_l 暂存
MOV R1,#SC_N
MOV A,@R1
MOV R7,A
PY_BCDCL: MOV A,R4
MOV B,#10
MUL AB
MOV R4,A ;暂存R4*10低8位
MOV A,B
XCH A,R3 ;暂存R4*10高8位
MOV B,#10
MUL AB ;(R3)*10为一字节数
ADD A,R3 ;(R3)*10+(R4)*10高8位
MOV R3,A ;暂存
INC R0
MOV A,R4
ADD A,@R0
MOV R4,A
MOV A,R3
ADDC A,#0 ;(R3R4)+((R0))+CY-->R3R4
MOV R3,A
DJNZ R7,PY_BCDCL ;未完,继续
MOV R1,#JSOUTDT1
MOV A,R3
MOV @R1,A
MOV R1,#JSOUTDT2
MOV A,R4
MOV @R1,A
RET
GET_PY: MOV R1,#ZD1 ;取偏移量子程序
MOV A,@R1 ;子段数高位不为0就为1
JNZ OVER256 ;判断子段数是否超过256
MOV DPTR,#PYTABLE1 ;不是用PYTABLE1来查表
LJMP CZPYL
OVER256: MOV DPTR,#PYTABLE2 ;是用PYTABLE2来查表
CZPYL: MOV R1,#ZD2 ;获取子段数低位
MOV A,@R1
MOVC A,@A+DPTR ;查表获取偏移量存在PY0中
MOV R1,#PY0
MOV @R1,A
RET
ROUT: LCALL DELAY
CLR ROUT_CLK ;往TLC1595送数据子程序(写一个8BIT数据)
LCALL DELAY
JB ACC.7,R_NEXT1
CLR ROUT_DIN
LCALL R_CLK
LJMP R_NEXTA
R_NEXT1: SETB ROUT_DIN
LCALL R_CLK
R_NEXTA: JB ACC.6,R_NEXT2
CLR ROUT_DIN
LCALL R_CLK
LJMP R_NEXTB
R_NEXT2: SETB ROUT_DIN
LCALL R_CLK
R_NEXTB: JB ACC.5,R_NEXT3
CLR ROUT_DIN
LCALL R_CLK
LJMP R_NEXTC
R_NEXT3: SETB ROUT_DIN
LCALL R_CLK
R_NEXTC: JB ACC.4,R_NEXT4
CLR ROUT_DIN
LCALL R_CLK
LJMP R_NEXTD
R_NEXT4: SETB ROUT_DIN
LCALL R_CLK
R_NEXTD: JB ACC.3,R_NEXT5
CLR ROUT_DIN
LCALL R_CLK
LJMP R_NEXTE
R_NEXT5: SETB ROUT_DIN
LCALL R_CLK
R_NEXTE: JB ACC.2,R_NEXT6
CLR ROUT_DIN
LCALL R_CLK
LJMP R_NEXTF
R_NEXT6: SETB ROUT_DIN
LCALL R_CLK
R_NEXTF: JB ACC.1,R_NEXT7
CLR ROUT_DIN
LCALL R_CLK
LJMP R_NEXTG
R_NEXT7: SETB ROUT_DIN
LCALL R_CLK
R_NEXTG: JB ACC.0,R_NEXT8
CLR ROUT_DIN
LCALL DELAY
SETB ROUT_CLK
LCALL DELAY
LJMP R_NEXTH
R_NEXT8: SETB ROUT_DIN
LCALL DELAY
SETB ROUT_CLK
LCALL DELAY
R_NEXTH: CLR C
RET
R_CLK: NOP ;往TLC1595送数据的时钟子程序
LCALL DELAY
SETB ROUT_CLK
LCALL DELAY
CLR ROUT_CLK
LCALL DELAY
RET
PYTABLE1:
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,03H, ;99
DB 03H,03H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H, ;199
DB 64H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,;255
PYTABLE2:
DB 00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,03H, ;299
DB 03H,03H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H, ;399
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,50H,51H,52H,53H,54H,54H,55H,55H,55H, ;499
DB 66H,
DA_PYTAB1:
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H, ;99
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H, ;199
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H, ;255
DA_PYTAB2:
DB 00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H, ;299
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H, ;399
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H, ;499
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -