?? shxj1.asm
字號:
LJMP RECIEVE
;-----------------------------------------------------------------------------------------------------------------------------
;MWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMW)控制命令掃描(MWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMW
;--------------------------------------------------------------------------------------------------------------------------------
;本段程序實現的功能是將存儲位的控制命令與設定的控制命令逐字節進行比較,從而掃描控制命令以確定向串口1發射某一命令來控制
;攝像機動作,同時也掃描深度調整命令,根據所給命令來調用深度調整子程序
;深度調整控制命令為“#,D,A,CR,LF”
COMPARE1: ;@@@@@這里掃描變倍1的控制命令“#,Z,+,CR,LF”,采用逐位比較
CLR A
MOV A,CTRL1 ;控制命令存儲區1存入累加器
CJNE A,#23H,NEXT0 ;掃描命令中的#,非#則跳出
CLR A
MOV A,CTRL2 ;控制命令存儲區2存入累加器
CJNE A,#5AH,COMPARE2 ;掃描命令中的Z,非Z轉移
CLR A
MOV A,CTRL3 ;控制命令存儲區3存入累加器
CJNE A,#2BH,COMPARE3 ;掃描命令中的+,非+轉移
CLR A
MOV A,CTRL4 ;控制命令存儲區4存入累加器
CJNE A,#0DH,NEXT0 ;回車
CLR A
MOV A,CTRL5 ;控制命令存儲區5存入累加器
CJNE A,#0AH,NEXT0 ;換行
LCALL ZOOM1 ;調用變倍1(拉近,放大)子程序
RET
COMPARE2: ;@@@@@掃描聚焦1的控制命令"#,F,+,CR,LF",同樣為逐位比較,只需比較“F,+,CR,LF”位
CLR A
MOV A,CTRL2 ;若CTRL2不是Z,則比較是否為F
CJNE A,#46H,COMPARE5 ;掃描命令中的F,非F轉移
CLR A
MOV A,CTRL3
CJNE A,#2BH,COMPARE4 ;掃描命令中的+,非+轉移
CLR A
MOV A,CTRL4
CJNE A,#0DH,NEXT0 ;回車
CLR A
MOV A,CTRL5
CJNE A,#0AH,NEXT0 ;換行
LCALL FOCUS1 ;調用聚焦1(拉近)子程序
RET
COMPARE3: ;@@@@掃描變倍2的控制命令“#,Z,-,CR,LF”,只需比較“-,CR,LF”位
CLR A
MOV A,CTRL3
CJNE A,#2DH,NEXT0 ;掃描命令中的-,非-跳出
CLR A
MOV A,CTRL4
CJNE A,#0DH,NEXT0 ;回車
CLR A
MOV A,CTRL5
CJNE A,#0AH,NEXT0 ;換行
LCALL ZOOM2 ;調用變倍2(推遠,縮小)子程序
RET
COMPARE4: ;@@@@掃描聚焦2的控制命令“#,F,-,CR,LF”,只需比較“-,CR,LF”位
CLR A
MOV A,CTRL3
CJNE A,#2DH,NEXT0 ;掃描命令中的-,非-跳出
CLR A
MOV A,CTRL4
CJNE A,#0DH,NEXT0 ;回車
CLR A
MOV A,CTRL5
CJNE A,#0AH,NEXT0 ;換行
LCALL FOCUS2
RET
COMPARE5: ;@@@@掃描深度調整命令“#,D,A,CR,LF”,只需比較“D,A,CR,LF”位
CLR A
MOV A,CTRL2
CJNE A,#44H,NEXT0 ;不是D跳出
CLR A ;是D繼續掃描
MOV A,CTRL3
CJNE A,#41H,NEXT0 ;不是A跳出
CLR A ;是A繼續掃描
MOV A,CTRL4
CJNE A,#0DH,NEXT0 ;不是CR跳出
CLR A
MOV A,CTRL5
CJNE A,#0AH,NEXT0 ;不是LF跳出
LCALL DEEP_ADJ ;調用深度調整子程序
NEXT0: RET
;CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC攝像機控制發送碼段CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD
;本段程序實現的功能是,比掃描控制命令后得到要發送哪一個控制攝像機的命令并通過串口1發送
;;;""""""""""""""""""""""""""""""""""""""""""變倍1(拉近,放大),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
ZOOM1: MOV R0,#6 ;發送數據計數器置初值
MOV DPTR,#ZOOM_TAB1 ;DPTR指向要發出的數據表
SEND1: CLR A
MOVC A,@A+DPTR ;將第i個字節送入A
MOV SBUF1,A ;發送數據
CHECK1: CLR A
MOV A,SCON1
JNB ACC.1,CHECK1 ;查詢等待
ANL SCON1,#0FDH
INC DPTR ;指向下一個數據
DJNZ R0,SEND1 ;不到6個數據則轉移
MOV R3,#40
CYCLE11: LCALL DELAY ;調用延時,使攝像機動作一段時間(對深度數據采集有影響)
DJNZ R3,CYCLE11
MOV R2,#10
CYCLE12: LCALL STOP ;調用攝像機的動作停止控制命令
DJNZ R2,CYCLE12 ;重復調用以減少攝像機誤動作
;CPL P1.6 ;動作指示燈亮(試驗用)
ANL SCON1,#0FDH
RET
ZOOM_TAB1: DB 0C5H,5FH,02H,00H,00H,26H ;攝像機變倍1動作控制命令符
;;---------------------------------------變倍2(推遠,縮小)----------------------------------------
ZOOM2: MOV R0,#6
MOV DPTR,#ZOOM_TAB2 ;DPTR指向要發出的數據表
SEND2: CLR A
MOVC A,@A+DPTR ;將第i個字節送入A
MOV SBUF1,A ;發送數據
CHECK2: CLR A
MOV A,SCON1
JNB ACC.1,CHECK2 ;查詢等待
ANL SCON1,#0FDH
INC DPTR ;指向下一個數據
DJNZ R0,SEND2 ;不到6個數據則轉移
MOV R3,#40
CYCLE21: LCALL DELAY ;調用延時子程序(R3自減對深度數據發送有影響,此時深度數據發送停止)
DJNZ R3,CYCLE21 ;(若用R2則無影響)
MOV R2,#10
CYCLE22: LCALL STOP ;調用停止動作
DJNZ R2,CYCLE22
;? CPL P1.6 ;動作指示燈亮(試驗用)
ANL SCON1,#0FDH
RET
ZOOM_TAB2: DB 0C5H,5FH,04H,00H,00H,28H ;攝像機變倍2動作控制命令符
;;OoOooOoooOooooOoooooOooooooOoooooooO聚焦1(拉近)OoooooooOooooooOoooooOooooOoooOooOoO
FOCUS1: MOV R0,#6
MOV DPTR,#FOCUS_TAB1 ;DPTR指向要發出的數據表
SEND3: CLR A
MOVC A,@A+DPTR ;將第i個字節送入A
MOV SBUF1,A ;發送數據
CHECK3: CLR A
MOV A,SCON1
JNB ACC.1,CHECK3 ;查詢等待
ANL SCON1,#0FDH
INC DPTR ;指向下一個數據
DJNZ R0,SEND3 ;不到6個數據則轉移
MOV R3,#10
CYCLE3: LCALL STOP ;調用停止動作
DJNZ R3,CYCLE3
;? CPL P1.6 ;動作指示燈亮(試驗用)
ANL SCON1,#0FDH
RET
FOCUS_TAB1: DB 0C5H,5FH,39H,00H,00H,5DH ;攝像機聚焦1動作控制命令符
;;12345678987654321234567898765432123456789聚焦2(推遠)98765432123456789876543212345678987654321
FOCUS2: MOV R0,#6
MOV DPTR,#FOCUS_TAB2 ;DPTR指向要發出的數據表
SEND4: CLR A
MOVC A,@A+DPTR ;將第i個字節送入A
MOV SBUF1,A ;發送數據
CHECK4: CLR A
MOV A,SCON1
JNB ACC.1,CHECK4 ;查詢等待
ANL SCON1,#0FDH
INC DPTR ;指向下一個數據
DJNZ R0,SEND4 ;不到6個數據則轉移
MOV R3,#10
CYCLE4: LCALL STOP ;調用停止動作
DJNZ R3,CYCLE4
;? CPL P1.6 ;動作指示燈亮(試驗用)
ANL SCON1,#0FDH
RET
FOCUS_TAB2: DB 0C5H,5FH,38H,00H,00H,5CH ;攝像機聚焦2動作控制命令符
;;----------------------------------動作停止命令符---------------------------------------------
STOP: MOV DPTR,#STOP_TAB ;DPTR指向要發出的數據表
MOV R0,#6
ST1: CLR A
MOVC A,@A+DPTR ;將第i個字節送入A
MOV SBUF1,A ;發送數據
CHECK5: CLR A
MOV A,SCON1
JNB ACC.1,CHECK5 ;查詢等待
ANL SCON1,#0FDH
INC DPTR ;指向下一個數據
DJNZ R0,ST1 ;不到6個數據則轉
ANL SCON1,#0FDH
RET
;;------------------------------------------------
STOP_TAB: DB 0C5H,5FH,0CH,00H,00H,30H ;攝像機動作停止控制命令符
;-----------------------------------------------------延時程序--------------------------------------------------------
DELAY: MOV R6,#255 ;延時8.88毫秒
S1: MOV R7,#255
DJNZ R7,$
DJNZ R6,S1
RET
DELAY1: MOV R6,#20 ;延時0.059毫秒
S11: MOV R7,#20
DJNZ R7,$
DJNZ R6,S11
RET
;###########I##T'##S#############N##O##T################T##H##E#################E##N##D########################
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -