|
今天又將8051配合315M無線模組重新排版製出~
控制板是用8051加上16個伺服馬達控制排針接頭外掛無線模組組成的~
再用HT-12D跟12E來做解碼跟編碼的動作!
遙控板跟接收板都可以正常發送跟接收~
有用電表量出HI~LO訊號!
但想請問各位大大當HI-LO訊號進入8051的IO腳位時~
組合語言要怎麼宣告怎麼寫語法來用遙控控制各路的伺服馬達?
ORG 0000H
JMP START
;=============================
S1 EQU 30H
S2 EQU 31H
;=============================
;計時/計數器0中斷副程式
;=============================
ORG 000BH
TIMER0:
PUSH ACC ;將ACC暫存器之資料放置於堆疊區
CLR TF0 ;將TF0中斷要求先清除
MOV TH0,#0FFH ;手動載入TH0及TL0的值
MOV TL0,#64H ;
INC R0 ;中斷一次就把R0加1
CYCLE:
CJNE R0,#200,SERVO1 ;判斷R0是否為200,不是,則跳至SERVO1執行
MOV R0,#0 ;若R0=200,則將R0清為0
SETB P2.0 ;若R0=200,則將PWM1.PWM2設為Hi
SETB P2.1
JMP GOBACK
SERVO1: MOV A,R0
XRL A,S1 ;判斷R0是否等於S1
JNZ SERVO2 ;若R0不等於S1則跳至SERVO2
CLR P2.0 ;若R0=S1,則將PWM1設為Lo
SERVO2:
MOV A,R0
XRL A,S2 ;判斷R0是否等於S2
JNZ GOBACK ;若R0不等於S2則跳至GOBACK
CLR P2.1 ;若R0=S2,則將PWM2設為Lo
GOBACK: POP ACC ;將ACC暫存器之資料從堆疊區取回
RETI
;===============================
; 主程式
;===============================
START: MOV S1,#15
MOV S2,#15
MOV TMOD,#00000001B ;設定計時計數器0工作於計時模式1,如圖 所示.
MOV TH0,#0FFH ;設定0.1ms中斷一次
MOV TL0,#64H
SETB EA ;中斷致能(打開中斷總開關)
SETB ET0 ;計時/計數器0的中斷致能
SETB TR0 ;計時/計數器0開始工作
LOOP: MOV S1,#15
MOV S2,#15
CALL DELAY
MOV S1,#21
MOV S2,#9
CALL DELAY
MOV S1,#15
MOV S2,#15
CALL DELAY
MOV S1,#9
MOV S2,#21
CALL DELAY
JMP LOOP
;=========================
;延時副程式(延時1秒)
;=========================
DELAY: MOV R5,#15 ;重複10次
DL1: MOV R6,#250 ;延時0.1秒
DL2: MOV R7,#200
DL3: DJNZ R7,DL3
DJNZ R6,DL2
DJNZ R5,DL1
RET
END
不知要如何加入無線模組的控制部分?? |
|