;***************************************************************************
;*                              mowayWorld                                 *
;***************************************************************************
;*Description:                                                             *
;*Automatically generated code                                             *
;***************************************************************************
;***************************************************************************
	list p=18F86j50
   ;*	Include mOways microcontroller
   #include "inc\P18F86j50.INC"

;****************************************
;*   Variables                          *
;****************************************
consigne       EQU    0x7E 
Repeat3        EQU    0x7D 

;*	Reset Vector
  org		0x1000
  goto	INIT
;*	Program memory	*
  org		0x102A
;************************
;***************************[MOWAY LIBRARIES]*********************************************
  #include "inc\lib_sen_moway_GUI.inc"
  #include "inc\lib_rf2gh4_GUI.inc"
  #include "inc\lib_mot_moway_GUI.inc"
  #include "inc\lib_cam_moway_GUI.inc"
;*************************************

INIT:

;#####################################
  ;*************************[MOWAY CONFIGURATION]***********************
  ;Sensor configuration
  call    SEN_CONFIG
  ;Motor configuration
  call    MOT_CONFIG

;****************************************
;*   Variables initialization           *
;****************************************
  movlw   .0
  movwf    consigne
  movlw   .0
  movwf    Repeat3

;************Module Pause***********************************************

;***********************************************************************

  banksel	    AUX_00	 
  movlw   .60
  movwf   AUX_00
  call    Delay_50ms_mOwayGUI

;***********************************************************************


label0:
;*****************Module Compare Noise*********************************

;**********************************************************************

  call    SEN_MIC_ANALOG
  movf    SEN_MIC,W
  movwf   AUX_01
  clrf    AUX_00
  addlw   .205
  btfss   STATUS,C
  incf    AUX_00,F
  movf    AUX_01,W
  sublw   .50
  btfss   STATUS,Z
  incf    AUX_00,F
  btfsc   AUX_00,1
  goto    label0

;***********************************************************************
;************Module Assigned********************************************

;***********************************************************************

  movlw   .10
  movwf   consigne

;***********************************************************************
;************Module ResetMoveInformation********************************

;***********************************************************************

  movlw   RST_KM
  movwf   MOT_RST_COM
  call    MOT_RST
  movlw   RST_D
  movwf   MOT_RST_COM
  call    MOT_RST

;***********************************************************************

;************Module Move*************************************************

;***********************************************************************

  movlw   .50
  movwf   MOT_VEL
  bsf     MOT_CON,COMTYPE
  movlw   .0
  movwf   MOT_T_DIST_ANG
  bsf     MOT_CON,FWDBACK
  call    MOT_STR

;***********************************************************************

;LLamada a subutina
    call    TestDistance

;************Module Assigned********************************************

;***********************************************************************

  movlw   .25
  movwf   consigne

;***********************************************************************
;************Module ResetMoveInformation********************************

;***********************************************************************

  movlw   RST_KM
  movwf   MOT_RST_COM
  call    MOT_RST
  movlw   RST_D
  movwf   MOT_RST_COM
  call    MOT_RST

;***********************************************************************

;**************Module Turn**********************************************

;***********************************************************************

  movlw   .50
  movwf       MOT_VEL
  bsf     MOT_CON,COMTYPE
  movlw   .0
  movwf   MOT_T_DIST_ANG
  movlw   0x01
  movwf   MOT_CENWHEEL
  bsf     MOT_CON,RL
  bsf     MOT_CON,FWDBACK
  call    MOT_ROT

;***********************************************************************

;LLamada a subutina
    call    TestAngle

;************Module Assigned********************************************

;***********************************************************************

  movlw   .10
  movwf   consigne

;***********************************************************************
;************Module ResetMoveInformation********************************

;***********************************************************************

  movlw   RST_KM
  movwf   MOT_RST_COM
  call    MOT_RST
  movlw   RST_D
  movwf   MOT_RST_COM
  call    MOT_RST

;***********************************************************************

;************Module Move*************************************************

;***********************************************************************

  movlw   .50
  movwf   MOT_VEL
  bsf     MOT_CON,COMTYPE
  movlw   .0
  movwf   MOT_T_DIST_ANG
  bsf     MOT_CON,FWDBACK
  call    MOT_STR

;***********************************************************************

;LLamada a subutina
    call    TestDistance

;************Module Assigned********************************************

;***********************************************************************

  movlw   .25
  movwf   consigne

;***********************************************************************
;************Module ResetMoveInformation********************************

;***********************************************************************

  movlw   RST_KM
  movwf   MOT_RST_COM
  call    MOT_RST
  movlw   RST_D
  movwf   MOT_RST_COM
  call    MOT_RST

;***********************************************************************

;**************Module Turn**********************************************

;***********************************************************************

  movlw   .50
  movwf       MOT_VEL
  bsf     MOT_CON,COMTYPE
  movlw   .0
  movwf   MOT_T_DIST_ANG
  movlw   0x01
  movwf   MOT_CENWHEEL
  bcf     MOT_CON,RL
  bsf     MOT_CON,FWDBACK
  call    MOT_ROT

