TODOPIC
Lenguajes de programación para PC => C, C#, C++ => Mensaje iniciado por: katp1307 en 22 de Noviembre de 2019, 18:10:53
-
Hola!!! Estoy generando la serie de fibonacci con ayuda de un pic18f4553 en una lcd 16*2, y al sumar dos numeros muy grandes obtengo un numero negativo. Cabe resaltar que ya he definido las variables como unsigned long para trabajar con numeros de 32 bit.
muchas gracias. :D
-
1- Programa.
2- ¿Como lo estas convirtiendo? - Tal ves la rutina de conversion es unicamente para numeros con signo o no puede manejar numeros tan grandes.
-
Hola, cuándo sumas dos números sin signo que DESBORDAN, pues te dará un número negativo.
Si trabajas con 32 bits es decir DWORDs, tendrás que trabajar con QWORDs, habrá que ver si el IDE te permite trabajar con ese segmento.
-
1- Programa.
2- ¿Como lo estas convirtiendo? - Tal ves la rutina de conversion es unicamente para numeros con signo o no puede manejar numeros tan grandes.
ese es el codigo:
#include <pic18f4553.h>
#include "CONFIG.h"
#define _XTAL_FREQ 20000000
#include <stdio.h>
#include <teclado_digital.h>
#include <lcd8.h>
char linea[40];
char i;
int opcion=0,tecla=255,menu=0,parte=0;
void main(void){
lcd_inicializar();
unsigned long a=0,b=1,resultado;
lcd_borrar();
while(1){
resultado=a+b;
a=b;
b=resultado;
lcd_posicion(0,0);
lcd_escribir("SERIE FIBONACCI:");
lcd_posicion(1,0);
sprintf(linea,"%16d",resultado);
lcd_escribir(linea);
__delay_ms(500);
}
}
sin embargo al sumar el numero 17711 con 28657 se obtiene el numero negativo que parece en la imagen
-
La d es para signed int, Lu es para unsigned long
Fuente: Manual de CCS
-
La d es para signed int, Lu es para unsigned long
Fuente: Manual de CCS
muchas gracias!!!! aun soy un novato en esto de la pogramacion, si pueden hacer el favor de compartime material de estudio para mejorar cada dia se los agradeceria :D
-
muchas gracias!!!! aun soy un novato en esto de la pogramacion, si pueden hacer el favor de compartime material de estudio para mejorar cada dia se los agradeceria :D
Practica, complicarse con problemas sencillos, y resolverlos uno mismo. En este caso por ejemplo podrias haber tratado de mostrarlo en Hexadecimal y ver si estaba correcto, etc, para verificar que es lo que fallaba.
Y por otro lado, el manual de CCS, que en google buscas "CCS manual pdf" y listo.. Eso si.. mucho pero mucho ingles.
-
muchas gracias!!!! aun soy un novato en esto de la pogramacion, si pueden hacer el favor de compartime material de estudio para mejorar cada dia se los agradeceria :D
Practica, complicarse con problemas sencillos, y resolverlos uno mismo. En este caso por ejemplo podrias haber tratado de mostrarlo en Hexadecimal y ver si estaba correcto, etc, para verificar que es lo que fallaba.
Y por otro lado, el manual de CCS, que en google buscas "CCS manual pdf" y listo.. Eso si.. mucho pero mucho ingles.
El archivo de ayuda que incluye el ccs es muy útil y completo. Yo de echo es lo que más uso cuando tengo dudas con funciones sobre todo propias de ccs.