Autor Tema: Ayundenme por fa con un ejercicio en el 16f84a en asm  (Leído 2349 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado felolive

  • PIC10
  • *
  • Mensajes: 5
Ayundenme por fa con un ejercicio en el 16f84a en asm
« en: 16 de Febrero de 2012, 02:28:04 »
Por favor ayudenme en este ejercicio la verdad me parecia facil pero todavia no doy con el
Lo que quiero es simplemente controlar un Led mediante un pulsador en el pic 16f84a
pero tanto el pulsador como el led esten en el mismo puerto en este caso el puerto B
Me he encontrado un programa que si hace esto pero utilizando el puerto A y el puerto B en este caso entrada y salida
y eso no es lo que busco... porfa ayudenme estoy programando en asm.
« Última modificación: 16 de Febrero de 2012, 20:10:53 por felolive »

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: Ayundenme por fa con un ejercicio en el 16f84a en asm
« Respuesta #1 en: 16 de Febrero de 2012, 02:59:34 »
¿Por que no pones lo que tienes realizado hasta el momento y asi odemos decirte donde tienes el error? De esa manera si te lo explicamos lo entenderas anres y la proxima vez, quizas tu mismo puedas ir realizando y comprendiendo la metodologia de programacion
Esto es mejor que no que te hagamos lo que quieres
Todos los días se aprende algo nuevo.

Desconectado felolive

  • PIC10
  • *
  • Mensajes: 5
Re: Ayundenme por fa con un ejercicio en el 16f84a en asm
« Respuesta #2 en: 16 de Febrero de 2012, 03:12:55 »
Entonces voy a ponerte el codigo del programa que tengo:

list p=16F84A
#include P16F84A.inc

Led               equ 0 ; Definimos Led como el bit cero de un registro, en este caso PORTB.-
Pulsador        equ 0 ; Definimos Pulsador como el bit 0, en este caso será para PORTA

             org 0x00 ; Aquí comienza el micro.-
             goto Inicio ; Salto a inicio de mi programa.-
             org 0x05 ; Origen del código de programa.-
Inicio
             bsf STATUS,RP0 ; Pasamos de Banco 0 a Banco 1.-
             movlw b'11111' ; Muevo 11111 a W.-
             movwf TRISA ; Cargo en TRISA.-
             movlw b'11111110'
             movwf TRISB
             bcf STATUS,RP0 ; Paso del Banco 1 al Banco 0
             bcf PORTB,Led ; Comienza apagado.-

 ;**** Control de Led ****
 Bucle
             btfsc PORTA,Pulsador ; Preguntamos si esta en 0 lógico.-
             goto Apagar ; Esta a 1 lógico, Apagamos Led.-
             bsf PORTB,Led ; Esta a 0 lógico, Encendemos Led.-
             goto Bucle ; Testeamos nuevamente la condición del Pulsador.-

Apagar
             bcf PORTB,Led ;Apagamos Led.-
             goto Bucle ;Testeamos nuevamente la condición del Pulsador.-

End

Asi tal como esta si me corre pero estoy ocupando los dos ppuertos del pic..
como debo hacer para solamente ocupar el puerto B
Es decir por ejemplo RB1 sea la entrada del pulsador
y RB7 sea la salida al Led..

gracias Fer_TACA
« Última modificación: 16 de Febrero de 2012, 03:24:23 por felolive »

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Ayundenme por fa con un ejercicio en el 16f84a en asm
« Respuesta #3 en: 16 de Febrero de 2012, 05:39:40 »
Si no tienes ningun problema, solo define en el principio "Pulsador equ 1" y en el chequeo "btfsc PORTB,Pulsador", y ya te debe funcionar.

Y si te lees esto, te van a funcionar, no solo ese programa, sino un monton de ellos:

http://www.todopic.com.ar/foros/index.php?topic=24720.0


Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: Ayundenme por fa con un ejercicio en el 16f84a en asm
« Respuesta #4 en: 16 de Febrero de 2012, 06:45:42 »
Tienes el bit 0 del uerto B declarado como salida y el 7 como entrada
[/quote]]
Es decir por ejemplo RB1 sea la entrada del pulsador
y RB7 sea la salida al Led..
[/quote]]

Debes de poner :

 movlw b'01111111'
             movwf TRISB
Luego compribar el bit 7 del puerto B: btfsc PORTB,Pulsador.
Pero para ello tienes que declarar el "pulsador" con el "equ" correspondiente al bit que necesitas, en tu caso el bit 7.

F.
« Última modificación: 16 de Febrero de 2012, 06:48:00 por Fer_TACA »
Todos los días se aprende algo nuevo.

Desconectado felolive

  • PIC10
  • *
  • Mensajes: 5
Re: Ayundenme por fa con un ejercicio en el 16f84a en asm
« Respuesta #5 en: 16 de Febrero de 2012, 16:12:37 »
gracias por responder la verdad si me ayudaron... gracias Fer_TACA.. te hice caso en lo q me dijiste
e hice algunas modificaciones q estaban mal... y por fin si me salio...
Aca les dejo el programa y les adjunto los archivos MPLAB y el Grafico... por cierto simule en NI Multisim 10 y MPLAB v8.83

LIST P=16F84A
#INCLUDE <P16F84A.INC>
RADIX HEX

AUXILIAR EQU 0X0C

         ORG 0
         GOTO INICIO
         ORG 5

Led             equ 7 ; Definimos Led como el bit cero de un registro, en este caso PORTB.-
Pulsador        equ 0 ; Definimos Pulsador como el bit 0, en este caso será para PORTB

INICIO
             bsf STATUS,RP0   ;Paso del Banco 0 al Banco 1
          movlw b'01111111'
             movwf TRISB
             bcf STATUS,RP0 ; Paso del Banco 1 al Banco 0
             bcf PORTB,Led ; Comienza apagado.-

 ;**** Control de Led ****
Bucle
             btfsc PORTB,Pulsador ; Preguntamos si esta en 0 o 1 lógico.-
             goto Encender ; Esta a 1 lógico, va a encender el Led.-
             bcf PORTB,Led ; Esta a 0 lógico, El Led se encuentra apagado.-
             goto Bucle ; Testeamos nuevamente la condición del Pulsador.-

Encender
             bsf PORTB,Led ;Encendemos Led.-
             goto Bucle ;Testeamos nuevamente la condición del Pulsador.-

End


EJERCICIO RESUELTO


 

anything