;***********************************************************************

;LLamada a subutina
    call    TestAngle

;************Module Assigned********************************************

;***********************************************************************

  movlw   .10
  movwf   consigne

;***********************************************************************
;************Module ResetMoveInformation********************************

;***********************************************************************

  movlw   RST_KM
  movwf   MOT_RST_COM
  call    MOT_RST
  movlw   RST_D
  movwf   MOT_RST_COM
  call    MOT_RST

;***********************************************************************

;************Module Move*************************************************

;***********************************************************************

  movlw   .50
  movwf   MOT_VEL
  bsf     MOT_CON,COMTYPE
  movlw   .0
  movwf   MOT_T_DIST_ANG
  bsf     MOT_CON,FWDBACK
  call    MOT_STR

;***********************************************************************

;LLamada a subutina
    call    TestDistance

;************Module Assigned********************************************

;***********************************************************************

  movlw   .25
  movwf   consigne

;***********************************************************************
;************Module ResetMoveInformation********************************

;***********************************************************************

  movlw   RST_KM
  movwf   MOT_RST_COM
  call    MOT_RST
  movlw   RST_D
  movwf   MOT_RST_COM
  call    MOT_RST

;***********************************************************************

;**************Module Turn**********************************************

;***********************************************************************

  movlw   .50
  movwf       MOT_VEL
  bsf     MOT_CON,COMTYPE
  movlw   .0
  movwf   MOT_T_DIST_ANG
  movlw   0x01
  movwf   MOT_CENWHEEL
  bsf     MOT_CON,RL
  bsf     MOT_CON,FWDBACK
  call    MOT_ROT

;***********************************************************************

;LLamada a subutina
    call    TestAngle

;************Module Assigned********************************************

;***********************************************************************

  movlw   .10
  movwf   consigne

;***********************************************************************
;************Module ResetMoveInformation********************************

;***********************************************************************

  movlw   RST_KM
  movwf   MOT_RST_COM
  call    MOT_RST
  movlw   RST_D
  movwf   MOT_RST_COM
  call    MOT_RST

;***********************************************************************

;************Module Move*************************************************

;***********************************************************************

  movlw   .50
  movwf   MOT_VEL
  bsf     MOT_CON,COMTYPE
  movlw   .0
  movwf   MOT_T_DIST_ANG
  bsf     MOT_CON,FWDBACK
  call    MOT_STR

;***********************************************************************

;LLamada a subutina
    call    TestDistance

;************Module Assigned********************************************

;***********************************************************************

  movlw   .25
  movwf   consigne

;***********************************************************************
;************Module ResetMoveInformation********************************

;***********************************************************************

  movlw   RST_KM
  movwf   MOT_RST_COM
  call    MOT_RST
  movlw   RST_D
  movwf   MOT_RST_COM
  call    MOT_RST

;***********************************************************************

;**************Module Turn**********************************************

;***********************************************************************

  movlw   .50
  movwf       MOT_VEL
  bsf     MOT_CON,COMTYPE
  movlw   .0
  movwf   MOT_T_DIST_ANG
  movlw   0x01
  movwf   MOT_CENWHEEL
  bsf     MOT_CON,RL
  bsf     MOT_CON,FWDBACK
  call    MOT_ROT

;***********************************************************************

;LLamada a subutina
    call    TestAngle

;************Module Assigned********************************************

;***********************************************************************

  movlw   .20
  movwf   consigne

;***********************************************************************
;************Module ResetMoveInformation********************************

;***********************************************************************

  movlw   RST_KM
  movwf   MOT_RST_COM
  call    MOT_RST
  movlw   RST_D
  movwf   MOT_RST_COM
  call    MOT_RST

;***********************************************************************

;************Module Move*************************************************

;***********************************************************************

  movlw   .50
  movwf   MOT_VEL
  bsf     MOT_CON,COMTYPE
  movlw   .0
  movwf   MOT_T_DIST_ANG
  bsf     MOT_CON,FWDBACK
  call    MOT_STR

;***********************************************************************

;LLamada a subutina
    call    TestDistance

;************Module Assigned********************************************

;***********************************************************************

  movlw   .25
  movwf   consigne

;***********************************************************************
;************Module ResetMoveInformation********************************

;***********************************************************************

  movlw   RST_KM
  movwf   MOT_RST_COM
  call    MOT_RST
  movlw   RST_D
  movwf   MOT_RST_COM
  call    MOT_RST

;***********************************************************************

;**************Module Turn**********************************************

;***********************************************************************

  movlw   .50
  movwf       MOT_VEL
  bsf     MOT_CON,COMTYPE
  movlw   .0
  movwf   MOT_T_DIST_ANG
  movlw   0x01
  movwf   MOT_CENWHEEL
  bsf     MOT_CON,RL
  bsf     MOT_CON,FWDBACK
  call    MOT_ROT

