Haz una pregunta
  Foros de Electrónica » Diseño digital » Interfaces y Programación
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

03/09/2012 #61


como te explicaron antes, debes poner tu codigo dentro de un mismo lazo, algo asi:

Código:
void main() {
     int i;
     TRISA = 0;
     TRISB = 0;
     PORTA = 0;
     PORTB = 0;

     while(1){
        PORTA = ~PORTA;
        for (i = 0; i <= 7; i++){
            PORTB = 1<<i;
            Delay_ms(200);
        }
     }
}
03/10/2012 #62

Avatar de Norberto

Tengo un problema con Mikroc, cada vez que escribo una letra o modifico algo de mi codigo, se apaga la imagen del monitor de la pc y luego vuelve a encender, es muy molesto, es como si se estuviera por ejecutar algo en DOS, es un problema en la maquina del laburo, en otros lados no lo hace, probe de desactivar antivirus y otros soft pero sigue haciendo lo mismo, no se si le paso a alguien mas y lo pudieron solucionar
06/10/2012 #63


Comunicacion Serial
Buenas Noches, Les agradecería si me pudieran echar una mano en esto, Yo trabajo en MiKroC pro.
Estoy tratando de realizar una comunicación serial entre dos pic.
Tengo entendido que cuando se escribe por ejemplo esto:

UART1_Write_Text("Dato");
UART1_Write(10);
UART1_Write(13);

Convierte el pic la palabra "dato" en una serie de ceros y unos que transmite a través de la linea tx los datos para ser recibidos por otro pic.

El problema es que necesito convertir esos ceros y unos de nuevo a la palabra "dato" para poder transmitirla a un LCD y no se como hacer eso.
Mi programa es este:
Código:
char dato ;
sbit LCD_RS at Rb0_bit;
sbit LCD_EN at Rb3_bit;
sbit LCD_D7 at Rb7_bit;
sbit LCD_D6 at Rb6_bit;
sbit LCD_D5 at Rb5_bit;
sbit LCD_D4 at Rb4_bit;

sbit LCD_RS_Direction at TRISb0_bit;
sbit LCD_EN_Direction at TRISb3_bit;
sbit LCD_D7_Direction at TRISb7_bit;
sbit LCD_D6_Direction at TRISb6_bit;
sbit LCD_D5_Direction at TRISb5_bit;
sbit LCD_D4_Direction at TRISb4_bit;


