Autor Tema: Como asignar un valor a un puerto en CCS?  (Leído 15916 veces)

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

Desconectado Foox

  • PIC10
  • *
  • Mensajes: 9
Como asignar un valor a un puerto en CCS?
« en: 05 de Julio de 2013, 22:52:13 »
Hola gente buenas noches, estoy iniciandome en la programacion por medio de CCS y pics 16F
Me gustaría saber como es la manera asignar un valor  a un puerto y que no sea bit a bit.

Por ejemplo, en C18 solo tenias que configurar el Puerto como salida y después PORTB=Valor;

Necesito esto mismo pero en CCS para un 16F627A asi enviar los valores {12,6,3,9}; a uno de sus puerto, conectados a un ULN2803A para mover un motor PaP Unipolar.


Disculpen por si ya hay un post que habla sobre esto, no sabia bien como buscarlo y realmente no lo encontré!  :oops:


Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: Como asignar un valor a un puerto en CCS?
« Respuesta #1 en: 05 de Julio de 2013, 23:12:21 »
Hola, busca por ACA, encontrarás mucho mas de lo que por el momento necesitas.

saludos
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado Foox

  • PIC10
  • *
  • Mensajes: 9
Re: Como asignar un valor a un puerto en CCS?
« Respuesta #2 en: 07 de Julio de 2013, 14:53:38 »
Te lo agradezco!!! ahora voy a ponerme a leer esa informacion ! gracias =D

Desconectado Foox

  • PIC10
  • *
  • Mensajes: 9
Re: Como asignar un valor a un puerto en CCS?
« Respuesta #3 en: 16 de Julio de 2013, 02:50:09 »
Disculpen que vuelva a comentar, en la pagina de CCS hay una pregunta frecuente que habla sobre mi duda
http://www.ccsinfo.com/faq.php?page=map_io_to_variable

Código: [Seleccionar]
#byte PORTB = 6
#define ALL_OUT 0
#define ALL_IN 0xff

main() {
   int i;
   set_tris_b(ALL_OUT);
   PORTB = 0; // Set all pins low
   
   for(i=0;i<=127;++i) // Quickly count from 0 to 127
      PORTB=i; // on the I/O port pin
   
   set_tris_b(ALL_IN);
   i = PORTB; // i now contains the portb value.
}

Pero ahora mi problema es que mi compilador no reconoce lo que es el PORTB. Como si no fuera una herramienta del CCS.

***Error 44 "Motor paso a paso.c" Line 30(1,1): Internal Error - Contact CCS INCDEC SCR=268

Disculpen mi ignorancia, creo que me esta faltando algo que saber

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: Como asignar un valor a un puerto en CCS?
« Respuesta #4 en: 16 de Julio de 2013, 06:22:14 »
Ese error no es del código que has puesto... Pon tú código y así se verá mejor cual puede ser el fallo,
por lo que leo, el fallo lo tienes en la línea 30... Miratelo a ver
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado Foox

  • PIC10
  • *
  • Mensajes: 9
Re: Como asignar un valor a un puerto en CCS?
« Respuesta #5 en: 16 de Julio de 2013, 12:16:48 »
Estoy usando el PIC C Compiler de CCS y en la ventana del programa me dice PCWHD, tiene tantos nombres que realmente no se para que lado buscar informacion!

Este es mi codigo! lo saque una linea que ocupaba lugar y ahora me dice que el error esta en el 29, osea en
Código: [Seleccionar]
PORTB=Motor; // on the I/O port pin
Código: [Seleccionar]
#include "C:\Documents and Settings\Fox\Mis documentos\PIC\Motor paso a paso.h"


void main()
{
 setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_ccp1(CCP_OFF);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
 
//Setup_Oscillator parameter not selected from Intr Oscillator Config tab
# Byte PORTB = 6
# Define ALL_OUT 0
# Define ALL_IN 0xff
#define A PIN_A0
#define B PIN_A1
#define C PIN_A2
#define D PIN_A3
int Motor[4]={12,6,3,9};
set_tris_a(0x00);
   
   While(1){
   set_tris_b(ALL_OUT);
   PORTB = 0; // Set all pins low
   
   for(Motor=0;Motor<=3;++Motor) // Quickly count from 0 to 127
      PORTB=Motor; // on the I/O port pin
   
   set_tris_b(ALL_IN);
   Motor = PORTB; // i now contains the portb value.
            }
}

hay partes que quedaron al editarlo y están  sin usar :oops:

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: Como asignar un valor a un puerto en CCS?
« Respuesta #6 en: 16 de Julio de 2013, 15:55:28 »
Hola Foox, el código que muestras no alcanza a tener 30 líneas; habría que ver también el contenido del archivo Motor paso a paso.h, para verificar todas la líneas.

Saludos!

