Vous êtes sur la page 1sur 10

list p=16f877A ; list directive to define processor

#include <p16f877A.inc> ; processor specific variable definitions

__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _RC_OSC &
_WRT_OFF & _LVP_ON & _CPD_OFF

; '__CONFIG' directive is used to embed configuration data within .asm file.

; The lables following the directive are located in the respective .inc file.

; See respective data sheet for additional information on configuration word.

;***** VARIABLE DEFINITIONS

w_temp EQU 0x7D ; variable used for context saving

status_temp EQU 0x7E ; variable used for context saving

pclath_temp EQU 0x7F ; variable used for context saving

ESTADO EQU 0x20

;**********************************************************************

ORG 0x000 ; processor reset vector

nop ; nop required for icd


goto main ; go to beginning of program

ORG 0x004 ; interrupt vector location

movwf w_temp ; save off current W register contents

movf STATUS,w ; move status register into W register

movwf status_temp ; save off contents of STATUS register

movf PCLATH,w ; move pclath register into w register

movwf pclath_temp ; save off contents of PCLATH register

; isr code can go here or be located as a call subroutine elsewhere

movf pclath_temp,w ; retrieve copy of PCLATH register

movwf PCLATH ; restore pre-isr PCLATH register contents

movf status_temp,w ; retrieve copy of STATUS register

movwf STATUS ; restore pre-isr STATUS register contents

swapf w_temp,f

swapf w_temp,w ; restore pre-isr W register contents

retfie ; return from interrupt

main

call inicio_puertos

PRINCIPAL

CALL DERECHA

CALL IZQUIERDA
CALL PARALELO

CALL PARALELOINVERSO

CALL SALTOIZQUIERDO

CALL SALTODERECHA

goto PRINCIPAL

DERECHA

BSF ESTADO,5

CLRF TRISB

BCF ESTADO,6

CLRF PORTB

BSF ESTADO,5

CLRF TRISD

BCF ESTADO,6

CLRF PORTD

MOVLW B'00000001'

MOVWF PORTB

;CICLOS

RLF PORTB,1

MOVLW B'00000010'

MOVWF PORTB

;CICLOS

RLF PORTB,1

MOVLW B'00000100'

MOVWF PORTB
;CICLOS

RLF PORTB,1

MOVLW B'00001000'

MOVWF PORTB

;CICLOS

RLF PORTB,1

MOVLW B'00010000'

MOVWF PORTB

;CICLOS

RLF PORTB,1

MOVLW B'00100000'

MOVWF PORTB

;CICLOS

RLF PORTB,1

MOVLW B'01000000'

MOVWF PORTB

;CICLOS

RLF PORTB,1

MOVLW B'10000000'

MOVWF PORTB

return

IZQUIERDA
MOVLW B'10000000'

MOVWF PORTB

;CICLOS

RRF PORTB,1

MOVLW B'01000000'

MOVWF PORTB

;CICLOS

RRF PORTB,1

MOVLW B'00100000'

MOVWF PORTB

;CICLOS

RRF PORTB,1

MOVLW B'00010000'

MOVWF PORTB

;CICLOS

RRF PORTB,1

MOVLW B'00001000'

MOVWF PORTB

;CICLOS

RRF PORTB,1

MOVLW B'00000100'

MOVWF PORTB

;CICLOS

RRF PORTB,1
MOVLW B'00000010'

MOVWF PORTB

;CICLOS

RRF PORTB,1

MOVLW B'00000001'

MOVWF PORTB

return

PARALELO

;BSF ESTADO,7

;CLRF TRISB

;BCF ESTADO,8

;CLRF PORTB

BSF ESTADO,5

CLRF TRISD

BCF ESTADO,6

CLRF PORTD

MOVLW B'10000000'

MOVWF PORTB

MOVLW B'00000001'

MOVWF PORTD

RLF PORTD,1
RRF PORTB,1

MOVLW B'01000000'

MOVWF PORTB

MOVLW B'00000010'

MOVWF PORTD

RLF PORTD,1

RRF PORTB,1

MOVLW B'00100000'

MOVWF PORTB

MOVLW B'00000100'

MOVWF PORTD

RLF PORTD,1

RRF PORTB,1

MOVLW B'00010000'

MOVWF PORTB

MOVLW B'00001000'

MOVWF PORTD

return

PARALELOINVERSO

MOVLW B'00010000'
MOVWF PORTB

MOVLW B'00001000'

MOVWF PORTD

RRF PORTD,1

RLF PORTB,1

MOVLW B'00100000'

MOVWF PORTB

MOVLW B'00000100'

MOVWF PORTD

RRF PORTD,1

RLF PORTB,1

MOVLW B'01000000'

MOVWF PORTB

MOVLW B'00000010'

MOVWF PORTD

RRF PORTD,1

RLF PORTB,1

MOVLW B'10000000'

MOVWF PORTB
MOVLW B'00000001'

MOVWF PORTD

return

;¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿

SALTOIZQUIERDO

BSF ESTADO,5

CLRF TRISB

BCF ESTADO,6

CLRF PORTB

BSF ESTADO,5

CLRF TRISD

BCF ESTADO,6

CLRF PORTD

MOVLW B'00000010'

MOVWF PORTB

MOVLW B'00001000'

MOVWF PORTB

MOVLW B'00100000'

MOVWF PORTB

MOVLW B'10000000'

MOVWF PORTB
return

;================================================================================
===================================0

SALTODERECHA

MOVLW B'10000000'

MOVWF PORTB

MOVLW B'00100000'

MOVWF PORTB

MOVLW B'00001000'

MOVWF PORTB

MOVLW B'00000010'

MOVWF PORTB

return

inicio_puertos

bsf STATUS,6

CLRF PORTB

CLRF PORTD

BCF STATUS,5

return

END

Vous aimerez peut-être aussi