void main() {
Delay_ms(100);
cmcon = 7 ;
trisa = 0 ;
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
  Lcd_Cmd(_LCD_CURSOR_OFF);
  UART1_Init(2404);
  Delay_ms(100);


while (1) {
if(UART1_Data_Ready()== 1) {
      dato = UART1_Read();
      Lcd_out_cp(dato);
      Lcd_Cmd(_LCD_CLEAR);
      dato = 0 ;
      delay_ms (1000) ;
      }
}
De antemano gracias.
23/10/2012 #64


undeclared identifier asm CALL _Hid_InterruptProc
estoy haciendo un código en mikroC para enviar datos por usb pero me sale un error en esta linea de codigo

//Función de rutina USB
//dentro de las interrupciones.
void HID_Inte( void )
{
asm CALL _Hid_InterruptProc //esta parte sale marcada de rojo
asm nop
}

y en el error me sale

undeclarer identifier '_Hid_interruptProc' in expresion

y no doy con el problema
27/10/2012 #65


inicio en Mikroc
gente aquí les dejo un tutorial acerca de como crear un nuevo proyecto en mikroc espero que les sea útil saludos
Archivos Adjuntos
Tipo de Archivo: pdf es_1st_project_c_pro_pic_v101.pdf (671,6 KB (Kilobytes), 197 visitas)
27/10/2012 #66
Moderador general

Avatar de Fogonazo

oscarlis dijo: Ver Mensaje
estoy haciendo un código en mikroC para enviar datos por usb pero me sale un error en esta linea de codigo

//Función de rutina USB
//dentro de las interrupciones.
void HID_Inte( void )
{
asm CALL _Hid_InterruptProc //esta parte sale marcada de rojo
asm nop
}

y en el error me sale

undeclarer identifier '_Hid_interruptProc' in expresion

y no doy con el problema
Se esta haciendo una llamada a un procedimiento NO declarado (_Hid_InterruptProc)

jjv dijo: Ver Mensaje
gemte aki les dejo un tutorial acerca de como crear un nuevo projecto en mikroc espero q les sea util saludos
Gracias por el aporte
29/11/2012 #67


Problemas al imprimir cadena
Buenas, estoy trabajando con mikroc 2012, estoy imprimiendo una cadena pero me sobre escribe lo que esta a un lado y no se porq.

Código:
int valor;
char prueba;
valor=EEPROM_Read(0x30);
IntToStr(valor,prueba);
Lcd_Out(2, 1, text1);
Lcd_Out(2, 4, prueba);//este da el problema, probe colocando un texto y aparece justo
//en la cuarta linea del LCD tambien probe char prueba[5], *prueba[5] pero imprimen
//caracteres raros


Como vez alli el primer cuadro es colocando un texto directo.

El segundo qda alejado mas si suma(operacion que realizo) que es lo importante pero sobreescribe max o lo que esta a la derecha.

El tercer cuadro es colocandolo prueba[5] o *prueba [5], este me muestra caracteres raros ademas del simbolo de grados que parece que lo copiara de la linea de arriba.


Y en el segundo cuadro para poder que se vean los numeros tuve que eliminar la impresion del max ya que lo tapaba.
29/11/2012 #68


Muy buenas, esta librería tenía sus cositas, yo las dejé de usar por el tema este, si usas un int te reserva 7 espacios que va rellenado por la derecha menos el ultimo que lo pone como 0x00 que intdica que es un string, en el caso de usar un byte o char te reserva 4, pero ya no te sirve con valores mayores a 255

Puedes provar con la conversión byte si tus valores no superan este:
Código:
char valor;
char prueba[4];
valor=EEPROM_Read(0x30);
ByteToStr(valor, prueba);
Lcd_Out(2, 1, text1);
Lcd_Out(2, 4, prueba);
Si este no te sirve (pinsa que el 4º digito es nulo y borrará lo que tengas) solo te quedan 2 alternativas, usar estas librerias y luego tratar la matriz (creando una nueva mas corta y solo poniento los bytes que necesites) o crearte tu propia librería.

esto es lo que hay.

Ah y recuerda (no se si lo puse en este hilo y no se si en nuevas versiones de mikroc ya está arreglado que me parece que no), cuando usas la librería Lcd_Out(x,x,x); el texto que pones consume memoria ram, y si vas a crear un menú con mucho texto constante (tipo: "Menu:", "Configuración", .....) la ram te va a volar y tenemos poca. Pues tienes que usar esto:
Código:
void Lcd_Out2(char fila, char col, const char *dat)
{
     while(*dat)
     {
         Lcd_Chr(fila,col++, *dat++);
     }
}
Con esto usas la rom en lugar de la ram.Lo pones ahi arriba en tu codigo y se usa de la misma manera:
Lcd_Out2(2, 1, "Hola mundo");
Pero solo para texto constante, no variables.

Un saludo
29/11/2012 #69


tannke dijo: Ver Mensaje
Muy buenas, esta librería tenía sus cositas, yo las dejé de usar por el tema este, si usas un int te reserva 7 espacios que va rellenado por la derecha menos el ultimo que lo pone como 0x00 que intdica que es un string, en el caso de usar un byte o char te reserva 4, pero ya no te sirve con valores mayores a 255

Puedes provar con la conversión byte si tus valores no superan este:
Código:
char valor;
char prueba[4];
valor=EEPROM_Read(0x30);
ByteToStr(valor, prueba);
Lcd_Out(2, 1, text1);
Lcd_Out(2, 4, prueba);
Si este no te sirve (pinsa que el 4º digito es nulo y borrará lo que tengas) solo te quedan 2 alternativas, usar estas librerias y luego tratar la matriz (creando una nueva mas corta y solo poniento los bytes que necesites) o crearte tu propia librería.

esto es lo que hay.

Ah y recuerda (no se si lo puse en este hilo y no se si en nuevas versiones de mikroc ya está arreglado que me parece que no), cuando usas la librería Lcd_Out(x,x,x); el texto que pones consume memoria ram, y si vas a crear un menú con mucho texto constante (tipo: "Menu:", "Configuración", .....) la ram te va a volar y tenemos poca. Pues tienes que usar esto:
Código:
void Lcd_Out2(char fila, char col, const char *dat)
{
     while(*dat)
     {
         Lcd_Chr(fila,col++, *dat++);
     }
}
Con esto usas la rom en lugar de la ram.Lo pones ahi arriba en tu codigo y se usa de la misma manera:
Lcd_Out2(2, 1, "Hola mundo");
Pero solo para texto constante, no variables.

Un saludo

Hice lo de ByteToStr y me salio asi


Lo que me parecio bien, el unico detallito que no entiendo es por que sale el simbolo de grados (°).

En cuanto a la memoria RAM no se si esto te diga algo, uso un 16f887

0 1141 Used RAM (bytes): 70 (20%) Free RAM (bytes): 282 (80%) Used RAM (bytes): 70 (20%) Free RAM (bytes): 282 (80%)
Imágenes Adjuntas
Tipo de Archivo: jpg as.jpg (13,7 KB (Kilobytes), 291 visitas)
30/11/2012 #70


Buenas otra vez, con el simbolo de grados ni idea, no recuerdo que me pasara nunca, habría que ver el codigo entero y segun se vea hacer un debug para ver donde mete ese simbolo, lo malo de mikroc es que sus librerías son cerradas y no sabemos realmente como funcionan.
Sobre el tema de la RAM de momento tienes de sobra, pero puede llegar el caso que utilices mucho texto en el lcd y en ese caso sí te sería mas util la función.

Un saludo
13/12/2012 #71


Problema con llave
Hola, estoy programando en MikroC 4.6 y 5.4. Tengo un problema con el mismo. Cada vez que agrego la llave de cierre se agrega automáticamente las barras "//" para comentarios. ¿Hay alguna forma de quitarlos? Muchas gracias!
21/03/2013 #72


error 102 compilando con MikroC
Hola a todos.
Pregunta para quien me pueda ayudar. Cualquier código que intento montar (Bild) en MikroC, siempre me devuelve el Finished (with error) en la linea 0 error 102. Según tengo entendido no es problema del compilador ni el código tiene error alguno, es un problema del sistema pero llevo todo el dia recomponiendo el registro del sistema y demás cosas que se me han podido ocurrir y he consultado en la red pero nada. No sé por donde continuar. ¿Alguien me puede orientar como salir de ésta?.
Gracias de antemano.
27/08/2013 #73


Tengo el mismo problema con el Timer0
Buenos días.

No he logrado inicializar ninguno de los Timers, ¿será que requieren alguna instrucción en ASM? Les agradezco su respuesta
21/02/2014 #74


Programacion con MikroC
Hola desde hace tiempo busco un programa hecho en Mickro C pro for compiler, para un PIC16F628
para hacer un contador con punto decimal, para que en el LCD 2x16 aparesca los digitos 000.000

si alguin tiene algo les agradeceria su ayuda gracias. ...
21/02/2014 #75

Avatar de ByAxel

El modo fácil es usando la función FloatToStr(), convierte valor numérico a cadena string... revisa la documentación del MikroC.
12/05/2014 #76


Programacion con MikroC
Buenas noches, estoy trabajando con el compilador mikroC y estoy intentando programar el teclado matricial 4x4 con una lcd 128x64, en las librerias aparece pero con una lcd mas pequeña, pero con una lcd mas grande no veo como funciona ya que veo que no tiene los mismos comandos.

Les agradeceria bastante, gracias ...
12/05/2014 #77


Hola.
No programo en MikroC, pero te puedo asegurar que no todos los LCDs se controlan con la misma librería, ni con el mismo protocolo. Según imagino, es de 128x64 caracteres, pero no debe tener el mismo driver que los demás LCDs, o los más conocidos de 16x2.

Saludos.
12/05/2014 #78

Avatar de TRILO-BYTE

debes leer la hoja de datos de esa LCD
y en base a sus comandos debes programarla no todo viene del cielo
18/05/2014 #79

Avatar de Hypnos202

Programacion con MikroC
Hola a todos.
A ver si me pueden ayudar con este código en mikroc, apenas me estoy iniciando en lenguaje C, por lo tanto no consigo dar con la solución.

En si; lo que quiero hacer es mostrar por la LCD el Numero 11 en "Binario, Decimal, Hexadecimal y Punto Flotante"

N = 11
Binario = 1011
Decimal = 11
Hexadecimal = B
Punto Flotante = 11.00

Aquí esta el código a ver si me echan una mano:

Código:
//Definición de pines del LCD
sbit LCD_RS at RB0_bit;
sbit LCD_EN at RB1_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D7 at RB7_bit;

//Definición de los TRIS del LCD
sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB1_bit;
sbit LCD_D4_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D7_Direction at TRISB7_bit;
// End de la Configuracion
// *************************************************

char Text1[] = "Bienvenido";
char Text2[] = "Bin";
char Text3[] = "Dec";
char Text4[] = "Hex";
char Text5[] = "Punt.F";

char Text6[16];
char Text7[16];
char Text8[16];
char Text9[16];

//Impresión de el Numero 11 en Binario, Decimal, Hexadecimal y Punto Flotante
unsigned int v1 = 1011;
unsigned int v2 = 11;
unsigned int v3, v4;
unsigned float v5 = 11.00;

void main()
{
//Inicio del LCD.
Lcd_Init();
//Borrado del cursor.
Lcd_Cmd(_LCD_CURSOR_OFF);
delay_ms(500);
Lcd_Cmd(_LCD_CLEAR);
//Impresión de Text1 durante 1 segundo.
Lcd_Out(1, 4, Text1);
delay_ms(1000);
Lcd_Cmd(_LCD_CLEAR);
// Impresión de Textos "Text2, Text3, Text4, Text5"
Lcd_Out(1,0, Text2);
Lcd_Out(1,9, Text3);
Lcd_Out(2,0, Text4);
Lcd_Out(2, 6, Text5);
// Conversión de decimal a Binario
IntToStr(v1, Text6);
Lcd_Out(1,4, Text6);
// Conversion de entero a cadena de caracteres para mostrar decimal = 11
IntToStr(v2, Text7);
Lcd_Out(1, 13, Text7);
// Conversión de decimal a hexadecimal
v3 = 11;
v4 = Dec2Bcd16(v3);
IntToStr(v4,Text8);
Lcd_Out(2,4, Text8);
// Conversion de Decimal a Punto Flotante
FloatToStr(v5, Text9);
Lcd_Out(2,10, Text9);
}
19/05/2014 #80
Moderador

Avatar de D@rkbytes

Hypnos202 dijo: Ver Mensaje
Hola a todos.
A ver si me pueden ayudar con este código en mikroc, apenas me estoy iniciando en lenguaje C, por lo tanto no consigo dar con la solución.

En si; lo que quiero hacer es mostrar por la LCD el Numero 11 en "Binario, Decimal, Hexadecimal y Punto Flotante"

N = 11
Binario = 1011
Decimal = 11
Hexadecimal = B
Punto Flotante = 11.00
Prueba con esta modificación del código al cual le agregué una rutina para convertir de decimal a binario (4 Bits)
Código:
//Definición de pines del LCD
sbit LCD_RS at RB0_bit;
sbit LCD_EN at RB1_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D7 at RB7_bit;

//Definición de los TRIS del LCD
sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB1_bit;
sbit LCD_D4_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D7_Direction at TRISB7_bit;
// End de la Configuracion
// *************************************************

//Impresión de el Numero 11 en Binario, Decimal, Hexadecimal y Punto Flotante

void main()
{
char bin_buffer[5];
char Text1[3];
char Text2[5];
char Text3[9];

unsigned int i,valor;
unsigned int v1 = 11;
float v2 = 11.00;
//Inicio del LCD.
    Lcd_Init();
//Borrado del cursor.
    Lcd_Cmd(_LCD_CURSOR_OFF);
    Lcd_Cmd(_LCD_CLEAR);
//Impresión de Texto durante 1 segundo.
    Lcd_Out(1, 4, "Bienvenido");
    delay_ms(1000);
    Lcd_Cmd(_LCD_CLEAR);

// Conversión de Decimal a Binario (4 Bits)
   valor = v1;
   for (i = 0; i < 4; i++)
   {
   if (valor & 0x08)    // Se comprueba el MSB (Bit mas significante "Bit3")
      bin_buffer[i] = '1'; // Si este es uno, colocar un 1 en el buffer
   else
      bin_buffer[i] = '0'; // Si este es cero, colocar un 0 en el buffer
   valor <<= 1;         // Rotar los Bits a la izquierda 1 Bit
   }
   lcd_out(1,1,"Bin:");
   Lcd_Out(1,6, bin_buffer);
// Conversion de entero a cadena de caracteres para mostrar decimal = 11
   lcd_out(2,1,"Dec:");
   ByteToStr(v1, Text1);
   Lcd_Out(2,5, Text1);
   delay_ms(2000);
// Conversión de decimal a hexadecimal
   Lcd_Cmd(_LCD_CLEAR);
   lcd_out(1,1,"Hex:");
   IntToHex(v1,Text2);
   Lcd_Out(1,6, Text2);
// Conversion de Decimal a Punto Flotante
   lcd_out(2,1,"Flt:");
   FloatToStr(v2, Text3);
   Lcd_Out(2,6, Text3);
}
Suerte.
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Interfaces y Programación

Lenguajes de programación, gestión y manejo de puertos

Cerrar
Foros de Electrónica » Diseño digital » Interfaces y Programación

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