Autor Tema: Me toi liandooooo con mi primer programa  (Leído 3961 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Xelene

  • PIC12
  • **
  • Mensajes: 81
Me toi liandooooo con mi primer programa
« en: 29 de Octubre de 2004, 04:58:00 »
Espero q el primer programa sea el más dificilillo de sacar...
Toi intentando encender un simple LED. Tengo la placa PICDEM PLUS 2 de MICROCHIP, q tiene tres pulsadores (Reset, RA4 y RB0) y 4 LEDS (RB0,RB1,RB2 y RB3). Entonces...

Si quiero encender el LED RB0 pulsando el switch RB0... el trisb,0 lo configuro como entrada, salida??" no hace falta configurarlo??? Y otra cosilla, puedo encender más de un led pulsando el mismo switch????...

Sé q son tonterias... pero es q me estoy estancando aqui.. Llorando

Desconectado Elena2000

  • PIC24F
  • *****
  • Mensajes: 722
RE: Me toi liandooooo con mi primer programa
« Respuesta #1 en: 29 de Octubre de 2004, 07:30:00 »
Hola guapa,

No te preocupes, que eso nos ha pasado a todos. Ya verás como pronto te haces una experta de estos cacharritos, y espero que dures en el foro! porque casi casi te diría que soy la única nena que anda por aquí en medio de estos osos con orejas... Giño espero que te traten bien, conmigo son estupendos.

A ver, con respecto a tu pregunta. Si quieres encender un led en RB0, tienes que configurar ese pin del puerto como salida, y no podrías usar el pulsador que trae la placa en el RB0, porque entonces lo tendrías que configurar como entrada. Una cosa u otra, no hay más tu tia. Para encender ese led, que recuerda debe ser una salida, debes configurar por ejemplo RB4 como entrada, porque hay tienes un pulsador también, no? y así te podría funcionar. Dime, ¿estás con ensamblador? lo digo para ayudarte con el código, si quieres pegarlo aquí y te comentamos cómo se haría exactamente.
Encender más de un led accionando la misma entrada es sencillo. Anda, pon el código y te ayudamos mejor.

Desconectado Xelene

  • PIC12
  • **
  • Mensajes: 81
RE: Me toi liandooooo con mi primer programa
« Respuesta #2 en: 01 de Noviembre de 2004, 09:46:00 »
Asias x tu ayuda Elena Sonrisa !!! Seguramente seguiré x aki, xq me veo con mil dudas en la cabeza, jejeje y como me ayudais tanto, fijo q sigo Vacilando

Hago el programa en ensamblador si, este es el q acabo de hacer, no lo he compilado ni he hecho na, asi q seguramente tendré errores o simplemente no funcionará, ya me dirás q opinas: (me ahorro la cabecera)

;   LIST P=16F84
#INCLUDE <P16F84.INC>
status   equ   0x03      ;Registro del estado Aritmético de la ALU
Porta   equ   0x05      ;Puerto A
Portb   equ   0x06      ;Puerto B
trisa   equ   0x85      ;Registro de configuración del Puerto A
trisb   equ   0x86      ;Registro de configuración del Puerto B
CONTA   equ   0x0C
#define   BANK1   bsf status,5   ;Macro para abreviar el BANCO 1
#define   BANK0   bcf status,5   ;Macro para abreviar el BANCO 0
   org   0      ;Posición 0 de la memoria de programa
INICIO    BANK1         ;Seleccion del Banco 1
   bcf   trisb,0      ;Bit 0 de trisb en "0" RB0 = Salida
   bsf   trisa,4      ;Bit 4 de trisa en "1" RA4 = Entrada
   BANK0         ;seleccion del Banco 0      
   bcf   Portb,0      ;Bit 0 del Puerto B puesto a "0" (lógico). LED OFF
ESPERA   btfss   Porta,4      ;Lee el interruptor y espera a que sea "1". Han pulsado?
   goto   ESPERA      ;No han pulsado, va a la etiqueta ESPERA
   call   PULSAR      ;Si han pulsado, llama a la etiqueta PULSAR
PULSAR   bsf   Portb,0      ;Bit 0 del PUERTO B "1". Enciende el LED
   btfsc   Porta,4      ;Lee el interruptor y espera a que sea "0". Han soltado?
   goto   PULSAR      ;No, va a la etiqueta PULSAR
   call   ESPERA      ;Si, va a la etiqueta ESPERA
   end         ;fin del programa

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
RE: Me toi liandooooo con mi primer programa
« Respuesta #3 en: 01 de Noviembre de 2004, 14:10:00 »
Hola Xelene:
Dos cosas sobre el programa que pones
1º Aun que no los utilices ,cuando configures un puerto sea A o B es aconsejable que cofigures todo el y no sólo un pin de cada uno.
2º Cuando se trata de comprobar el estado de un pulsador, interruptor, etc. es muy aconsejable el poner algun tipo de retardo, bien por software o bien por Hardware. esto se debe porque al actuar un interruptor, por ejemplo, este no se cierra una sola vez sino que se producen un monton de apertutras y cierres del contacto, es lo que se llama efecto rebote. Es como una pelota que la tiras hacia arriba y al caer se producen unos botes, cada vez menores hasta que se estabiliza, pelota pegada al suelo.
Si no haces esto el micro es muy rápido al leer el estado del pulsador y leera cosasa extreñas(inestables).
Por lo demás creo que está bastante correcto el programa
Un saludo F.
Todos los días se aprende algo nuevo.

Desconectado Xelene

  • PIC12
  • **
  • Mensajes: 81
RE: Me toi liandooooo con mi primer programa
« Respuesta #4 en: 02 de Noviembre de 2004, 06:41:00 »
Gracias x tu ayuda Fer_TACA Giño

He hecho algunas modificaciones al programa, haciendo lo que decias en el mensaje anterior, aunq no estoy muy segura si he hecho bien lo del retardo, aqui os dejo el programa, ya me direis si lo he hecho bien o no;

;   LIST P=16F84
w   equ   0
f   equ   1
status   equ   0x03      ;Registro del estado Aritmético de la ALU
Porta   equ   0x05      ;Puerto A
Portb   equ   0x06      ;Puerto B
trisa   equ   0x85      ;Registro de configuración del Puerto A
trisb   equ   0x86      ;Registro de configuración del Puerto B
CONTA1   equ   0x0C      ;Registro del primer contador
CONTA2    equ   0x0D      ;Registro del segundo contador
#define   BANK1   bsf status,5   ;Macro para abreviar el BANCO 1
#define   BANK0   bcf status,5   ;Macro para abreviar el BANCO 0
   org   0      ;Posición 0 de la memoria de programa
INICIO    BANK1         ;Seleccion del Banco 1
   clrf   trisb      ;Programa el puerto B como Salida
   movlw   b"00001111"   ;
   movwf   trisa      ;Programa el puerto A como Entrada
   BANK0         ;seleccion del Banco 0      
   clrf   CONTA1      ;Pone a 0 CONTA1
   clrf   CONTA2      ;Pone a 0 CONTA2
ESPERA   clrf   Portb      ;Apaga los LEDS borrando el puerto B
   btfss   Porta,4      ;Lee el interruptor y espera a que sea "1". Han pulsado?
   goto   ESPERA      ;No han pulsado, va a la etiqueta ESPERA
   call   RETARDO      ;Si han pulsado, llama a la rutina RETARDO
PULSAR   bsf   Portb,0      ;Bit 0 del PUERTO B "1". Enciende el LED
   btfsc   Porta,4      ;Lee el interruptor y espera a que sea "0". Han soltado?
   goto   PULSAR      ;No, va a la etiqueta PULSAR
   call   ESPERA      ;Si, va a la etiqueta ESPERA
;******************************************************************************************
;ESTA RUTINA GENERA UN RETARDO PARA EVITAR QUE LOS REBOTES QUE GENERA EL PULSADOR AL SER
;PRESIONADO CONFUNDAN AL MICROCONTROLADOR.
;******************************************************************************************
RETARDO   decfsz   CONTA1,f   ;Decrementa CONTA1 y comprueba si es 0
   goto   RETARDO      ;Si no es 0, decrementa CONTA1
   decfsz   CONTA2,f   ;si es 0, decrementa CONTA2
   goto   RETARDO      ;si CONTA2 no es 0 decrementa CONTA1
   return         ;vuelve al programa principal
   end         ;fin del programa

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
RE: Me toi liandooooo con mi primer programa
« Respuesta #5 en: 02 de Noviembre de 2004, 14:33:00 »
Hola Xelene:
Respecto al programa que adjuntas me he permitido ponerte un ejemplo de como detecto el estado de un interruptor , pulsador, etc. Dependiendo de lo que quieras realizar los Wait_0 y Wait 1 pueden ir uno delante del otro y al revés.

Wait_0  btfss PORT,4     ;RA4 está a 1?
goto      Wait_0              ; NO esperar
call        retardo              ;Retardo para eliminar rebotes

Wait_1  btfsc  PORTA,4   ; RA4 está a 0?
goto      Wait_1              ; No esperar
call        retardo              ;Eliminar rebotes. Ha habido un pulso
.....

Más programa.......

Por otra parte se me olvido comentarte lo siguiente: Co respecto al primer programa que posteaste si pones
 #INCLUDE <P16F84.INC> después del  LIST P=16F84, entonces no te hace falta poner ningún [color=FF0000][/color]"Equ" refiriendose a los registros del micro. Estos ya están definidos en el archivo P16F84.INC
No te preocupes ninguno nacimos sabiendo y estoy seguro que a todos nos costó el aprender
GiñoGiñoGiño

Un saludo Fermín
Todos los días se aprende algo nuevo.

Desconectado Xelene

  • PIC12
  • **
  • Mensajes: 81
RE: Me toi liandooooo con mi primer programa
« Respuesta #6 en: 03 de Noviembre de 2004, 03:00:00 »
Rebotado Ensamblado ok Rebotado Programado okRebotado

Lloricaxo no me hace lo q quiero!!!!! Llorica

Conecto la alimentacion y el led está encendido y al pulsar el switch se apaga... cual es el fallo??


Desconectado Elena2000

  • PIC24F
  • *****
  • Mensajes: 722
RE: Me toi liandooooo con mi primer programa
« Respuesta #7 en: 03 de Noviembre de 2004, 04:03:00 »
Xelene, jeje, que no cunda el pánico, anda. Dinos, ¿qué programa has ensamblado? el que te sugirió Fermín o el tuyo del principio?

Desconectado Xelene

  • PIC12
  • **
  • Mensajes: 81
RE: Me toi liandooooo con mi primer programa
« Respuesta #8 en: 03 de Noviembre de 2004, 04:13:00 »
Ta todo controlauuuu!!!! Sonrisa Gigante

No problemo Angelito resulta q mis pulsadores estan normalmente abiertos, osea q si no los pulso salen 5 voltios y si los pulso la salida es 0 así q el programa ya sí q sí, ha qdado tal q así:

;******************************************************************************************
;      OSC: RC      WDT: OFF   PWRTE:ON   CP:OFF
;******************************************************************************************
;
;   LIST P=16F84
w   equ   0
f   equ   1
status   equ   0x03      ;Registro del estado Aritmético de la ALU
Porta   equ   0x05      ;Puerto A
Portb   equ   0x06      ;Puerto B
trisa   equ   0x85      ;Registro de configuración del Puerto A
trisb   equ   0x86      ;Registro de configuración del Puerto B
CONTA1   equ   0x0C      ;Registro del primer contador
CONTA2    equ   0x0D      ;Registro del segundo contador
#define   BANK1   bsf status,5   ;Macro para abreviar el BANCO 1
#define   BANK0   bcf status,5   ;Macro para abreviar el BANCO 0
   org   0      ;Posición 0 de la memoria de programa
   goto   INICIO      ;Comienza el programa despues
   org   5      ;del vector de interrupcion
INICIO    BANK1         ;Seleccion del Banco 1
   clrf   trisb      ;Programa el puerto B como Salida
   movlw   b"00001111"   ;
   movwf   trisa      ;Programa el puerto A como Entrada
   BANK0         ;seleccion del Banco 0      
   clrf   CONTA1      ;Pone a 0 CONTA1
   clrf   CONTA2      ;Pone a 0 CONTA2
ESPERA   clrf   Portb      ;Apaga los LEDS borrando el puerto B
   btfsc   Porta,4      ;Lee el interruptor y espera a que sea "0". Han pulsado?
   goto   ESPERA      ;No han pulsado, va a la etiqueta ESPERA
   call   RETARDO      ;Si han pulsado, llama a la rutina RETARDO
PULSAR   bsf   Portb,0      ;Bit 0 del PUERTO B "1". Enciende el LED
   btfss   Porta,4      ;Lee el interruptor y espera a que sea "1". Han soltado?
   goto   PULSAR      ;No, va a la etiqueta PULSAR
   call   ESPERA      ;Si, va a la etiqueta ESPERA
;******************************************************************************************
;ESTA RUTINA GENERA UN RETARDO PARA EVITAR QUE LOS REBOTES QUE GENERA EL PULSADOR AL SER
;PRESIONADO CONFUNDAN AL MICROCONTROLADOR.
;******************************************************************************************
RETARDO   decfsz   CONTA1,f   ;Decrementa CONTA1 y comprueba si es 0
   goto   RETARDO      ;Si no es 0, decrementa CONTA1
   decfsz   CONTA2,f   ;si es 0, decrementa CONTA2
   goto   RETARDO      ;si CONTA2 no es 0 decrementa CONTA1
   return         ;vuelve al programa principal
   end         ;fin del programa
   
Gracias Elena, jejeje y gracias Fermin Rebotado
Ya me furrula!!

Desconectado Elena2000

  • PIC24F
  • *****
  • Mensajes: 722
RE: Me toi liandooooo con mi primer programa
« Respuesta #9 en: 03 de Noviembre de 2004, 04:29:00 »
Me alegro mucho!!! RebotadoRebotadoRebotadoRebotadoRebotado y a mi no me des las gracias, que el único que te ha ayudado ha sido Fermín, yo no he hecho na de na..
Pues genial, ahora ya puedes avanzar y hacer un programa que controle el movimiento de un satélite, por ejemplo, además hay no hay rebotes. Giño
Rebotado

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
RE: Me toi liandooooo con mi primer programa
« Respuesta #10 en: 03 de Noviembre de 2004, 15:51:00 »
Enhorabuena y bienvenida al mundo de los picsSonrisa Gigante, ya veras como poquito a poco vas haciendo algo más grande.
FermínSonrisaSonrisa
Todos los días se aprende algo nuevo.


 

anything