Autor Tema: Cursillo en C18 para PICS DESDE CERO  (Leído 250303 veces)

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

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #390 en: 02 de Agosto de 2011, 18:58:47 »
Nadie sabe por que no funciona el codigo que coloqué arriba ?

Tiene que existir una linea en blanco al final de cada archivo  :shock:
No contesto mensajes privados, las consultas en el foro

Desconectado marvicdigital

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 311
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #391 en: 04 de Agosto de 2011, 07:24:20 »
Hola.
Amigo Suky, decidí usar tu valiosa librería, la LCDGenérica y bueno puse los puertos que voy a usar, comenté la linea de usar 3 pines, pero tengo una duda con respecto a los tiempos, el cristal o la frecuencia que usas en la librería es de 20MHZ? la frecuencia de la CPU me imagino...es que no me cuadrán los tiempos o los cálculos no me dan los 100uS...como se nota que apenas estoy comenzando con el C18 :)
Gracias Suky por tu guía y paciencia.

Saludos

PD: Me aclaro a ver si es asi:

Delay100TCYx(FCY/4000000UL)  

Sería 100*(4/20000000)*(20000000/4000000) = 0.0001 segundos  osea 100uS..esto es correcto?
Ahora la configuración la tengo asi:

#pragma config FOSC=HS,FCMEN=OFF,IESO=OFF,CPUDIV=OSC1_PLL2     //HS 20MHZ ClockCPU 20 MHZ

Es correcta mi configuración, para poder usar la librería?..es que no me funciona..o algo me hace falta comentar que no he visto....valla, que me va  servir estos días de paro que llevo..

Gracias de nuevo

Las lineas que modifiqué, aparte de la use RW y comentar la de use 3pines

Código: [Seleccionar]
#ifndef LCD_USE_3PINES
/* ** Pines tolerables a 5V para usar RW ** */
#define LCD_DATA_PIN_7 LATAbits.LATA3
#define LCD_DATA_PIN_6 LATAbits.LATA2
#define LCD_DATA_PIN_5 LATAbits.LATA1
#define LCD_DATA_PIN_4 LATAbits.LATA0

#define LCD_READ_PIN_7 PORTAbits.RA3
#define LCD_READ_PIN_6 PORTAbits.RA2
#define LCD_READ_PIN_5 PORTAbits.RA1
#define LCD_READ_PIN_4 PORTAbits.RA0


#define LCD_TRIS_DATA_PIN_7       TRISAbits.TRISA3
#define LCD_TRIS_DATA_PIN_6       TRISAbits.TRISA2
#define LCD_TRIS_DATA_PIN_5       TRISAbits.TRISA1
#define LCD_TRIS_DATA_PIN_4       TRISAbits.TRISA0


#define LCD_E_PIN LATCbits.LATC0
#define LCD_RS_PIN LATAbits.LATA4
#ifdef LCD_USE_RW
#define LCD_RW_PIN LATAbits.LATA5
#endif

#define LCD_TRIS_E TRISCbits.TRISC0
#define LCD_TRIS_RS TRISAbits.TRISA4
#ifdef LCD_USE_RW
#define LCD_TRIS_RW TRISAbits.TRISA5
#endif

Y este el código de prueba:

Código: [Seleccionar]
void main(void){
    ADCON1=0x0F;
    TRISC=0xF0;
    LATC=0x00;
    LedLCDOn;
    test();
    vInitLCD();
    stdout=_H_USER;
    printf("\fProbando LCD\nSegunda linea");
    LedLCDOn;
    
    for(;;){
  
                  
}
}

Alguna sugerencia a revisar? :)  Gracias de nuevo

PD2: Sigue sin funcionar, ya agregue la linea de CMCON=0x07 y nada aun..se nota que el display funciona por que al aumentar el VO con el potenciometro de ve las 2 lineas bien, pero no tengo caracteres, uso el pin RW en PORTC0 que no tiene nada que configurar adicional..la verdad que leo y releo y n l eveo la falla, salvo los tiempos pero ya he verificado haciendo rutinas para hacer un blink en intervalos y los cálculos me dan con la FOSC a 20MHZ de la CPU...alguna sugerencia más?


gracias d enuevo


