Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

Is the program OK?

Status
Not open for further replies.

paparts

New Member
;by joseph

STATUS EQU H'03' ;STATUS REGISTER
TRISB EQU H'86' ;TRISB REGISTER FOR SETUP OF PORTB
PORTB EQU H'06' ;PORTB REGISTER TO DRIVE PORT B
COUNT1 EQU H'0C' ;COUNT VARIABLE 1 IS IN GENERAL PURPOSE REG 08H
COUNT2 EQU H'0D' ;COUNT VARIABLE 2 IS IN GENERAL PURPOSE REG 09H

;***SET UP PORT B IN & OUTPUT****

BSF STATUS,5 ;SWITCH TO BANK0 TO SET UP PORT B
MOVLW B'11110000' ;RB7,6,5,4 IS INPUT
MOVWF TRISB ;RB3,2,1,0 IS OUTPUT
BCF STATUS,5 ;SWITCH BACK TO BANK0 TO USE PORT B

;***MAIN PROGRAM****

START MOVLW B'00000101' ;MAKE RB0&2 HIGH: MOVE FORWARD
MOVWF PORTB ;
MOVLW H'FE' ;RESET COUNT1 TO 254
MOVWF COUNT1 ;
MOVLW H'FE' ;RESET COUNT2 TO 254
MOVWF COUNT2 ;
BTFSS PORTB,4 ;
CALL LEFT ;EXECUTE LEFT ROUTINE
BTFSS PORTB,5 ;CENTER
CALL LEFT ;LEFT ROUTINE
BTFSS PORTB,6 ;
CALL RIGHT ;RIGHT ROUTINE
BTFSS PORTB,5 ;LEFT AND CENTER
BTFSS PORTB,4
CALL RIGHT
BTFSS PORTB,6 ;RIGHT AND CENTER
BTFSS PORTB,5
CALL LEFT
BTFSS PORTB,6
BTFSS PORTB,5
BTFSS PORTB,4
CALL STOP
GOTO START ;RETURN TO LABEL START

;***BACKLEFT ROUTINE****

LEFT MOVLW B'00001010' ;MAKE RB1&3 HIGH: MOVE BACKWARD
MOVWF PORTB ;
CALL DELAY ;
MOVLW B'00001001' ;MAKE RB2&3 HIGH: ROTATE LEFT
MOVWF PORTB ;
CALL DELAY ;
RETURN

;***BACKRIGHT ROUTINE****

RIGHT MOVLW B'00001010' ;MAKE RB1&3 HIGH: MOVE BACKWARD
MOVWF PORTB ;
CALL DELAY ;
MOVLW B'00000110' ;MAKE RB2&3 HIGH: ROTATE RIGHT
MOVWF PORTB ;
CALL DELAY ;
RETURN

;******BACKWARD......RIGHT**********

STOP MOVLW B'00001010'
MOVWF PORTB
MOVLW H'EE'
MOVWF COUNT1
DECFSZ COUNT1,1
MOVLW H'EE'
MOVWF COUNT2
DECFSZ COUNT2,1
GOTO STOP
CALL RIGHT

DELAY MOVLW H'EE' ;RESET ALL COUNTER VARIABLES
MOVWF COUNT1
MOVLW H'99'
MOVWF COUNT2

LOOP1 CLRWDT ;RESET THE WATCHDOG TIMER
DECFSZ COUNT1,1 ;this is a delay loop
GOTO LOOP1 ;tuned to make Cerberes
DECFSZ COUNT2,1 ;turn about 90 degrees
GOTO LOOP1
RETURN

END;






I modified the program cerbres robot. and I used LDR as my sensor.Is the program ok?
 
Status
Not open for further replies.

Latest threads

New Articles From Microcontroller Tips

Back
Top