Specifications

78
JSR INITSC0 ;INITIALISE SERIAL PORT
JSR INITKWG ;INITIALISE PORT G
JSR INITPWM ;SET UP PULSE WIDTH MODULATION
ON PORT P
JSR INITIRQ ;INITIALISE IRQ INTERRUPT
JSR INITPA
WAIT BRCLR PORTA,$01,SKP ;CHECK FRONT SENSOR AND IF ON
BRANCH TO TURNL
JSR TURNL
SKP LDAA COUNT
CMPA #$5A ;HAS MOTOR A COUNTED xx TIMES YET
(xx/2 REVOLUTIONS)
BMI WAIT ;IF NOT ,WAIT AND CHECK AGAIN
JSR COMP ;IF SO JUMP TO COMP (compare function)
BRA WAIT ;AFTER COMP GO BACK AND WAIT FOR
ANOTHER xx/2 REVOLUTIONS
;*************DRIVE FORWARDS****************************************************
DRFWD MOVB #$A0, PWDTY0 ;DUTY CYCLE FOR CHANNEL 0|
MOVB #$A0, PWDTY2 ;DUTY CYCLE FOR CHANNEL 2| **DRIVE
FORWARDS
RTS ;RETURN FROM SUBROUTINE
;********TURNING CODES**********************************************************
TURNL LDX #$0A00
LP BRCLR PORTA,$01,FALSE ;|
DEX ;LOOP TO CHECK SENSOR $0A00 TIMES
TO ENSURE NOT JUST NOISE
BNE LP ;|
BRCLR PORTA,$04,SKR ;IF LEFT SENSOR(3) BLOCKED, TURN
JSR TURNR ;RIGHT INSTEAD
SKR LDAA #'L'
JSR TXBYTE ;TRANSMIT L TO SCREEN (DEBUG)
MOVB #$00,PWDTY0 ;|
MOVB #$00,PWDTY2 ;|STOP MOTORS
JSR DELAY ;WAIT FOR DELAY PERIOD
MOVB #$00,ODMA ;|