;***********************************************************************

;LLamada a subutina
    call    TestAngle

;************Module Assigned********************************************

;***********************************************************************

  movlw   .20
  movwf   consigne

;***********************************************************************
;************Module ResetMoveInformation********************************

;***********************************************************************

  movlw   RST_KM
  movwf   MOT_RST_COM
  call    MOT_RST
  movlw   RST_D
  movwf   MOT_RST_COM
  call    MOT_RST

;***********************************************************************

;************Module Move*************************************************

;***********************************************************************

  movlw   .50
  movwf   MOT_VEL
  bsf     MOT_CON,COMTYPE
  movlw   .0
  movwf   MOT_T_DIST_ANG
  bsf     MOT_CON,FWDBACK
  call    MOT_STR

;***********************************************************************

;LLamada a subutina
    call    TestDistance

;************Module Assigned********************************************

;***********************************************************************

  movlw   .25
  movwf   consigne

;***********************************************************************
;************Module ResetMoveInformation********************************

;***********************************************************************

  movlw   RST_KM
  movwf   MOT_RST_COM
  call    MOT_RST
  movlw   RST_D
  movwf   MOT_RST_COM
  call    MOT_RST

;***********************************************************************

;**************Module Turn**********************************************

;***********************************************************************

  movlw   .50
  movwf       MOT_VEL
  bsf     MOT_CON,COMTYPE
  movlw   .0
  movwf   MOT_T_DIST_ANG
  movlw   0x01
  movwf   MOT_CENWHEEL
  bsf     MOT_CON,RL
  bsf     MOT_CON,FWDBACK
  call    MOT_ROT

;***********************************************************************

;LLamada a subutina
    call    TestAngle

;************Module Stop************************************************

;***********************************************************************

;   Call STOP 
    call    MOT_STOP

;***********************************************************************

loopEnd:
  goto    loopEnd

TestAngle:

label1:
;************Module DigInfra*****************************************

;***********************************************************************

  call    SEN_OBS_DIG
  clrf   AUX_00
  btfsc   SEN_OBS_SIDE_L,0
  bsf     AUX_00,0
  btfsc   SEN_OBS_SIDE_R,0
  bsf     AUX_00,0
  btfsc   SEN_OBS_CENTER_L,0
  bsf     AUX_00,0
  btfsc   SEN_OBS_CENTER_R,0
  bsf     AUX_00,0
  btfss   AUX_00,0
  goto    label2

;***********************************************************************

;LLamada a subutina
    call    TroisBeep

  return

label2:
;************Module Compare Angle**************************************

;**********************************************************************

  movlw   STATUS_A
  movwf   MOT_STATUS_COM
  call    MOT_FDBCK
  movf    MOT_STATUS_DATA_0,W
  subwf   consigne,W
  btfss   STATUS,C
  return

;***********************************************************************

  goto    label1


TestDistance:

label3:
;************Module DigInfra*****************************************

;***********************************************************************

  call    SEN_OBS_DIG
  clrf   AUX_00
  btfsc   SEN_OBS_SIDE_L,0
  bsf     AUX_00,0
  btfsc   SEN_OBS_SIDE_R,0
  bsf     AUX_00,0
  btfsc   SEN_OBS_CENTER_L,0
  bsf     AUX_00,0
  btfsc   SEN_OBS_CENTER_R,0
  bsf     AUX_00,0
  btfss   AUX_00,0
  goto    label4

;***********************************************************************

;LLamada a subutina
    call    TroisBeep

  return

label4:
;***************Module Compare Km**************************************

;**********************************************************************

  movlw   STATUS_KM
  movwf   MOT_STATUS_COM
  call    MOT_FDBCK
  movf    MOT_STATUS_DATA_0,W
  subwf   consigne,W
  btfss   STATUS,C
  return

;***********************************************************************

  goto    label3


TroisBeep:
;************Module Stop************************************************

;***********************************************************************

;   Call STOP 
    call    MOT_STOP

;***********************************************************************


label5:
;************Module Maths***********************************************

;***********************************************************************

  movlw   .1
  addwf   Repeat3,F

;***********************************************************************

;************Module Speaker*********************************************

;***********************************************************************

  movlw   .70
  movwf	SEN_SPEAKER_FREQ
  movlw	SPEAKER_TIME
  movwf	SEN_SPEAKER_ON_OFF
  movlw   .5
  movwf	SEN_SPEAKER_TIME
  call	SEN_SPEAKER

;***********************************************************************

;************Module Pause***********************************************

;***********************************************************************

  banksel	    AUX_00	 
  movlw   .10
  movwf   AUX_00
  call    Delay_50ms_mOwayGUI

;***********************************************************************

;************Module Comparative*******************************************

;************************************************************************

  movf   Repeat3,W
  addlw   .253
  btfsc   STATUS,C
  return

;***********************************************************************

  goto    label5


END
