ayuda con pic de ocho pines

necesito un programa que funcione con un pic de ocho pines, para poder configurar una entrada y el resto salidas, en la cual voy a conectar un pulsador para arrancar la secuencia
y en la salidas conecto led para visualizar la secuencia.
lo he realizado con un pic 16f84a y me ha funcionado lo que pasa es que me sobran mucahas salidas y es muy grande el circuito,
si alguien tiene la configuracion de pines le agradecere mucho
 
Código:
ORG 	0					; El programa comienza en la dirección 0.
Inicio
	bsf		STATUS,RP0			; Pone a 1 el bit 5 del STATUS. Acceso al Banco 1.
	clrf	TRISB				; Las líneas del Puerto B configuradas como salidas.
	movlw	b'00011111'			; Las 5 líneas del Puerto A configuradas como entradas.
	movwf	TRISA
	bcf		STATUS,RP0			; Pone a 0 el bit 5 de STATUS. Acceso al Banco 0.


YouTube - PIC 16F84A Display 7 Segmentos
 
Todos los PICs tienen su hoja de datos.
Hay que ver la información del proveedor que es gratuita, de muy fácil acceso y es el que tiene la verdad de todo...

www.microchip.com

Y si quieren ejemplos y trucos de buena programación también los encontrarán en las Application Notes de Microchip.

Todas las hojas de datos de los PICs de línea baja (16F y 12F) son similares. Tienen un set de instrucciones similar.
Solo hay que tener en cuenta que los registros especiales pueden cambiar.
Por ejemplo cuando el PIC tiene entrada analógica, los puertos digitales tienen un truco para poder configurarlos.
Si el PIC es muy nuevo, puede tener dos palabras de configuración.