« Última modificación: 04 de Agosto de 2011, 23:18:01 por marvicdigital »

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #392 en: 07 de Agosto de 2011, 00:32:13 »
El problema es con printf, porque si logras ver las dos lineas significa que el LCD se inicializado. Prueba con las otras funciones propias del LCD para escribir, por ejemplo para C18 puede agregar la siguiente:

Código: C
  1. void vPutrs_LCD(rom UINT8 *buffer){
  2.         UINT8 Data;
  3.        
  4.         while(*buffer != '\0'){
  5.                 Data=*buffer++;
  6.                 vLCD_Putc(Data);
  7.    }
  8.  
  9. }

y escribir:

Código: C
  1. vPutrs_LCD("\fProbando LCD\nSegunda linea");


Con eso pruebas que funciona. Después hay que seguir unos pasos para poder usar printf, pero no se como será en MPLAB X

Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado c@Lic_0

  • PIC10
  • *
  • Mensajes: 36
    • Una tasita de cafe
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #393 en: 25 de Abril de 2012, 16:02:03 »
hola quisiera que me hechen una manita estoy teniendo un inconveniente con las directivas del preprocesado, lo que quiero hacer es poder escoger entre 2 microcontroladores para hacer uso de sus puertos ya que ambos presentan diferencias en sus pines, el codigo es el siguiente:


#ifndef   __LETRERO_H
   #define   __LETRERO_H
   #include "p18cxxx.h"

//----------------------------------------------------------
//         Definicion de pines
//----------------------------------------------------------


   #ifdef __18F13K50
   //definimos pines pra el pic 18f13k50
      #define      DATA_PIN                 LATAbits.LATA4
      #define      CLOCK_PIN         LATAbits.LATA5
      #define      TRIS_DATA         TRISAbits.TRISA4
      #define      TRIS_CLOCK         TRISAbits.TRISA5

      #define      PORTA_CONTROL
//para que las entradas del porta sean degitales si se usa otro
//puerto para el control desabilitar esta definicion

      #define      PORT_MATRIZ      LATC
      #define      TRIS_PORT      TRISC

   #elif __18f2550
   //definimos pines para el pic 18f2550
      #define      DATA_PIN         LATAbits.LATA0
      #define      CLOCK_PIN         LATAbits.LATA1
      #define      TRIS_DATA         TRISAbits.TRISA0
      #define      TRIS_CLOCK         TRISAbits.TRISA1

      #define      PORTA_CONTROL
//para que las entradas del porta sean degitales si se usa otro
//puerto para el control desabilitar esta definicion


      #define      PORT_MATRIZ      LATB
      #define      TRIS_PORT      TRISB

   #endif

#define      F      1
#define      W      0
#define      A      0   //esto en el caso en que lleguemos a usar codigo en asm
//----------------------------------------------------------
//               Constantes
//----------------------------------------------------------      
#define      FILAS_M         8      
#define      COLUMNAS_M      32      
#define     MODULO_M      8


Pues bien la situacion es la siguiente: en el programa principal  quiero usar una de estas constantes definidas ya sea el pic que este utilizando pero el compilador me dice que no reconoce estas constantes(PORT_MATRIZ, TRIS_PORT, etc), y solo me reconoce estas 6: FILAS_M, COLUMNAS_M, MODULOS_M, F, W, A; quisiera saber si estoy usando bien las directivas de preprocesado o en que estoy fallando

PD: en el programa principal esta agregado el: #include <letrero.h>

Gracias y saludos.

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #394 en: 25 de Abril de 2012, 18:49:12 »
Pareciera que el preprocesador no está tomando los PREDEFINED MACRO NAMES
__18F13K50 y __18f2550

probá usar la directiva #error para sacar un mensaje de texto en la compilación y ver si pasa o no pasa por los dos trozos de código. Y no olvides de seleccionar el tipo de microcontrolador en el mplab.

#ifdef __18F13K50
#error "el compilador pasó por acá"
#endif

la otra opción es que vos crees tus propios identificadores:

extraído de la página 17 del manual c18 user guide


