TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: escorpion151177 en 27 de Abril de 2004, 21:46:00
-
estoy aprendiendo a usar el MPLAB, pero me desconcierta. hago un programa en assembler y quiero ver como se comportan el PORTA, PORTB y PORTC a medida que corre el programa y no pasa nada.. se mantiene siempre en cero y no encuentro el motivo.
algo debo estar pasando por alto, hago un programita sencillo de manejo de estos puertos y ni asi los veo cambiar.
tal vez ustedes hayan pasado por esta experiencia y me puedan ayudar.
nada mas.....
-
Pon aquí el programa para que le echemos un vistazo.
-
mira, no creo qeu sea el programa, llegue a hacer algo tan sencillo como esto;
titulo "pic16f870"
list= p16f870, R=Hex
#include <p16f870.inc>
ORG 0
goto inicio
ORG 5
inicio movlw 0x1f
movwf PORTA
movlw 0x20
movwf PORTB
movlw 0x21
movwf PORTC
end
OBVIAMENTE HABIA ARRANCADO CON EL PROGRAMA QUE REALMENTE QUIERO PERO EL VER QUE NO HABIAN CAMBIOS EN LOS REGISTROS PORTX LO FUI REDUCIENDO Y LLEGUE A ESTO. CON LO QUE TAMPOCO PUEDO VER ESOS DATOS CARGADOS EN LOS PUERTOS.
TENGO UN PAR DE PROGRAMAS DANDO VUELTA EN LOS QEU SI SE VE TODO, ESO TAMBIEN ES RARO.
TAL VEZ HAYA ALGO CLAVE EN EL MPLAB QUE NO LO ESTOY TENIENDO EN CUENTA.
BUENO NADA MAS POR AHORA....
-
Que tal escorpion.
Pues efectivamente, tu código tiene errores de lógica.
Pero no te apures eso le pasa a cualquiera que comienza con esto de los PICs.
Cuando uss un microcontrolador de PIC, sus puertos por default estan como entradas y si quieres modificar su estado a salida, se tienen que configurar los puertos como salidas. Y esto se logra modificando los registros TRISX.
Debes agregar a tu código lo siguiente:
INICIO BSF STATUS,RP0
CLRF TRISA
CLRF TRISB
CLRF TRISC
BCF STATUS,RP0
Con las setencias anteriores le dices al micro que configure todos y cada uno de los pines de cada puerto como salida. Es decir si al pin lo quieres de salida se le coloca un cero al bit correspondiente a su registro TRIS y si lo quieres de entrada se le coloca un "1" al bit correspondiente a su registro TRIS.
-
Efectivamente, primero has de configurar los puertos con los registros TRISx
-
EFECTIVAMENTE USTEDES TENIAN RAZON CON RESPECTO A LO DE CONFIGURAR LOS PUERTOS ANTES DE UTILIZARLOS COMO SALIDA.

PERO APARECIO OTRA COSITA, A PESAR DE HABER HECHO ESO, LOS DEMAS PUERTOS DABAN RESPUESTA EXCEPTO EL PUERTO A. DESPUES DE BUSCAR EN LAS HOJAS DE DATOS DEL PIC, ENCONTRE QUE HAY QUE CONFIGURAR TAMBIEN EL REGISTRO ADCON1
MOVLW 0x06
MOVWF ADCON1
PARECE QUE PONIENDO LOS BITS 1 Y 2 DEL REGISTRO PROVOCA QUE EL PUERTO A SE COMPORTE COMO DIGITAL...... Y SI SE PONE 0X00 LO HACE DE FORMA ANALOGICA...
AHORA LA PREGUNTA MIA ES.. USTEDES SABEN A QUE SE REFIERE CON ESO?? EN QUE CASO SE USA UNA U OTRA?
-
Hopla escorpion
Mira el ADcon1 se configura con 0x06 cuando los pines del puerto A se necesitan utilizar como entradas y salidas analogicas. La otra opcion es cuando quieres utilizar los pines del puerto A como entrada (s) analogicas.
Para programarlo correctamente debes ver como se hace consultando el data sheet del Micro, pues depende del numero de entadas analogicas y ademas tambien puedes utilizar unas como analogica y otras como digitales.
fermin
-
Solo es necesario hacer lo del ADCON1 en ensamblador en el caso de tener un PIC con entradas analógicas ... para el 16F84 por ejemplo no sería necesario.
Je, je ... en C sea cual sea el micro no es necesario decir nada.
Un saludo