rauftolga
Newbie level 2
8051 servo
Hello,
I have been trying to control a servo with 8051. I am to move the servo 90 to clockwise direction, after 20 sec it is going to go counterclockwise direction. I am using a 12mhz clock.
I accomplished to move it to clockwise direction, but it does not come back. Here is my code, could anybody help me about what the problem is.
Thank you.
$DEBUG
$NOPAGING
$NOSYMBOLS
$MOD31
COUNT EQU -10000
ORG 30H
SERVOSTART: ;MOVES SERVO TO 0 DEGREE POSITION
MOV R4, #40D
SETB P3.0
CALL SHORTDELAY ;CALLS A 0.9MS DELAY
CLR P3.0
CALL LONG1DELAY ;CALLS A 19.1MS DELAY
DEC R4
CJNE R4, #00H, SERVOSTART
SERVOMID: ; MOVES SERVO TO A 90 DEGREE POSITION
MOV R4, #40D
SETB P3.0
CALL MEDIUMDELAY ;CALLS A 1.5MS DELAY
CLR P3.0
CALL LONG2DELAY ;CALL A 18.5MS DELAY
DEC R4
CJNE R4, #00H, SERVOMID
SHORTDELAY: MOV R4, #64626D
AGAIN: MOV TH0, #HIGH COUNT
MOV TL0, #LOW COUNT
SETB TR0
WAIT: JNB TF0, $
CLR TF0
CLR TR0
DJNZ R4, AGAIN
RET
LONG1DELAY: MOV R4, #46436D
AGAIN1: MOV TH0, #HIGH COUNT
MOV TL0, #LOW COUNT
SETB TR0
WAIT1: JNB TF0, $
CLR TF0
CLR TR0
DJNZ R4, AGAIN1
RET
MEDIUMDELAY:MOV R4, #64036D
AGAIN2: MOV TH0, #HIGH COUNT
MOV TL0, #LOW COUNT
SETB TR0
WAIT2: JNB TF0, $
CLR TF0
CLR TR0
DJNZ R4, AGAIN2
RET
LONG2DELAY: MOV R4, #47036D
AGAIN3: MOV TH0, #HIGH COUNT
MOV TL0, #LOW COUNT
SETB TR0
WAIT3: JNB TF0, $
CLR TF0
CLR TR0
DJNZ R4, AGAIN3
RET
END
Thank you
Hello,
I have been trying to control a servo with 8051. I am to move the servo 90 to clockwise direction, after 20 sec it is going to go counterclockwise direction. I am using a 12mhz clock.
I accomplished to move it to clockwise direction, but it does not come back. Here is my code, could anybody help me about what the problem is.
Thank you.
$DEBUG
$NOPAGING
$NOSYMBOLS
$MOD31
COUNT EQU -10000
ORG 30H
SERVOSTART: ;MOVES SERVO TO 0 DEGREE POSITION
MOV R4, #40D
SETB P3.0
CALL SHORTDELAY ;CALLS A 0.9MS DELAY
CLR P3.0
CALL LONG1DELAY ;CALLS A 19.1MS DELAY
DEC R4
CJNE R4, #00H, SERVOSTART
SERVOMID: ; MOVES SERVO TO A 90 DEGREE POSITION
MOV R4, #40D
SETB P3.0
CALL MEDIUMDELAY ;CALLS A 1.5MS DELAY
CLR P3.0
CALL LONG2DELAY ;CALL A 18.5MS DELAY
DEC R4
CJNE R4, #00H, SERVOMID
SHORTDELAY: MOV R4, #64626D
AGAIN: MOV TH0, #HIGH COUNT
MOV TL0, #LOW COUNT
SETB TR0
WAIT: JNB TF0, $
CLR TF0
CLR TR0
DJNZ R4, AGAIN
RET
LONG1DELAY: MOV R4, #46436D
AGAIN1: MOV TH0, #HIGH COUNT
MOV TL0, #LOW COUNT
SETB TR0
WAIT1: JNB TF0, $
CLR TF0
CLR TR0
DJNZ R4, AGAIN1
RET
MEDIUMDELAY:MOV R4, #64036D
AGAIN2: MOV TH0, #HIGH COUNT
MOV TL0, #LOW COUNT
SETB TR0
WAIT2: JNB TF0, $
CLR TF0
CLR TR0
DJNZ R4, AGAIN2
RET
LONG2DELAY: MOV R4, #47036D
AGAIN3: MOV TH0, #HIGH COUNT
MOV TL0, #LOW COUNT
SETB TR0
WAIT3: JNB TF0, $
CLR TF0
CLR TR0
DJNZ R4, AGAIN3
RET
END
Thank you