;Initilization $ NOMOD51 $ INCLUDE (REG515.inc) PUBLIC TURN_RIGHT, TURN_LEFT EXTRN DATA(CONTSIG1, CONTSIG2, TURN_1, TURN_180, TURN_1_MEASURE, TURN_180_MEASURE, KEYPAD_FLAG) EXTRN CODE(DLAYA, DISPLAY_STATUS) TURNCODE SEGMENT CODE RSEG TURNCODE USING 0 TURN_RIGHT: CLR P4.1 ;SET MOTOR 1 DIRECTION TO REVERSE SETB P4.2 ;SET MOTOR 2 DIRECTION TO FORWARD CLR P4.0 LCALL DLAYA LCALL DLAYA SETB P4.0 MOV A,#50 ;TURN ON MOTOR 1 AND 2 IN LOW SPEED MODE MOV CONTSIG1,A MOV CONTSIG2,A LJMP TURN_CONTINUE TURN_LEFT: SETB p4.1 ;SET MOTOR 1 DIRECTION TO FORWARD CLR p4.2 ;SET MOTOR 2 DIRECTION TO REVERSE CLR P4.0 LCALL DLAYA LCALL DLAYA SETB P4.0 MOV A,#50 ;TURN ON MOTOR 1 AND 2 IN LOW SPEED MODE MOV CONTSIG1,A MOV CONTSIG2,A TURN_CONTINUE: MOV A,KEYPAD_FLAG CJNE A,#0FH,TURN_CONTINUE2 MOV A,#0 MOV CONTSIG1,A MOV CONTSIG2,A MOV A,#0FFH MOV KEYPAD_FLAG,A RET TURN_CONTINUE2: LCALL DISPLAY_STATUS MOV DPH,#73H ;GET CURRENT HIGH ORDER DISTANCE MOTOR 1 MOV DPL,#00H MOVX A,@DPTR MOV TURN_180_MEASURE,A MOV DPH,#72H ;GET CURRENT LOW ORDER DISTANCE MOTOR 1 MOV DPL,#00H MOVX A,@DPTR MOV TURN_1_MEASURE,A MOV A,TURN_1 CLR C SUBB A,TURN_1_MEASURE JZ TURN_OFF_MOTOR1 JC TURN_OFF_MOTOR1 LJMP TURN_CONTINUE TURN_OFF_MOTOR1: CLR C MOV A,TURN_180 SUBB A,TURN_180_MEASURE JNZ TURN_CONTINUE MOV A,#0 MOV CONTSIG1,A MOV CONTSIG2,A RET END