1.2.3 Defining Macros
The -D command-line option allows a macro to be defined. The -D command-line
option can be specified in one of two ways: -Dname or -Dname=value. -Dname
defines the macro name with 1 as its definition. -Dname=value defines the macro
name with value as its definition. For example:
mcc18 -DMODE
defines the macro MODE to have a value of 1, whereas:
mcc18 -DMODE=2
defines the macro MODE to have a value of 2.
An instance of utilizing the -D command-line option is in conditional compilation of
code. For example:
#if MODE == 1
x = 5;
#elif MODE == 2
x = 6;
#else
x = 7;
#endif
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado EduSky

  • PIC10
  • *
  • Mensajes: 37
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #395 en: 26 de Abril de 2012, 16:11:51 »
Buenas tardes a todos!. Primer post en el foro. Estuve leyendo el post porque quiero hacer algo con el C18 y PIC18f4550 (aclaro que son mis primeros en la progamacion de pic's). Concretamente lo que quiero hacer es prende y apagar un LED cada 2seg. El codigo que use pero no sirvio de mucho es:

#include <p18f4550.h>
#include <delays.h>

#pragma config WDT=OFF
#pragma config PLLDIV = 5 // (20 MHz crystal)
#pragma config FOSC = HSPLL_HS
#pragma config MCLRE = OFF

void main()
{
 TRISA = 0x00;  //define los pines del puerto A todos como salidas
 while(1)
 {
  LATAbits.LATA0 = 1;
  Delay10KTCYx(200);
  LATAbits.LATA0 = 0;
  Delay10KTCYx(200);
 };
}

Como ven estoy usando un cristal de 20MHz. El Led se prende cuando alimento el pic, luego se apaga, se vuelve a prender y se queda prendido. Talvez no estoy utilizando de forma correcta la funcion delay o si la configuracion del pic es el problema para poder arrancar con lo basico.
Cualquier  respuesta que ayude a aclarar el problema sera bien recibida.
Saludos!!

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #396 en: 26 de Abril de 2012, 18:00:09 »
EduSky:

te falta poner el puerto A como digital. Ya que por defecto arranca en analógico.

agregale esto.
ADCON1=0x0F;//Todos entrada/salida digitales. - equivalente en binario ADCON1= 0b00001111

         Saludos.
                Jukinch
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado EduSky

  • PIC10
  • *
  • Mensajes: 37
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #397 en: 26 de Abril de 2012, 22:17:50 »
Jukinch, gracias por responder. Hice la modificacion que recomendaste y ahora el comportamiento es distinto. Ahora el LED blinkea (no se queda prendido de forma permanente) por 6 seg (aproximadamente), despues se apaga por 14 seg y se vuelve a preder repitiendo el mismo comportamiento. Tiene cierta cadencia, pero no se prende 2 seg y se apaga 2 seg como esperaba.
La funcion que use de Delay10TKY ¿calcula el delay con el oscilador externo de 20MHz o utiliza tambien algun otro parametro?
Saludos!

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #398 en: 27 de Abril de 2012, 11:05:49 »
EduSky:
probá con este código:
Código: C
  1. /*Includes*/
  2. #include "p18F4550.h"
  3. #include "delays.h"
  4.  
  5. /* Para utilizar demoras en nuestro código debemos incluir la librería delays.h. En ella tenemos 4 funciones:
  6. Delay10TCYx(i)      -> 10.Tcy.i     genera una demora de 10 ciclos de instrucciones * i
  7. Delay100TCYx(i)   -> 100.Tcy.i      genera una demora de 100 ciclos de instrucciones  * i
  8. Delay1KTCYx(i)      -> 1000.Tcy.i   genera una demora de 1000 ciclos de instrucciones * i
  9. Delay10KTCYx(i)   -> 10000.Tcy.i    genera una demora de 10000 ciclos de instrucciones  * i
  10. i puede tomar un valor de 1 a 255. Si se toma valor 0 i es 256
  11.  
  12. Para calcular el tiempo que queremos debemos tener en cuenta la frecuencia a la que trabaja el pic
  13. (la frecuencia del cristal de cuarzo).
  14.  
  15. TCY se calcula como 4/fosc
  16.  
  17. donde fosc = frecuencia de oscilador
  18.  
  19. Ejemplo con cristal de 4mhz
  20.  
  21. En este caso 4*10^6(4MHz),
  22.  
  23.  por lo tanto TCY 4/4000000 = 1/10^6 = 0,000001sec
  24.  
  25.         1 TCY = 0,000001seg
  26. 1.000.000 TCY= 1 seg
  27.  
  28. para calcular un segundo
  29.  
  30.   1seg * 1 TCY
  31. ------------------- = 1.000.000 TCYs
  32. 0,000001seg
  33.  
  34.  
  35. calculo del valor de i usando la función Delay10KTCYx(i)= i equivale a 10000 TCYs
  36.  
  37. 1.000.000 TCYs
  38. ------------------- = 100i
  39.    10.000 TCY
  40.  
  41. Delay10KTCYx(100); //dura 1 seg
  42.  
  43.  
  44. ejemplo con cristal de 20mhz
  45.  
  46. TCY se calcula como 4/fosc
  47. En este caso 20*10^6(20MHz), por lo tanto TCY = 4/20*10^6 = 0,0000002
  48.         1 TCY = = 0,0000002seg
  49.  
  50. para calcular un segundo
  51.  
  52.   1seg * 1 TCY
  53. ------------------- = 5.000.000 TCYs
  54. 0,0000002seg
  55.  
  56. calculo del valor de i usando la función Delay10KTCYx(i)= i equivale a 10000 TCYs
  57.  
  58. 5.000.000 TCYs
  59. ------------------- = 500i
  60.    10.000 TCY
  61.  
  62. divido 500 entre 255 para separar el tiempo en n Delay10KTCYx(i) ya que i puede tomar valores de 1 a 255
  63.  
  64.  
  65. Delay10KTCYx(255); // usando los dos delay llego al segundo
  66. Delay10KTCYx(245); //
  67.  
  68. para medio segundo uso 250 y 250
  69.  
  70.  
  71.  
  72. */
  73.  
  74.  
  75. /* Bits de configuración*/
  76.  
  77. #pragma config PLLDIV = 5 // 20 MHz crystal on board
  78. #pragma config FOSC = HS // using an external, high speed crystal, PLL module is disabled
  79.  
  80. #pragma config FCMEN = OFF // Fail-safe clock monitor disabled
  81. #pragma config IESO = OFF // Internal/External Oscillator switchover disabled
  82. #pragma config PWRT = OFF // Power-up Timer disabled
  83. #pragma config BOR = OFF // Brown-out reset disabled
  84. #pragma config BORV = 3 // Brown-out voltage at minimum setting
  85. #pragma config VREGEN = ON // USB voltage regulator enabled
  86. #pragma config WDT = OFF // Watchdog timer hardware disabled, software controlled
  87. #pragma config WDTPS = 32768 // Watchdog timer postscale 1:32768 (max)
  88. #pragma config MCLRE = OFF // MCLR pin disabled, RE3 input pin disabled
  89. #pragma config LPT1OSC = OFF // Low power timer 1 oscillator bit low-- timer 1 configured for higher power operation
  90. #pragma config PBADEN = OFF // PORTB <4:0> pins are configured as digitial I/O on reset
  91. #pragma config CCP2MX = ON // CCP2 input/output is multiplexed with RC1 (vs RB3)
  92. #pragma config STVREN = ON // Stack full/underflow will cause reset
  93. #pragma config LVP = OFF // Single supply ICSP disabled
  94. #pragma config XINST = OFF // Instruction set extension and indexed addressing mode disabled (legacy mode)
  95. #pragma config DEBUG = OFF // Background debugger disabled, RB6 and RB7 configured as general purpose I/O pins
  96. #pragma config CP0 = OFF // Code protection bits-- Block 0 (000800 - 001FFFh) not code-protected
  97. #pragma config CP1 = OFF // (002000 - 003FFFh)
  98. #pragma config CP2 = OFF // (004000 - 004FFFh)
  99. #pragma config CPB = OFF // Boot block (000000 - 0007FFh) not code-protected
  100. #pragma config CPD = OFF // Data EEPROM not code-protected
  101. #pragma config WRT0 = OFF // Block 0 not write-protected
  102. #pragma config WRT1 = OFF
  103. #pragma config WRT2 = OFF
  104. #pragma config WRTB = OFF // Boot block not write-protected
  105. #pragma config WRTC = OFF // Configuration register not write-protected
  106. #pragma config WRTD = OFF // EEPROM not write-protected
  107. #pragma config EBTR0 = OFF // Block 0 not protected from table reads executed in other blocks
  108. #pragma config EBTR1 = OFF
  109. #pragma config EBTR2 = OFF
  110. #pragma config EBTRB = OFF
  111.  
  112.  
  113. /*declaración de variables*/
  114. unsigned char i;        //Para contar 0 titilaciones.-
  115.  
  116.  
  117. /*declaración de funciones*/
  118.  
  119.  
  120. /*****Programa principal******/
  121.  
  122. void main(void)
  123. {
  124. ADCON1=0x0F;//Todos entrada/salida digitales. - equivalente en binario ADCON1= 0b00001111
  125. TRISA=0x00; //Todos como salida-                          -     equivalente en binario TRISA = 0b00000000
  126.  
  127. LATA=0x00; //Leds apagados.-                  - equivalente en binario LATA  = 0b00000000
  128. while(1)
  129.         {
  130.        
  131.                 for(i=1;i<=100;++i)
  132.                         {
  133.                         LATA=0xfF; // equivalente en binario LATA  = 0b11111111
  134.                                                 Delay10KTCYx(250); // espero medio segundo
  135.  
  136.                         LATA=0x00; // equivalente en binario LATA  = 0b00000000
  137.                                                 Delay10KTCYx(250); // espero medio segundo
  138.  
  139.                                                 LATB=0xfF; // equivalente en binario LATB  = 0b11111111
  140.                                                 Delay10KTCYx(250); // espero medio segundo
  141.  
  142.  
  143.                         }
  144.           }
  145. }
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado EduSky

  • PIC10
  • *
  • Mensajes: 37
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #399 en: 28 de Abril de 2012, 01:07:53 »
Jukinch, muchas gracias por ese aporte ahora el LED se prende como de la forma que pretendia. De verdad muchas gracias.
Queriendo avanzar un poco mas sobre el pic18f4550 tengo una consulta sobre el SPI. Si el SPI esta en master mode y el pic esta a su vez conectado con otro pic como muestra un grafico del datasheet (pag 199) donde el pin SCK (serial clock) es utilizado por el maestro para controlar el envio de datos al otro pic (segun entendi). Si por ejemplo queres que en el SCK el clock sea de 8MHz, podria llegar ser esta la configuracion del bloque oscilador del pic?:

#pragma config FOSC = HSPLL_HS
#pragma config PLLDIV = 5 // (20 MHz crystal)
#pragma config CPUDIV = OSC2_PLL3

Todavia no me meti con el USB
¿De esta forma el pic estaria trabajando con un clock interno de 32MHz? Despues SCK se divide por 4 y se obtiene 8.
La consulta es porque todavia no me claro el bloque oscilador con las opciones que tiene (xt, hs, hspll, etc). La configuracion la hice en base a una tabla del datasheet.

Saludos y buen fin de semana para toda la gente del foro.

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #400 en: 28 de Abril de 2012, 10:11:03 »
EduSky:
             En el foro hay mucha información sobre spi. Mirá este hilo en donde Suky explica el origen de la información
http://www.todopic.com.ar/foros/index.php?topic=34319.0

Hola!

Para utilizar el módulo dedicado a SPI existe librería, <spi.h> la cual tiene funciones para configurar y trabajar con el módulo. Información de como se usa en C:\MCC18\doc\periph-lib, el spi.h en C:\MCC18\h, y los archivos fuente en C:\MCC18\src\pmc_common\SPI

Saludos!


sobre el tema del oscilador te recomiendo leas el datasheet del pic que uses.
Te envío una guía de estudio (básicamente una traducción del capitulo de osciladores del datasheet del 18f4550.)
link de descarga de la guia
Saludos.
        Jukinch

"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado EduSky

  • PIC10
  • *
  • Mensajes: 37
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #401 en: 28 de Abril de 2012, 20:03:31 »
Jukinch, gracias por la data. Voy a leer un poco a ver si se aclaran las dudas.

Saludos!

Desconectado c@Lic_0

  • PIC10
  • *
  • Mensajes: 36
    • Una tasita de cafe
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #402 en: 07 de Mayo de 2012, 16:41:24 »
Gracias por la ayuda Jukinch, pues afectivamente no reconoce las predefiniciones ya que no me mostro ninguna advertencia de error en el compilado segun me indicaste, muy raro pues con la anterior version que tenia el programa corria sin problemas, la definicion de las macros que me indicaste van en un archivo aparte?¡ como un .h o van el el programa principal

mcc18 -DMODE
defines the macro MODE to have a value of 1, whereas:
mcc18 -DMODE=2
defines the macro MODE to have a value of 2.
An instance of utilizing the -D command-line option is in conditional compilation of
code. For example:
#if MODE == 1
x = 5;
#elif MODE == 2
x = 6;
#else
x = 7;
#endif


ya que trate de hacerlo correr de las 2 formas y ninguna me funciona, lo que hice fue crearme otro archivo .h con valores de cada pic y a partir de ahi hice las seleciones apropiadas
Gracias y Saludos.

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #403 en: 07 de Mayo de 2012, 18:13:39 »
c@Lic_0: El -D es un parámetro del compilador. debés ponérselo al compilador mcc18 desde las opciones del Mplab o sinó directamente desde la línea de comandos. No a tu código. Ni en ningún archivo *.h. Ya que es una opción de línea de comando (command-line option).-
            Saludos.
                 Jukinch

La otra opción que podés usar es comentar y descomentar un define.
En un proyecto que comparto con mi amigo pacman tenemos pulsadores pull up y pull down en cada una de nuestras placas y lo usamos así para no tener que cambiar toda la lógica:

Código: [Seleccionar]
#define microcontrolador1
//#define microcontrolador2

#define teclaDebugger PORTCbits.RC5 // tecla para avanzar en programa para controlar errores
// recordar configurar el tris del puerto correspondiente como entrada

#define ledDebugger  LATBbits.LATB4   // led para controlar estado del programa
      // recordar configurar el tris del puerto correspondiente como salida


#ifdef microcontrolador1
#define nopulsoboton 0
                                   
#else
#define nopulsoboton 1
#endif

//#define nopulsoboton 0




/****************** espera se pulse boton de debugger ************************************/

void EsperaBotonDebugger(void)
{
LATBbits.LATB4=1;
Delay10KTCYx(200);    //Retardo para ver lo escrito en lcd
LATBbits.LATB4=0;
Delay10KTCYx(200);    //Retardo para ver lo escrito en lcd
LATBbits.LATB5=1;
Delay10KTCYx(200);    //Retardo para ver lo escrito en lcd
LATBbits.LATB5=0;
Delay10KTCYx(200);    //Retardo para ver lo escrito en lcd
LATBbits.LATB6=1;
Delay10KTCYx(200);    //Retardo para ver lo escrito en lcd
LATBbits.LATB6=0;
Delay10KTCYx(200);    //Retardo para ver lo escrito en lcd
LATBbits.LATB7=1;
Delay10KTCYx(200);    //Retardo para ver lo escrito en lcd
LATBbits.LATB7=0;





while (teclaDebugger==nopulsoboton)
{
}
Delay10KTCYx(10);    //Retardo para ver lo escrito en lcd
ledDebugger=1; // ENCIENDO LED
Delay10KTCYx(10);    //Retardo para ver lo escrito en lcd
ledDebugger =0; // APAGO LED
Delay10KTCYx(10);    //Retardo para ver lo escrito en lcd
ledDebugger =1; // ENCIENDO LED
Delay10KTCYx(10);    //Retardo para ver lo escrito en lcd
ledDebugger=0; // APAGO LED

}
/****************** fin espera se pulse boton de debugger ************************************/

             
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado thomas666

  • PIC10
  • *
  • Mensajes: 5
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #404 en: 30 de Agosto de 2012, 16:25:10 »
buenas tardes

soy nuevo utilizando c18............ estoy programando un pic 18f4550 y tengo este programa

#include <p18f4550.h>
#include <delays.h>            //libreria de retardo
#include <math.h>
#include <stdio.h>

//configuracion de bits
#pragma config FOSC=INTOSC_EC   //CONFIGURACION DEL OSCILADOR 
#pragma config WDT=OFF         //configuracion de Watchdog "desabilitado"
#pragma config MCLRE=OFF      //configuracion del MCLRE "desabilitado"
#pragma config LVP=OFF         //configuracion del single supply "desabilitado"
#pragma config PBADEN=OFF      //configuracion del puerto I/O digitales PORTB<0:4>
unsigned char N,X,Y;
void main (void)         //inicio del programa
{
TRISB=0X00;                     


for(N=0;N=3;N++)
{
LATB++;
Delay1KTCYx(10);
}

LATB=255;

}

el problema es el siguiente :
cuando lo simulo en proteus el programa cargado no sale de la secuencia de for aunque se supone que deba solamente llegar hasta N=3 y salir no lo hace y sigue la secuencia hasta completar los 8 bits de salida (255) y vuelve a comenzar desde 0 no se porque no sale de ese bucle
que tengo mal............

gracias..............


 

anything