Si uno observa el archivo que se incluye en el fuente (por ejemplo #include 'P16F88) verá que estan todos los nombres de los registros, pines y palabra de configuración. Ahi se observa también que usar en el __CONFIG , que no está en ningún lado del data sheet.
 
Creo que los de gama alta tienen suficiente memoria como para darse el lujo de usar lenguaje C. Programarlos en asm se haría muy tedioso.
Por otro lado los de gama alta están destinados a otro tipo de sistemas que requieren mucha programación y mucha memoria; como por ejemplo USB o ethernet.
Ahora si necesitas optimizar el código en velocidad o tamaño, a veces es necesario un poco de asembler en alguna rutina que asi lo requiera.
 
amigos yo ya programe un pic 16f84a el l configuracion de pines la conosco, ahora quiero diseñar un programa con un pic de 8 pines que tenga una entrada en la cual conectare un pulsador y el resto de pines como salidas en las cuales pondre leds, el problema es que en el pic 16f84a yo configuro los pines asi



inicio
bsf estautus,5
movlw 'b0000001'
movwf porta
clrf portb
bcf estautus,5


pero en el pic de ocho pines no se que hacer porque el data ship me habla de gpios

nesecito una muestra de como lo comfiguro estoy utilizando el pic 12c508
 
cict electronic dijo:
amigos yo ya programe un pic 16f84a el l configuracion de pines la conosco, ahora quiero diseñar un programa con un pic de 8 pines que tenga una entrada en la cual conectare un pulsador y el resto de pines como salidas en las cuales pondre leds, el problema es que en el pic 16f84a yo configuro los pines asi



inicio
bsf estautus,5
movlw 'b0000001'
movwf porta
clrf portb
bcf estautus,5


pero en el pic de ocho pines no se que hacer porque el data ship me habla de gpios

nesecito una muestra de como lo comfiguro estoy utilizando el pic 12c508

Porque no mirás el archivo de definiciones del PIC, ahi tenes todo lo que podés controlar.
Otra cosa que te aclaro, los el 12"C"508 solo se graba una vez y listo. Las serie "F" permite re grabados.
 

Adjuntos

  • p12f508_162.txt
    3.9 KB · Visitas: 63
Buenas tardes desde Madrid: Soy un aficionado "amateur" y habitual lector de este foro. Perdón por reabrir un tema antiguo pero, después de conseguir programar en asm y C (PCW) el 16F84A, 16F628A, etc... estoy intentándolo con los pequeños 12C/F508/9 y no consigo de ninguna manera algo tan simple como encender y apagar un led. Mi problema, estoy seguro, es la configuración de los pines con TRIS o GPIO. Lo más que he conseguido es encenderlos en la simulación en Isis de Proteus pero no funciona, se encienden los leds en el orden que establezco, sí, pero ni consigo encender el conectado a GP3/TOCKI ni que se apaguen luego los otros (ninguno conectado a GP3). Estoy seguro de que es solo del tema de configurar los puertos como salida pero ni con todo lo que he visto en este foro ni en google ni en microchip.com ni en las Aplication Notes doy con la solución, ni para asm ni para C. Pongo la última prueba que he hecho en C con el PICC sin que funcione bien:
#include <12C509A.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC //Internal RC Osc
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOMCLR //Master Clear pin used for I/O
#use delay(clock=4000000)
#DEFINE On2 output_high(PIN_B2)
#DEFINE On5 output_high(PIN_B5)
#DEFINE On4 output_high(PIN_B4)
#DEFINE Off1 output_low(PIN_B0)

void main()
{
SET_TRIS_B (0x0F);

while (true)
{
output_high(PIN_B0);
delay_ms(1000);
output_high(PIN_B1);
delay_ms(1000);
Output_low(PIN_B2);
delay_ms(2000);
On4;
delay_ms(1000);
On5;
delay_ms(1000);
output_bit(pin_b0,1);
delay_ms(2000);
}
}
Ya sé que es un código horrible pero es solo de prueba y está así después de mil intentos.
Agradezco cualquier tipo de ayuda y un saludo para todos.
 
cict electronic me imagino que has de estar trabajando con PIC's de gama baja como el PIC12F508... para este tipo de uC los pines de E/S no se configuran como los normales:

movlw 0xXX
movwf TRISX

si no de esta manera

movlw 0xXX
tris

la diferencia es la instrucción "TRIS", en estos PIC's esta instrucción sirve para configurar sus pines como salida si el bit correspondiente es 0 y entrada si es 1. Un ejmplo de un código que configura GP0 como entrada y los demás como salida es:

movlw b'00000001' ;Bit menos significativo en uno para que GP0 sea entrada
TRIS ;Configura los pines

saludos!
 
Gracias por tu respuesta. Abusando de tu amabilidad, ¿me puedes decir qué falla en este simple programa?:
LIST P=PIC12C509A
INCLUDE <p12C509A.INC>
__CONFIG _CP_OFF&_IntRC_OSC&_WDT_OFF&_MCLRE_OFF

#define ON1 bsf GPIO,0
#define ON2 bsf GPIO,1
#define ON3 bsf GPIO,2
#define ON4 bsf GPIO,4
#define ON5 bsf GPIO,5
ORG 0x00
movlw b'00000000'
TRISB ;con tris o trisb solo no funciona ni con "movwf TRISB" o TRISB,f
Inicio

Principal
; bsf GPIO,5
; bcf GPIO,0
ON1
bsf GPIO,4
; ON3
; ON4
sleep
goto Principal

END
 
es solo poner TRIS GPIO. En estos momentos precisamente trabajo con el PIC12F508, aquí el código con el que configuro sus pines:

movlw 0x04
tris GPIO ;Configura GP2 como entrada
clrf GPIO ;Pone todas las salidas a 0
 
Solamente ahy que configurarla como salida con un 0 en el respectivo bit del registro GPIO, así:

movlw b'00XXX0XX'
tris GPIO

Donde las X pueden tomar cualquier valor 0 o 1 dependiendo si va a ser salida como te comenté antes
0-salida
1-entrada
 
Buenas noches ya aquí y, de nuevo, muchas gracias. Por fin lo conseguí gracias a tu información. Entendí como funcionaba y vi en el Datasheet que para que GP2/TOCKI funcione como salida, previo a configurar GPIO hay que configurar el bit TOCS del registro OPTION a 0, porque si está a 1, aunque se defina luego en GPIO a 0 sigue actuando como una entrada. Resuelto con un simple

movlw b'11000000'
OPTION
movlw b'00000000'
TRIS GPIO

Gracias y espero que a alguien más le sirva de ayuda.
 
Atrás
Arriba