Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
mira tengo 5 pulsadores cada 1 activa una secuencia de 8 led (rb0-rb7)
ra0 no hace nada
ra1 activa la secuencia 10000000 ese valor tiene que pasar de forma secuencia por las otras salidas (rb0-rb7)
ra2 con la secuencia 11001100 y hace lo mismo incrementa el valor de la misma forma
y asi con cada secuencia activada por cada pulsador.
aaaaaa.al presionar 2 pulsadores no ocurre nada xd avance esto
List P=16F84A
Include <P16F84A.INC>
inicio
bsf STATUS,RP0
clrf TRISB
movlw b'11111111'
movwf TRISA
bcf STATUS,RP0
Principal
btfsc PORTA,0
call uno
btfsc PORTA,1
call dos
btfsc PORTA,2
call tres
btfsc PORTA,3
call cuatro
btfsc PORTA,4
call encender_5
call resetear
uno
btfsc PORTA,1
call resetear
btfsc PORTA,2
call resetear
btfsc PORTA,3
call resetear
btfsc PORTA,4
call resetear
call encender_1
dos
btfsc PORTA,2
call resetear
btfsc PORTA,3
call resetear
btfsc PORTA,4
call resetear
call encender_2
tres
btfsc PORTA,3
call resetear
btfsc PORTA,4
call resetear
call encender_3
cuatro
btfsc PORTA,4
call resetear
call encender_4
con esto activo cada entrada sin dejar funcionar las demas falta el programa con las salidas incrementadas ayuda no entiendoel comando xd
Hola, soy nuevo en este fantastico foro, por el que os tengo que felicitar a todos los que lo haceis posible. Descubri por casualidad el mundillo de los PICs y me fascino, estoy intentando aprender por mi cuenta pero me esta costando un triunfo, y escribo este mensaje para ver si alguien me puede ayudar.
Para ir poco a poco me he propuesto realizar un programilla sencillo (y aun asi no consigo que funcione), se trata de un 16F874A con tres pulsadores conectados en el puerto A (RA0, RA1 y RA3) y dos leds conectados en el puerto B (RB0 y RB1) y consiste en que al pulsar P1 encienda L1, si pulso P2 encienda L2 y si pulso P3 encienda ambos L1 y L2. EEl codigo es el siguiente, pero no me enciende ningun led, lo he cambiado y recambiado pero no consigo encender ningun led. ¿Que es lo que estoy haciendomal?
LIST P = 16F874A
PORTA EQU 0X05
PORTB EQU 0X06
ESTADO EQU 0X03
W EQU 0
ORG 0
bsf ESTADO,05 ;pongo a 1 el bit 5 de estado (RP0)
bcf ESTADO,06 ;y a 0 RP1 para direccionar al banco 1
movlw 0xff ;meto en W la congiguracion de los pines
movwf PORTA ;los establezco en el puerto a como entrada los tres primeros
movlw 0x00 ;meto la configuracion para el puerto b en W
movwf PORTB ;pongo todsa como salidas
bcf ESTADO,05 ;vuelvo a poner a 0 RP0 (ahora apunta al banco 0 de la memoria)
inicio btfsc PORTA, 0 ;chequea el bit 0 de PORTA, si es 0 salta una instruccion
movf PORTB, 0x01 ;mete un 1 en el pin 0 del puerto b (enciende el led)
btfsc PORTA, 1 ;chequeo el bit 1 de la puerta A
movf PORTB, 0x02 ;si esta pulsado P2 enciende L2
btfsc PORTA, 2 ;chequeo P3
movf PORTB, 0x03 ;si esta pulsado P3 endiende ambos leds
goto inicio ;bucle infinito
end
movlw 0x03
movwf PORTB
...
...
bsf PORTB,0
...
bcf PORTB,0
LIST P = 16F874A
#INCLUDE <P16F874A.INC>
__CONFIG _CP_OFF & _DEBUG_OFF & _WDT_OFF & _LVP_OFF & _XT_OSC
; Config es para configurar los fuses y el resto lo encuentras al último del archivo
; P16F874A.INC. Para saber que son debes de revisar el Datasheet del PIC en
; "CONFIGURATION WORD" donde explica que hace cada uno.
es lo que hace falta...quiero que esten siempre apagadoe excepto kuando accione los pulsadores
Loop:
btfsc PORTA,0
bsf PORTB,0
btfss PORTA,0
bcf PORTB,0
goto Loop
ORG 0x00
bsf STATUS,5 ; Banco 1
bcf STATUS,6 ;
movlw 0x07 ; PORTA como I/O digitales.
movwf ADCON1
movlw 0xFF ; meto en W la congiguracion de los pines
movwf TRISA ; >> Con 0xFF estableces todo el puerto como ENTRADAS
movlw 0x00 ; meto la configuracion para el puerto b en W
movwf TRISB ; pongo todsa como salidas
bcf STATUS,5 ; Banco 0
BucleA
clrf PORTB ; borra todo el PORTB (mantiene apagados los LEDs)
BucleB
btfsc PORTA,0 ; Chequea RA0, ¿Es cero? => salta una instrucción
bsf PORTB,0 ; de lo contrario pone a '1' el RB0 (LED1)
btfss PORTA,0 ; Chequea RA0, ¿Es uno? => salta una instrucción
bcf PORTB,0 ; de lo contrario pona '0' el RB0
btfsc PORTA,1 ; ... RA1?
bsf PORTB,1 ; pone a '1' el RB1 (LED2)
btfss PORTA,1 ; ... RA1?
bcf PORTB,1 ; pone a '0' el RB1
btfss PORTA,2 ; Chequea RA2, ¿Es uno? => salta una instrucción
goto BucleA ; de lo contrario salta a Bucle externo donde...
bsf PORTB,0 ; pone a '1' RB0 y RB1 (LED1 y LED2)
bsf PORTB,1
goto BucleB ; Continua con el bucle interno...
END