Configuracion Puerto A pic16f873a con mikroc

Se puede usar los pines del puerto a del pic 16f873a como salidas digitales? como se configuran usando el compilador mikroc?
Según la Hoja de datos:
RA0/AN0 (pin2) E/S Digital o Entrada análoga 0.
RA1/AN1 (pin3) E/S Digital o Entrada análoga 1.
RA2/AN2 Vref - (pin4) E/S Digital o Entrada análoga 2.
RA3/AN3/Vref + (pin5) E/S Digital o Entrada análoga 3.
RA4/T0CKI (pin6) Bit 4 del puerto A (E/S bidireccional ). También se usa como entrada de reloj al
temporizador/contador TMR0. Salida de colector abierto.
RA5/SS/AN5 7 E/S Digital o Entrada análoga 4. También lo usa el puerto serial síncrono.
Quiero poder conectar un teclado matrixial 4*4 un LCD (que no pude hacer andar en el puerto A) y 6 salidas para optoacopladores. ...
 
no he usado mikro C
el pin RA4/T0CKI es a colector abierto asi que hay un detalle con poner una resistencia

ahora para configurar el puerto como salida o entrada hay que ver los registros del ADCON
por que ahi vemos como configurar los bits si va a ser analogico todo el puerto A
o algunos pines, o todo el puerto A como digital.

el compilador mikroC se parece mucho a C18 o Xc8 asi que pudes buscarle por ahi tambien


este es un ejemplo de ADCON
en C18 con el pic18f4550


void main (void)
{
ADCON1 |= 0x0F; // Todos los pines en modo digital
PORTC=0x00;
TRISC=0x00;
PORTA=0x00;


aqui lo que hise fue ver la hoja de datos y ver como configurar los bits para ver como se comportaria

lo que hace ADCON es cargarse con 00001111

revisa tu hoja de datos para configurar el registro

saludos
 
¿Se pueden usar los pines del puerto a del pic16f873a como salidas digitales? ¿Cómo se configuran usando el compilador mikroc?
En el main tan sólo escribe: ADCON1 = 0x06;

Según la Hoja de datos:
RA0/AN0 (pin2) E/S Digital o Entrada análoga 0.
RA1/AN1 (pin3) E/S Digital o Entrada análoga 1.
RA2/AN2 Vref - (pin4) E/S Digital o Entrada análoga 2.
RA3/AN3/Vref + (pin5) E/S Digital o Entrada análoga 3.
RA4/T0CKI (pin6) Bit 4 del puerto A (E/S bidireccional ). También se usa como entrada de reloj al
temporizador/contador TMR0. Salida de colector abierto.
RA5/SS/AN5 7 E/S Digital o Entrada análoga 4. También lo usa el puerto serial síncrono.
Te faltó leer esto en la hoja de datos: (INITIALIZING PORTA)
MOVLW 0x06 ; Configure all pins
MOVWF ADCON1 ; as digital inputs

Para más información sobre la configuración de los pines con ADC en el PIC16F873A, lee sobre el registro ADCON1

Suerte.
 
Última edición:
Puede hacer funcionar RA0,RA1,RA2,RA3,RA5 como salidas pero no pude hacer funcionar un LCD usando estos pines. Cual puede ser el problema?
Y tengo una duda con el pin RA4/TOCKI del puerto A que puede ser configurado como un pin de entrada/salida o como
entrada del temporizador/contador. Cuando este pin se programa como entrada digital,
funciona como un disparador de Schmitt (Schmitt trigger), puede reconocer señales un poco
distorsionadas y llevarlas a niveles lógicos (cero y cinco voltios). Cuando se usa como salida digital se comporta como colector abierto (open collector), por lo tanto, se debe poner una
resistencia de pull-up (resistencia externa conectada a un nivel de cinco voltios). Como
salida, la lógica es inversa: un "0" escrito al pin del puerto entrega en el pin un "1" lógico.
Además, como salida no puede manejar cargas como fuente, sólo en el modo sumidero.

Puede encender un led con este pin simulando en proteus con el siguiente circuito:



esta bien ese circuito? de que valor debe ser la resistencia?
 

Adjuntos

  • Respullup.JPG
    Respullup.JPG
    38.2 KB · Visitas: 16
no pienses en que son pines el puerto miralo como si fuera un registro
como si se comportara como un Byte

puedes conectar una LCD a un 74ls595 y usar solo 3 pines de cualquier pin del micro

lo del colector abierto solo debes ponerle la resistencia y anda bien

cuando quieras reflejar algo a un puerto si le faltan pines solo enmascara con funciones logicas como AND ,OR , XOR
 
Puede hacer funcionar RA0,RA1,RA2,RA3,RA5 como salidas pero no pude hacer funcionar un LCD usando estos pines. ¿Cual puede ser el problema?
Una mala configuración y/o conexiones.
Adjunto un ejemplo usando el puerto A para controlar un LCD 16x2 por el puerto A.
Funciona físicamente y si todo está bien configurado no debes tener problemas al usarlo por ese puerto.
Y tengo una duda con el pin RA4/TOCKI del puerto A que puede ser configurado como un pin de entrada/salida.
Si puede ser usado como entrada o salida, pero recuerda que es con drenador abierto (Open Drain)
O sea que el drenador al no tener ninguna referencia hacia VDD, no podrás obtener un 1 lógico.
Cuando se manda el estado lógico 1 al pin RA4, éste pin queda en estado flotante.
Por ese motivo es necesario colocar una resistencia pull-up en ese pin para obtener los dos estados lógicos.
Puede encender un led con este pin simulando en proteus con el siguiente circuito:
Para controlar algo como encender un LED por RA4, lo mejor es usarlo de forma inversa.
Es decir, el control se llevará a cabo con un 0 lógico.
Por lo tanto deberás poner el cátodo del LED en RA4 y la resistencia limitadora en el ánodo y hacia VDD.
De la forma como lo estás haciendo existe un consumo innecesario de corriente al enviar la resistencia limitadora del LED hacia VSS cuando el LED está apagado. (Por eso se apaga)
¿De qué valor debe ser la resistencia?
Existe una fórmula para calcular la resistencia limitadora y hasta programas que lo hacen.
Para un LED de 2.2V a 10mA alimentado con 5V, ronda los 280Ω, pero usando un valor comercial se suele usar una R de 330Ω a 1/4W.
Para disminuir el consumo de corriente y hasta para reducir la luminosidad, puedes usar valores hasta de 1.5kΩ y el LED se ve perfectamente bien iluminado. También depende que tipo de LED sea y su consumo de corriente.
Lo que si no debes superar son los 25mA máximo que puede entregar un pin del puerto.

Suerte.
 

Adjuntos

  • 16F873A LCD 16x2 en PORTA.rar
    35 KB · Visitas: 30
  • 16F873A LCD 16x2 en PORTA SCH.jpg
    16F873A LCD 16x2 en PORTA SCH.jpg
    91.8 KB · Visitas: 25
Atrás
Arriba