Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

10/12/2015 #1


Configuración puerto PIC10F200 en CCS
Buenas compañeros a ver si me podéis hechar una mano, ya que llevo varios días liado con un tema y no consigo ver la luz.

He vuelto a pillar el tema de los Pics que lo tenía muy abandonado, hasta ahora lo poco que había hecho siempre había sido para Pic16F84 y siguiendo un libro en assembler. Debido a la dificultad de usar este lenguaje para ciertas cosas, quiero comenzar a programar en C.

De momento estoy con el famoso hola mundo encendiendo un led dedse un puerto, el pic que estoy intentando programar es un 10F200, ya que es muy sencillo, y es aqui donde comienzan mis problemas.
En pics más grandes el tema de los puertos lo controlo más o menos, ya que con el tema del TRIS configuras si elpuerto va a ser entrada o salida y luego asignando el valor que quieras al puertos o al bit del puerto lo pones en estado alto o bajo.

El problema es que este 10F200 parace que no tiene registro TRIS. el único puerto que tiene es el GPIO en la dirección de memoria 0x06, el pronblema es que no tengo ni idea como configurarlo para que trabaje en mi caso como salida, ya que como indico carece del comando TRIS.

Si alguien me puede indicar como configurar los puertos en este pic se lo agardecería mucho, como indico lo quiero hacer en C

quedo a la espera de vuestra ayuda, muchas gracias
10/12/2015 #2

Avatar de juanma2468

Lo del TRIS es algo que uno asigna con un nombre, por ponerle algo. Un ejemplo posible seria este:
Código:
#locate Puerto_A = 0x05 // Defino el puerto A con una etiqueta
// Registro de PORTA ==> BITS: 5 4 3 2 1 0
//                             | | | | | |_ Grb_Cod : Pin donde se detecta cuando se acciona el pulsador Grb_Cod
//                             | | | | |___ Led_Verde : Pin donde se indica los estado con el led verde
//                             | | | |_____ Dato_entrada : Pin por el que va a ingresar el código
//                             | | |_______ Borrado : Jumper para poder borrar los controles
//                             | |_________ Salida_Rele : Pin utilizado para accionar el rele
//                             |___________ No usado : Bit no utilizado

#bit Grb_Cod      = Puerto_A.0 // GP0 como entrada del pulsador para programar códigos/configurar/borrar controles
#bit Led_Verde    = Puerto_A.1 // GP1 como salida de indicación de estado
#bit Dato_entrada = Puerto_A.2 // GP2 como entrada de datos del control remoto
#bit Borrado      = Puerto_A.3 // GP3 como entrada del jumper para poder borrar los controles
#bit Salida_Rele  = Puerto_A.4 // GP4 como salida para accionar el rele
// Configuro pines entrada y salida
set_tris_a (0b00001101);                     // Pines como entrada: A0,A2,A3 - Pines como salida: A1,A4,A5
// Como usar un pin con un nombre
Salida_Rele = 1; // Pone un "1" en el pin Salida_Rele
Codigo = Dato_Entrada; // Leo el dato en el pin Dato_Entrada y lo muevo a la variable codigo
Este ejemplo lo use para un PIC12F683 que es igual al PIC10F200 en cantidad de pines, y como en el tuyo no cuenta con puerto A y B o más, sino que un unico puerto GP. No es la única forma de hacerlo pero esta sirve y es práctica ya que a cada pin le asignas un nombre y luego solo pones el nombre para indicar el pin que queres usar.
11/12/2015 #3
Moderador

Avatar de D@rkbytes

warjazzman dijo: Ver Mensaje
Si alguien me puede indicar como configurar los puertos en este PIC se lo agradecería mucho. Como indico, lo quiero hacer en C
En PIC C Compiler de CCS no necesitas configurar los registros, salvo condiciones específicas.
Usando las instrucciones "output_high(pin); y output_low(pin); ya lo tienes solucionado.
Éstas instrucciones acceden al registro TRIS automáticamente convirtiendo en salida al pin seleccionado.

En éste PIC sólo se puede usar su oscilador interno ya calibrado de fábrica a 4 MHz.
Si se requiere de una recalibración, se puede ajustar en el registro OSCCAL.
Por lo tanto, no podrás hacer uso de las instrucciones "delay_us(x);" y "delay_ms(x);

Prueba con el siguiente programa:
Código PHP:
#include <10f200.h>


void retardo (void)
{
   for(
int16 i=0;i<2048;i++)
   {
      
delay_cycles(255);
   }
}


void main (void)
{  
   
output_high(PIN_B0);
   
   
retardo();
   
   while (
true)
   {
      
output_toggle(PIN_B0);
      
      
retardo();
   }

Por su sencillez y uso de instrucciones comunes, no vi la necesidad de comentarlo.
31/03/2016 #4


Grandes aportes Gracias ami me ayudo arto

pero tengo esta duda ¿como se activa el codigo de proteccion del 10F200 ?

uso el (PICkit 2 v2.61)
31/03/2016 #5
Moderador

Avatar de D@rkbytes

Por software, en la palabra de configuración. (Ver sintaxis de compilador que uses)
Con PICkitX, estableciéndolo en el bit 3. (CP)
1 = Code Protection OFF
0 = Code Protection ON
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.