Mplab pic 16f84a

Buenas amigos, soy nuevo programando PICS en MPLAB, lo que sucede es que tengo que realizar un programa con el PIC 16F84A que prenda 8 LEDS, cada uno ubicado en uno de los puertos de B (RBO - RB7), pero este proceso debe realizarse al oprimir un solo pulsador ubicado en RA1, es decir, cada pulso debe hacer prender un LED pero apagando el LED anterior.

el programa que realice:


list p=16F84A
#include "P16F84A.INC"
org 0x00
TIEMPO equ 9Fh ; Variable para el bucle de retardo.
PORTB equ 06h ; Dirección del Port B.
TRISB equ 86h ; Dirección del registro tri-estado del Port B.
PORTA equ 05h ; Dirección del Port A.
TRISA equ 85h ; Dirección del registro tri-estado del Port A.
STATUS equ 03h ; Registro para seleccionar el banco.

bsf STATUS,5 ; Va al Banco 1
movlw 00h ; y configura
movwf TRISB ; ambos puertos A y B
movlw b'11111' ; como salidas,
movwf TRISA ; después vuelve
bcf STATUS,5 ; al Banco 0.
goto LED1

LED1
btfss PORTA,1
goto CLEAR
movlw b'00000001'
movwf PORTB
goto LED2

LED2
btfss PORTA,1
nop
rlf PORTB,1
goto LED3

LED3
btfss PORTA,1
nop
rlf PORTB,1 ; PORTB = 00000100, C = 0
goto LED4

LED4
btfss PORTA,1
nop
rlf PORTB,1 ; PORTB = 00001000, C = 0
goto LED5

LED5
btfss PORTA,1
nop
rlf PORTB,1 ; PORTB = 00010000, C = 0
goto LED6

LED6
btfss PORTA,1
nop
rlf PORTB,1 ; PORTB = 00100000, C = 0
goto LED7

LED7
btfss PORTA,1
nop
rlf PORTB,1 ; PORTB = 01000000, C = 0
goto LED8
LED8
btfss PORTA,1
nop
rlf PORTB,1 ; PORTB = 10000000, C = 0
goto RETORNO

RETORNO
btfss PORTA,1
nop
rlf PORTB,1
goto LED1

CLEAR
clrf PORTA
clrf PORTB

end


En teoria funciona, pero me cuenta automatico, y necesito que me cuente por cada vez que yo oprima el pulsador.
 
aver checa este programa que ise aver si te funciona

Código:
    LIST	P=16F84A
           #include <P16F84A.INC> 
	   __CONFIG _CP_OFF & _WDT_OFF & _XT_OSC
	
                           
                   ORG          0X00
	           BSF          STATUS,RP0
                   CLRF         TRISB
                   MOVLW       B'11111111'
                   MOVWF       TRISA
                   BCF          STATUS,RP0
                   CLRF         PORTB          
 

INICIO              BTFSS      PORTA,1
                    GOTO        INICIO
                    MOVLW     B'00000001'
                    MOVWF     PORTB
ROTACION            BTFSS      PORTA,1
                    GOTO        ROTACION
                    RLF           PORTB
                    BTFSS       PORTB,7
                    GOTO       ROTACION
                    GOTO       INICIO
                    END
 

Adjuntos

  • dosekk.txt
    662 bytes · Visitas: 4
Atrás
Arriba