Está en la página 1de 4

Programa para el pic 16f877a que hace uso

del puerto A y puerto B

processor 16f877A
include <p16f877A.inc>
reg1 equ H'21'
reg2 equ H'22'
reg3 equ H'23'
token equ h'25'
RESPALDO EQU H'27'
token2 equ h'29'
org 0
goto inicio

org 5

inicio:
clrf PORTA ;limpia el puerto A
bsf STATUS,RP0 ;cambio al banco 1 :01
movlw 0x06 ;PORTB
movwf ADCON0
movlw 0x03
movwf TRISA
clrf TRISB
bcf STATUS,RP0 ; cambia al banco 0 :00

loop:
movf PORTA,W
andlw 0x03
addwf PCL,F
goto p4
goto p3
goto p2
goto p1
;
p1:
movlw b'10000000'
movwf token
loop2:
movf token,W
movwf PORTB
rrf PORTB,W
movwf token
call retardo
btfss token,0
goto loop2
loop3:
movf token,W
movwf PORTB
rlf PORTB,W
movwf token
call retardo
btfss token,7
goto loop3
goto loop
;comando 00
p2:
movlw b'10000000'
movwf PORTB
call retardo
movlw b'11000000'
movwf PORTB
call retardo
movlw b'11100000'
movwf PORTB
call retardo
movlw b'11110000'
movwf PORTB
call retardo
movlw b'11111000'
movwf PORTB
call retardo
movlw b'11111000'
movwf PORTB
call retardo
movlw b'11111100'
movwf PORTB
call retardo
movlw b'11111110'
movwf PORTB
call retardo
movlw b'11111111'
movwf PORTB
call retardo
movlw b'11111110'
movwf PORTB
call retardo
movlw b'11111100'
movwf PORTB
call retardo
movlw b'11111000'
movwf PORTB
call retardo
movlw b'11110000'
movwf PORTB
call retardo
movlw b'11100000'
movwf PORTB
call retardo
movlw b'11000000'
movwf PORTB
call retardo
movlw b'10000000'
movwf PORTB
call retardo
goto loop
;comando 01
p3:
movlw b'00000000'
movwf PORTB
call retardo
movlw b'00011000'
movwf PORTB
call retardo
movlw b'00111100'
movwf PORTB
call retardo
movlw b'01111110'
movwf PORTB
call retardo
movlw b'11111111'
movwf PORTB
call retardo
movlw b'01111110'
movwf PORTB
call retardo
movlw b'00111100'
movwf PORTB
call retardo
movlw b'00011000'
movwf PORTB
call retardo
goto loop
;comando 02
p4:
movlw b'00000000'
movwf PORTB
call retardo
movlw b'00000001'
movwf PORTB
call retardo
movlw b'00000010'
movwf PORTB
call retardo
movlw b'00000011'
movwf PORTB
call retardo
movlw b'00000100'
movwf PORTB
call retardo
movlw b'00000101'
movwf PORTB
call retardo
movlw b'00000110'
movwf PORTB
call retardo
movlw b'00000111'
movwf PORTB
call retardo
movlw b'00000111'
movwf PORTB
call retardo
movlw b'00000111'
movwf PORTB
call retardo
movlw b'00000110'
movwf PORTB
call retardo
movlw b'00000101'
movwf PORTB
call retardo
movlw b'00000100'
movwf PORTB
call retardo
movlw b'00000011'
movwf PORTB
call retardo
movlw b'00000010'
movwf PORTB
call retardo
movlw b'00000001'
movwf PORTB
call retardo
movlw b'00000000'
movwf PORTB
call retardo
goto loop

;comando 03
retardo
clrf reg1
clrf reg2
movlw 0x05
movwf reg3

bucle
decfsz reg1,1
goto bucle
decfsz reg2,1
goto bucle
decfsz reg3,1
goto bucle
return
;secuencia

MOVLW PCL
MOVWF RESPALDO
GOTO SECUENCIA
SECUENCIA:
movf PORTA,W
SUBLW 0X00
BTFSC STATUS,Z
GOTO p1
movf PORTA,W
SUBLW 0X01
BTFSC STATUS,Z
GOTO p2
movf PORTA,W
SUBLW 0X02
BTFSC STATUS,Z
GOTO p3
movf PORTA,W
SUBLW 0X03
BTFSC STATUS,Z
GOTO p4

end

También podría gustarte