16F887 Rotación Led
LIST P=16F887
INCLUDE
__CONFIG _CONFIG1, _INTOSC & _WDT_OFF & _PWRTE_OFF & _MCLRE_ON & _CP_OFF & _CPD_OFF & _BOR_OFF & _IESO_ON &_FCMEN_ON & _LVP_OFF
__CONFIG _CONFIG2, _WRT_OFF & _BOR40V
REGISTRO0 EQU 0x20
REGISTRO1 EQU 0x21
REGISTRO2 EQU 0X22
REGISTRO3 EQU 0x23
ORG 0
GOTO INICIO
ORG 4;CONFIGURACIÓN DE LOS PUERTOS
INICIO: BANKSEL TRISA ;TRABAJAR EN BANK1
MOVLW 0xFF ;COLOCAR VALOR EN EL REGISTRO W
MOVWF TRISD ;PUERTO D COMO ENTRADA
CLRF TRISB ;PUERTO B COMO SALIDABANKSEL ANSEL ;TRABAJAR EN BANK3
CLRF ANSEL ;ENTRADA Y SALIDA DIGITAL
CLRF ANSELH ;ENTRADA Y SALIDA DIGITAL
BANKSEL CM1CON0 ;TRABAJAR EN BANK2
BCF CM1CON0,7 ;COMPARADOR C1DESHABILITADO
BCF CM2CON0,7 ;COMPARADOR C2 DESHABILITADO
;COMIENZA EL PROGRAMA PARA ROTAR EL VALOR QUE ENCIENDE CADA LED
BANKSEL PORTA ;TRABAJAR EN BANK0
CLRF PORTB ;LIMPIAR PUERTO B (APAGARLEDS)
MOVLW B'10000000' ;COLOCAR VALOR EN EL REGISTRO W
MOVWF PORTB ;ENCENDER LED EN PIN RB7
ROTR: CALL RETARDO ;LLAMAR RUTINA "RETARDO"
RRF PORTB,1 ;ROTAR VALOR (ENCENDIDO)A LADERECHA
BTFSS PORTB,0 ;REVISAR SI EL VALOR HA LLEGADO A RB0
GOTO ROTR ;SI NO HA LLEGADO A RB0 ROTAR A LA DERECHA
ROTL: CALL RETARDO ;SI HA LLEGADO A RB0 LLAMAR RUTINA "RETARDO"
RLFPORTB,1 ;ROTAR VALOR A LA IZQUIERDA
BTFSS PORTB,7 ;REVISAR SI EL VALOR HA LLEGADO A RB7
GOTO ROTL ;SI NO HA LLEGADO A RB7 ROTAR A LA IZQUIERDA
GOTO ROTR ;SI HA LLEGADO A RB7 ROTAR A LA...
Regístrate para leer el documento completo.