① 道亨軟體需要測繪圖的格式
測量成果到道亨成果要經過一個轉換過程。
首先導出測量成果dhd文件,再利用比如南方的內業數據轉換軟體轉換之星等調整測量成果數據後,再導出org格式的道亨成果就可以了。
道亨軟體線路測量的基本內容有縱斷面圖測量,交叉跨越測量,平面圖測量。
② 超聲波測距程序
以下是用匯編語言編寫的超聲波測距控制源程序:採用AT89S51 12MHz晶振 顯示緩沖單元在40H~43H,使用內存44H、45H、46H用於計算距離
20H用於標志
VOUT EQU P1.0 ;脈沖輸出埠
*中斷入口程序*
ORG 0000H
LJMP START
ORG 0003H
LJMP PINT0
ORG 000BH
LJMP INTT0
ORG 0013H
RETI
ORG 001BH
LJMP INTT1
ORG 0023H
RETI
ORG 002BH
RETI
*主程序*
START: MOV SP, #4FH
MOV R0, #40H ;40~43H為顯示數據存放單元(40為最高位)
MOV R7,#0BH
CLEARDISP:MOV @R0, #00H
INC R0
DJNZ R7, CLEARDISP
MOV 20H, #00H
MOV TMOD, #21H ;T1為8位自動重裝模式,T0為16位定時器
MOV TH0, #00H ;65ms初值
MOV TL0, #00H ;40KHz初值
MOV TH1, #0F2H
MOV TL1, #0F2H
MOV P0, #0FFH
MOV P1, #0FFH
MOV P2, #0FFH
MOV P3, #0FFH
MOV R4, #04H ;超聲波脈沖個數控制(為賦值的一半)
SETB PX0
SETB ET0
STEB EA
CLR 00H
SETB TR0 ;開啟測距定時器
START1: LCALL DISPLAY
JNB 00H, START1 ;收到反射信號時標志位為1
CLR EA
LCALL WORK;計算距離子程序
SETB EA
CLR 00H
SETB TR0;重新開啟測距定時器
MOV R2, #64H ; 測量間隔控制(約4*100=400ms)
LOOP: LCALL DISPLAY
DJNZ R2, LOOP
SJMP START 1
*中斷程序*
;T0中斷,65ms中斷一次
INTT0: CLR EA
CLR TR0
MOV TH0, #00H
MOV TL0, #00H
SETB ET1
SETB EA
SETB TR0 ;啟動計時器T0,用以計算超聲波來回時間
SETB TR1 ;開啟發超聲波用定時器T1
OUT: RETI;T1中斷,發超聲波用
INTT1: CPL VOUT
DJNZ R4,RETIOUT
CLR TR1;超聲波發送完畢,關T1
CLR ET1
MOV R4,#04H
SETB EX0;開啟接收回波中斷
RETIOUT: RETI;外中斷0,收到回波時進入
PINT0: CLR TR0 ;關計數器
CLR TR1
CLR ET1
CLR EA
CLR EX0
MOV 44H, TL0;將計數值移入處理單元
MOV 45H, TH0
SETB 00H ;接收成功標志
RETI
*延時程序*
DL1MS: MOV R6, #14H
DL1: MOV R7, #19H
DL2: DJNZ R6, DL2
DJNZ R6, DL1
RET
*顯示程序*
;40H為最高位,43H為最低位,先掃描高位
DISPLAY: MOV R1, #40H;G
MOV R5,#0F7H;G
PLAY: MOV A, R5
MOV P0, #0FFH
MOV P2, A
MOV A, @R1
MOV DPTR, #TAB
MOVC A, @A+DPTR
MOV P0, A
LCALL DLIMS
INC R1
MOV A, R5
JNB ACC.0, ENDOUT;G
RR A
MOV R5, A
AJMP PLAY
ENDOUT: MOV P2, #0FFH
MOV P0, #0FFH
RET
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,88H,0BFH
;共陽數碼管 0 ,1, 2,3,4,5,6,7,8,9,不亮,A,
*距離計算程序(=計算值×17/1000cm) 近似
WORK: PUSH ACC
PUSH PSW
PUSH B
MOV PSW, #18H
MOV R3, 45H
MOV R2, 44H
MOV R1, #00D
MOV R0, #17D
LCALL MUL2BY2
MOV R3, #03H
MOV R2, #0E8H
LCALL DIV4BY2
LCALL DIV4BY2
MOV 40H, R4
MOV A, 40H
JNZ JJ0
MOV40H,#0AH ;最高位為0,不點亮
JJ0: MOV A R0
MOV R4, A
MOV A R1
MOV R5,A
MOV R3, #00D
MOV R2, #100D
LCALL DIV4BY2
MOV 41H, R4
MOV A, 41H
JNZ JJ1
MOV A, 40H ;此高位為0,先看最高位是否為不亮
SUBB A, #0AH
JNZ JJ1
MOV 41H, #0AH ; 最高位不亮,次高位也不亮
JJ1: MOV A, R0
MOV R4, A
MOV A, R1
MOV R5, A
MOV R3, #00D
MOV R2, #10D
LCALL DIV4BY2
MOV 42H, R4
MOV A 42H
JNZ JJ2
MOV A,41H ;次高位為0,先看次高位是否為不亮
SUBB A, #0AH
JNZ JJ2
MOV 42H, #0AH ;次高位不亮,次高位也不亮
JJ2: MOV 43H, R0
POP B
POP PSW
POP ACC
RET
*兩位元組無符號數乘法程序
MUL2BY2: CLR A
MOV R7, A
MOV R6, A
MOV R5, A
MOV R4, A
MOV 46H, #10H
MULLOOP1: CLR C
MOV A, R4
RLC A
MOV R4, A
MOV A, R5
RLC A
MOV R5, A
MOV A, R6
RLC A
MOV R6, A
MOV A, R7
RLC A
MOV R7, A
MOV A, R0
RLC A
MOV R0, A
MOV A, R1
RLC A
MOV R1, A
JNC MULLOOP2
MOV A, R4
ADD A, R2
MOV R4, A
MOV A, R5
ADDC A, R3
MOV R5, A
MOV A, R6
ADDC A, #00H
MOV R6, A
MOV A, R7
ADDC A, #00H
MOV R7, A
MULLOOP2: DJNZ 46H, MULLOOP1
RET
*四位元組/兩位元組無符號數除法程序*
DIV4BY2: MOV 46H, #20H
MOV R0, #00H
MOV R1, #00H
DIVLOOP1: MOV A, R4
RLC A
MOV R4, A
MOV A, R5
RLC A
MOV R5, A
MOV A, R6
RLC A
MOV R6, A
MOV A, R7
RLC A
MOV R7, A
MOV A, R0
RLC A
MOV R0, A
MOV A, R1
RLC A
MOV R1, A
CLR C
MOV A, R0
SUBB A, R2
MOV B, A
MOV A, R1
SUBB A, R3
JC DIVLOOP2
MOV R0, B
MOV R1, A
DIVLOOP2: CPL C
DJNZ 46H, DIVLOOP1
MOV A, R4
RLC A
MOV R4, A
MOV A, R5
RLC A
MOV R5, A
MOV A, R6
RLC A
MOV R6, A
MOV A, R7
RLC A
MOV R7, A
RET
END