;   PIC TRAINING KIT PROGRAM #1

              ;   JANG01.ASM

              ;   OSC : XT

              ;   WDT : NO

 

              LIST P=PIC16F84 , F=INHX8M

 

              ;

              ;  SYSTEM REGISTER

              ;

 

INDIR    EQU  00H                  ;PAGE 0

RTCC     EQU  01H

PC       EQU  02H

STATUS   EQU  03H

FSR      EQU  04H

PORTA    EQU  05H

PORTB    EQU  06H

EEDATA   EQU  08H

EEADR    EQU  09H

PCLATH   EQU  0AH

INTCON   EQU  0BH

 

OPTIONR  EQU  01H                  ;PAGE 1

TRISA    EQU  05H

TRISB    EQU  06H

EECON1   EQU  08H

 

             ;

             ;     BIT DEFINITION

             ;

 

CF     EQU   .0                     ;STATUS

DC     EQU   .1

ZF     EQU   .2

PD     EQU   .3

TO     EQU   .4

RP0    EQU   .5

 

            ;

            ;       MAIN ROUTINE

            ;

MOTOR   EQU     31H

TEMP_0  EQU     32H

TEMP_1  EQU     33H

TEMP_2  EQU     34H

TEMP_3  EQU     35H

 

       ORG  0

 

       BSF    STATUS,RP0

       MOVLW  B'00000111'

       MOVWF  TRISA

       MOVLW  B'00000000'

       MOVWF  TRISB

       BCF    STATUS,RP0

 

MAIN

;-------------------------------------------

;-----------ÃʱâÈ­ °úÁ¤ --------------------

;-------------------------------------------

 

       MOVLW    B'00000000'

       MOVWF    PORTB

 

       MOVLW    .4

       MOVWF    TEMP_0

       BCF      STATUS,CF

 

JP_0   MOVLW    B'00001000'

       MOVWF    PORTA

       CALL     DELAY_0

 

       MOVLW    B'00000000'

       MOVWF    PORTA

       CALL     DELAY_0

 

       DECFSZ   TEMP_0

       GOTO     JP_0

       

;--------------------------------------------

;------------¼¾¼­ÀÔ·Â, ÆÇ´ÜºÎ----------------

;--------------------------------------------

 

START

       MOVLW     B'00000000'

       MOVWF     PORTB

       BCF       STATUS,CF

 

       BTFSC     PORTA,1

       GOTO      JUMP   

 

       BTFSC     PORTA,0

       CALL      LEFT_GO   

 

       BTFSC     PORTA,2

       CALL      RIGHT_GO

 

       GOTO      START   

        

JUMP   BTFSC     PORTA,0

       CALL      LEFT_GO

 

       BTFSC     PORTA,2

       CALL      RIGHT_GO

 

       CALL      FORWARD_GO

 

;-------------------------------------------------

;------------- MOTOR -----------------------------

;-------------------------------------------------

 

LEFT_GO  

       MOVLW   .4

       MOVWF   TEMP_0

       MOVLW   B'00000001'

       CALL    CONTROL

       GOTO    START

 

FORWARD_GO

       MOVLW   .4

       MOVWF   TEMP_0

       MOVLW   B'00010001'

       CALL    CONTROL

       GOTO    START

 

RIGHT_GO

       MOVLW   .4

       MOVWF   TEMP_0

       MOVLW   B'00010000'

       CALL    CONTROL

       GOTO    START

 

 

;------------------------------------------------------

;------------------MOTOR CONTROL-----------------------

;------------------------------------------------------

 

CONTROL

       MOVWF   MOTOR

 

MJP_1  MOVF    MOTOR,W

       MOVWF   PORTB

       RLF     MOTOR,F

       CALL    DELAY_1

       DECFSZ  TEMP_0

       GOTO    MJP_1

       RETURN

 

;-------------------------------------------------------

;--------------------TIME DELAY-------------------------

;-------------------------------------------------------

 

DELAY_0

       MOVLW    .2

       MOVWF    TEMP_1

       MOVLW    .255

       MOVWF    TEMP_2

       MOVLW    .255

       MOVWF    TEMP_3

DJP_1  DECFSZ   TEMP_3

       GOTO     DJP_1

       MOVWF    TEMP_3

       DECFSZ   TEMP_2

       GOTO     DJP_1

       MOVWF    TEMP_2

       DECFSZ   TEMP_1

       GOTO     DJP_1

       RETURN

 

 

DELAY_1

        MOVLW   .13

        MOVWF   TEMP_1

        MOVLW   .255

        MOVWF   TEMP_2

DJP_2   DECFSZ  TEMP_2

        GOTO    DJP_2

        MOVWF   TEMP_2

        DECFSZ  TEMP_1

        GOTO    DJP_2

        RETURN

 

        END