Intelligent Video Conferencing

Status Report

Appendix--HC11 Assembly Code for Motor Control


PORTC   EQU $1003  ;WE WILL USE PORT C FOR HORIZONTAL ROTATION
DDRC   EQU $1007
ORTB   EQU $1004  ;WE WILL USE PORT B FOR VERTICAL ROTATION
       ORG $C000
       LDAA #$FF
       STAA DDRC  ;END OF OUTPUT INITIALIZATION
NIT:   LDX #RSEQ  ;THIS INITIALIZES THE POINTER TO THE SEQUENCE
       STX HROT
       STX VROT
HSTART: LDAA HANGL ;THIS GETS THE ANGLE OF ROTATION NEEDED
                  ;I NEED TO DIVIDE THE ANGLE BY 1.8
                  ;WHICH WILL GIVE ME THE STEPS
                  ;THEN I WILL PUT #STEPS IN LOC HSTEPS
       BRA HROT   ;GO TO HORIZONTAL MOTION ROUTINE 
VSTART: LDAA VANGL ;SAME COMMENTS AS ABOVE
                  ;FIND STEPS AND STORE IT
       BRA VROT   ;GO TO VERTICAL ROTATION ROUTINE

ROT:   LDX HROT   ;THIS STARTS THE ROTATION WHERE IT LEFT OFF 
       LDAB HNUM  ;KEEPS TRACK OF WHERE WE ARE IN SEQUENCE
       LDAA HDIR  ;THIS WILL GET DIRECTION
                  ;ASSUME 1 IS POS AND 0 IS NEG
       BEQ HRSTEP ;IF DIR IS NEG GO TO REVERSE STEP
HFSTEP: LDY HSTEPS ;THIS IS NUMBER OF STEPS TO TAKE
OOP1:  LDAA 0,X   ;THIS IS FOR FORWARD HORIZONTAL ROTATION
       STAA PORTC ;SENDS BIT PATTERN TO THE HORIZONTAL MOTOR
       INX
       DEY
       BEQ ENDH
       INCB
       CMPB #$08
       BNE LOOP1  ;THIS LOOKS FOR THE END OF ONE CYCLE OF THE STEP SEQ.
       CLRB       ;INITIALIZES THE STEP SEQUENCE AGAIN
       LDX #BSEQ  
       BRA LOOP1  ;GOES BACK AT BEGINNING OF SEQUENCE
HRSTEP: LDY HSTEPS ;THIS IS FOR REVERSE HORIZONTAL ROTATION
OOP2:  LDAA 0,X  
       STAA PORTC
       DEX
       DEY
       BEQ ENDH
       DECB
       BNE LOOP2 ;THIS LOOKS FOR THE END OF ONE CYCLE
       LDAB #$08
       LDX #ESEQ
       BRA LOOP2
ENDH:   STX HROT        
       STAB HNUM
       BRA VSTART
       
ROT:   LDX VROT   ;THIS STARTS THE ROTATION WHERE IT LEFT OFF 
       LDAB VNUM  ;KEEPS TRACK OF WHERE WE ARE IN SEQUENCE
       LDAA VDIR  ;THIS WILL GET DIRECTION
                  ;ASSUME 1 IS POS AND 0 IS NEG
       BEQ VRSTEP ;IF DIR IS NEG GO TO REVERSE STEP
VFSTEP: LDY VSTEPS ;THIS IS NUMBER OF STEPS TO TAKE
OOP3:  LDAA 0,X   ;THIS IS FOR FORWARD VERTICAL ROTATION
       STAA PORTB ;SENDS BIT PATTERN TO THE VERTICAL MOTOR
       INX
       DEY
       BEQ ENDV
       INCB
       CMPB #$08
       BNE LOOP3  ;THIS LOOKS FOR THE END OF ONE CYCLE OF THE STEP SEQ.
       CLRB       ;INITIALIZES THE STEP SEQUENCE AGAIN
       LDX #BSEQ  
       BRA LOOP3  ;GOES BACK AT BEGINNING OF SEQUENCE
VRSTEP: LDY VSTEPS ;THIS IS FOR REVERSE VERTICAL ROTATION
OOP4:  LDAA 0,X  
       STAA PORTB
       DEX
       DEY
       BEQ ENDV
       DECB
       BNE LOOP4 ;THIS LOOKS FOR THE END OF ONE CYCLE
       LDAB #$08
       LDX #ESEQ
       BRA LOOP4
ENDV:   STX VROT        
       STAB VNUM
       
       NOP
SEQ:   FCB $0A
       FCB $08
       FCB $09
       FCB $01
       FCB $05
       FCB $04
       FCB $06
SEQ:   FCB $02
ROT:   FDB $00        
NUM:   FCB $00
ROT:   FDB $00
NUM:   FCB $00
ANGL:  FCB $00
STEPS: FDB $00
DIR:   FCB $00
ANGL:  FCB $00
STEPS: FDB $00
DIR:   FCB $00

Return to the index or the appendix