Desconectado Foox

  • PIC10
  • *
  • Mensajes: 9
Re: Como asignar un valor a un puerto en CCS?
« Respuesta #7 en: 16 de Julio de 2013, 22:28:09 »
Hola bmb! gracias por responder aca te dejo un screen shot del programa ! Fijate la linea y el error! Muchas gracias :D


Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: Como asignar un valor a un puerto en CCS?
« Respuesta #8 en: 16 de Julio de 2013, 22:42:21 »
las líneas 14, 15 y 16 no están correctamente escritas.
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Como asignar un valor a un puerto en CCS?
« Respuesta #9 en: 16 de Julio de 2013, 22:55:24 »
Eso esta bien, pero no creo que sea el problema.

En este trozo de codigo:

Código: C
  1. int Motor[4]={12,6,3,9};
  2. set_tris_a(0x00);
  3.    
  4.    While(1){
  5.    set_tris_b(ALL_OUT);
  6.    PORTB = 0; // Set all pins low
  7.    
  8.    for(Motor=0;Motor<=3;++Motor) // Quickly count from 0 to 127
  9.       PORTB=Motor; // on the I/O port pin

Declaras Motor como un Int, y luego ese Int lo asignas a un Byte, sin hacer un Casting en el medio.

Ademas te refieres directamente a la variable Motor sin usar indexacion, en una variable que tiene indice ( Motor[2] asigna el valor 3 al Byte PORTB).

Prueba con este codigo a ver si va mejor....

Código: C
  1. byte Motor[4]={12,6,3,9};
  2. int8 My_Index = 0;  //usada como indice despues
  3. set_tris_a(0x00);
  4.    
  5.    While(1){
  6.    set_tris_b(ALL_OUT);
  7.    PORTB = 0; // Set all pins low
  8.    
  9.    for(My_Index=0;My_Index<=3;++My_Index) // Quickly count from 0 to 3
  10.       PORTB=Motor[My_Index]; // on the I/O port pin
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Como asignar un valor a un puerto en CCS?
« Respuesta #10 en: 18 de Julio de 2013, 09:11:55 »
Lo has podido probar ?? :) :)
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Foox

  • PIC10
  • *
  • Mensajes: 9
Re: Como asignar un valor a un puerto en CCS?
« Respuesta #11 en: 19 de Julio de 2013, 15:10:08 »
Lo compilo bien! mira vos, cuanto que me falta aprender!! =( recien arranco les agradezco de corazon !!!! Ahora lo pruebo!!

Me podrias explicar porque
Código: [Seleccionar]
byte Motor[4]={12,6,3,9};
int8 My_Index = 0;  //usada como indice despues
set_tris_a(0x00);

byte Motor[4]={12,6,3,9} me podrias en que transforma el byte, a la array?
y por que int8 ?


Muchas gracias a todos! y disculpen mi ignorancia! tengo 2 libros para consultar Lenguaje en C y uno para CCS pero por ahi necesito me surgen duda y necesito de su ayuda!

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Como asignar un valor a un puerto en CCS?
« Respuesta #12 en: 19 de Julio de 2013, 16:07:46 »
Me alegro que compilara bien !! :D :D

y lo mas importante, funciona ??  :shock: :shock:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Como asignar un valor a un puerto en CCS?
« Respuesta #13 en: 19 de Julio de 2013, 16:25:34 »
Los tipos de datos en CCS.


Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Foox

  • PIC10
  • *
  • Mensajes: 9
Re: Como asignar un valor a un puerto en CCS?
« Respuesta #14 en: 20 de Julio de 2013, 16:15:06 »
Hola chicos! Les agradezco mucho su ayuda!! me compila bien pero no me da pelota el 16F627A =( conecte 4 led para simularlo y no encienden, estos estan conectados a los pines del puerto A RA0 RA1 RA2 RA3
( con el programa viejo output_low y output_high, funciona! asi que el problema es en la programacion  :( )

El codigo lo copie de MGLSOFT !! Muchas gracias =D

Código: [Seleccionar]
#include "C:\Documents and Settings\Fox\Mis documentos\PIC\Motor paso a paso.h"


void main()
{
 setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_ccp1(CCP_OFF);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
  
//Setup_Oscillator parameter not selected from Intr Oscillator Config tab
#Byte PORTA = 6
#Define ALL_OUT 0
#Define ALL_IN 0xff
byte Motor[4]={12,6,3,9};
int8 My_Index = 0;  //usada como indice despues
set_tris_a(0x00);
  
   While(1){
   PORTA = 0; // Set all pins low
         for(My_Index=0;My_Index<=3;My_Index++) // Quickly count from 0 to 3
         PORTA=Motor[My_Index]; // on the I/O port pin
         delay_ms(50);
   }
            }
« Última modificación: 20 de Julio de 2013, 16:17:08 por Foox »


 

anything