今天終于把三維坐標調整的單片機實驗完成,通過實驗及編程,今天成功使用了指針和數據比較,完成數據調整和比較,程序如下,實驗圖如下:
如有需要實驗源文件的可以QQ我,有想在商業應用的,可以付一點辛苦費,將程序修改為合適的。本人在找工作,也隨便把單片機方面搞得更精通點!
程序代碼:
DEDA DATA 55H
YANS DATA 56H
MXQ DATA 60H
MXB DATA 61H
MXS DATA 62H
MXG DATA 63H
MYQ DATA 64H
MYB DATA 65H
MYS DATA 66H
MYG DATA 67H
MZQ DATA 68H
MZB DATA 69H
MZS DATA 6AH
MZG DATA 6BH
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LXQ DATA 30H
LXB DATA 31H
LXS DATA 32H
LXG DATA 33H
LYQ DATA 34H
LYB DATA 35H
LYS DATA 36H
LYG DATA 37H
LZQ DATA 38H
LZB DATA 39H
LZS DATA 3AH
LZG DATA 3BH
;;;;;;;;;;;;;;;;;;;;;;;;;
LSQ DATA 40H
LSB DATA 41H
LSS DATA 42H
LSG DATA 43H
;;;;;;;;;;;;;;;;;;;;;;;;
LSQ1 DATA 50H
LSB1 DATA 51H
LSS1 DATA 52H
LSG1 DATA 53H
;;;;;;;;;;;;;;;;;;;;;;;;
LS DATA 70H
LSL DATA 71H
LSD DATA 72H
;;;;;;;;;;;;;;;;;;;;;;;
QD BIT P0.0 ;按鍵位定義
GI BIT P0.1
GD BIT P0.2
SI BIT P0.3
SD BIT P0.4
YX BIT P0.5
;;;;;;;;;;;;;;;;;;;;;;;;;
ORG 0H ;程序代碼由地址0開始執行
MAIN:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;啟動數據顯示
SX: JB YX,XX1
JNB YX,$
AJMP B_J
XX1: JB QD,XX2
JNB QD,$
AJMP S_T_D
XX2: LCALL LSLED
AJMP SX
RET
;;;;;;;;;;;;;;;;;;;;;;;;;運行時數碼管顯示
LSLED:
; LCALL LED1
; LCALL LED2
; RET
MOV P3,#0D0H
LCALL LED_1
INC P3
LCALL LED_2
INC P3
LCALL LED_3
INC P3
LCALL LED_4
INC P3
LCALL LED_5
INC P3
LCALL LED_6
INC P3
LCALL LED_7
INC P3
LCALL LED_8
INC P3
LCALL LED_9
INC P3
LCALL LED_10
INC P3
LCALL LED_11
INC P3
LCALL LED_12
INC P3
LCALL LED_13
INC P3
LCALL LED_14
INC P3
LCALL LED_15
INC P3
LCALL LED_16
INC P3
LCALL LED_17
INC P3
LCALL LED_18
INC P3
LCALL LED_19
INC P3
LCALL LED_20
INC P3
LCALL LED_21
INC P3
LCALL LED_22
INC P3
LCALL LED_23
INC P3
LCALL LED_24
RET
LED1:
MOV LSL,#0D0H
MOV R1,#60H
LED1_1:
MOVX A,@R1
MOV P3,LSL
LCALL LED
INC LSL
INC R1
MOV A,LSL
CJNE A,#0DFH,LED1_1
MOV R1,#30H
MOV A,LSL
CJNE A,#0E7H,LED1_1
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;運行數據調用
B_J: JB YX,B_J_0
JNB YX,$
AJMP SX
B_J_0: LCALL L_S_X_L
LCALL B_J_L
LCALL L_S_L_X
LCALL L_S_Y_L
LCALL B_J_L
LCALL L_S_L_Y
LCALL L_S_Z_L
LCALL B_J_L
LCALL L_S_L_Z
MOV YANS,#5;;;;;;;;;;;;;;;;;;;;;加一數據延時賦值
B_J_LED: LCALL LSLED
DEC YANS
MOV A,YANS
CJNE A,#0,B_J_LED
AJMP B_J
;;;;;;;;;;;;;;;;;;;;;;;數據調用;;;;;;;;;;;;;;;;;;;;;;;;;
L_S_X_L: MOV LSQ,MXQ
MOV LSB,MXB
MOV LSS,MXS
MOV LSG,MXG
MOV LSQ1,LXQ
MOV LSB1,LXB
MOV LSS1,LXS
MOV LSG1,LXG
RET
L_S_Y_L: MOV LSQ,MYQ
MOV LSB,MYB
MOV LSS,MYS
MOV LSG,MYG
MOV LSQ1,LYQ
MOV LSB1,LYB
MOV LSS1,LYS
MOV LSG1,LYG
RET
L_S_Z_L: MOV LSQ,MZQ
MOV LSB,MZB
MOV LSS,MZS
MOV LSG,MZG
MOV LSQ1,LZQ
MOV LSB1,LZB
MOV LSS1,LZS
MOV LSG1,LZG
RET
L_S_L_X: MOV LXQ,LSQ1
MOV LXB,LSB1
MOV LXS,LSS1
MOV LXG,LSG1
RET
L_S_L_Y: MOV LYQ,LSQ1
MOV LYB,LSB1
MOV LYS,LSS1
MOV LYG,LSG1
RET
L_S_L_Z: MOV LZQ,LSQ1
MOV LZB,LSB1
MOV LZS,LSS1
MOV LZG,LSG1
RET
;;;;;;;;;;;;;;;;;;;;;數據比較;;;;;;;;;;;;;;;;;;;;;;
B_J_L:
MOV A,LSQ
CJNE A,LSQ1,B_J_LD
MOV A,LSB
CJNE A,LSB1,B_J_LD
MOV A,LSS
CJNE A,LSS1,B_J_LD
MOV A,LSG
CJNE A,LSG1,B_J_LD
RET
B_J_LD: JC B_J_LQ_X
B_J_LQ_D: INC LSG1
MOV A,LSG1
CJNE A,#10,B_J_END
MOV LSG1,#0
INC LSS1
MOV A,LSS1
CJNE A,#10,B_J_END
MOV LSS1,#0
INC LSB1
MOV A,LSB1
CJNE A,#10,B_J_END
MOV LSB1,#0
INC LSQ1
MOV A,LSQ1
CJNE A,#10,B_J_END
MOV LSQ1,#9
MOV LSB1,#9
MOV LSS1,#9
MOV LSG1,#9
AJMP B_J_END
B_J_LQ_X: DEC LSG1
MOV A,LSG1
CJNE A,#-1,B_J_END
MOV LSG1,#9
DEC LSS1
MOV A,LSS1
CJNE A,#-1,B_J_END
MOV LSS1,#9
DEC LSB1
MOV A,LSB1
CJNE A,#-1,B_J_END
MOV LSB1,#9
DEC LSQ1
MOV A,LSQ1
CJNE A,#-1,B_J_END
MOV LSQ1,#0
MOV LSB1,#0
MOV LSS1,#0
MOV LSG1,#0
AJMP B_J_END
B_J_END:
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;光標操作
;;;;;;;;;;延時賦值;;;;;;;;;;;;;;;;;;;
FU_Z: MOV R4,#10
MOV YANS,#10
RET
;;;;;;;;;;;;;;;指針值;;;;;;;;;;;;;;;;;;;;
S_T_D:MOV R0,#60H
MOV LS,@R0
S_T_D_0:
MOV @R0,LS
JB QD,S_T_D_B
JNB QD,$
AJMP SX
S_T_D_B:
LCALL FU_Z
;;;;;;;;;;;;;;;光標判斷;;;;;;;;;;;;;;;;;
S_T_D_A:
JB GI,S_T_D_1
JNB GI,$
MOV @R0,LS
INC R0
MOV A,R0
CJNE A,#6CH,S_T_D_2
MOV R0,#60H
AJMP S_T_D_2
S_T_D_1:
JB GD,S_T_D_2
JNB GD,$
MOV @R0,LS
DEC R0
MOV A,R0
CJNE A,#5FH,S_T_D_2
MOV R0,#6BH
;;;;;;;;;;;;;;;;數據判斷;;;;;;;;;;;;;;;;
S_T_D_2:
MOV A,@R0
LCALL S_L
MOV LS,A
MOV @R0,LS
;;;;;;;;;;;;;;;;;;閃爍判斷;;;;;;;;;;;;;
S_T_D_R:
MOV A,R4
CJNE A,#0,S_T_D_RD
LJMP S_T_D_Y
S_T_D_RD:
DEC R4
LCALL LSLED
LJMP S_T_D_A
S_T_D_Y:
MOV @R0,#10
MOV A,YANS
CJNE A,#0,S_T_D_YD
LJMP S_T_D_0
S_T_D_YD:
DEC YANS
LCALL LSLED
MOV @R0,LS
LJMP S_T_D_A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;數據判斷
S_L:
SETB SI
SETB SD
JB SI,S_J
JNB SI,$
CJNE A,#9,S_E
MOV A,#9
AJMP S_J
S_E: INC A
S_J: JB SD,S_E3
JNB SD,$
CJNE A,#0,S_E2
MOV A,#0
AJMP S_E3
S_E2: DEC A
S_E3:RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;數碼管顯示
LED: MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P1,A
LCALL DELAY1
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LED_1: MOV A,LXQ
LCALL LED
RET
LED_2: MOV A,LXB
LCALL LED
RET
LED_3: MOV A,LXS
LCALL LED
RET
LED_4: MOV A,LXG
LCALL LED
RET
LED_5: MOV A,LYQ
LCALL LED
RET
LED_6: MOV A,LYB
LCALL LED
RET
LED_7: MOV A,LYS
LCALL LED
RET
LED_8: MOV A,LYG
LCALL LED
RET
LED_9: MOV A,LZQ
LCALL LED
RET
LED_10: MOV A,LZB
LCALL LED
RET
LED_11: MOV A,LZS
LCALL LED
RET
LED_12: MOV A,LZG
LCALL LED
RET
LED_13: MOV A,MXQ
LCALL LED
RET
LED_14: MOV A,MXB
LCALL LED
RET
LED_15: MOV A,MXS
LCALL LED
RET
LED_16: MOV A,MXG
LCALL LED
RET
LED_17: MOV A,MYQ
LCALL LED
RET
LED_18: MOV A,MYB
LCALL LED
RET
LED_19: MOV A,MYS
LCALL LED
RET
LED_20: MOV A,MYG
LCALL LED
RET
LED_21: MOV A,MZQ
LCALL LED
RET
LED_22: MOV A,MZB
LCALL LED
RET
LED_23: MOV A,MZS
LCALL LED
RET
LED_24: MOV A,MZG
LCALL LED
RET
TABLE:
DB 0C0H ;"0"
DB 0F9H ;"1"
DB 0A4H ;"2"
DB 0B0H ;"3"
DB 99H ;"4"
DB 92H ;"5"
DB 82H ;"6"
DB 0F8H ;"7"
DB 80H ;"8"
DB 90H ;"9"
DB 0FFH
DB 0FFH
DB 0FFH
DB 0FFH
DB 0FFH
DB 0FFH
DELAY1:
MOV R7,#10
L1: MOV R6,#50
DJNZ R6,$
DJNZ R7,L1
RET
END