Avatar billede lubker Nybegynder
15. maj 2006 - 19:55 Der er 24 kommentarer og
1 løsning

int to str

Hej Eksperter.
Jeg er igang med at programmere en microcontroller til styring af et LCD display.

med funktionen:
unsigned int tal;
tal = 1234;
lcd_puts("tekst");

kan jeg skrive "tekst" på displayet.

Men hvordan kan jeg skrive indholdet af variablen tal til displayet?

Kan ikke rigtig få den konverteret til en streng der virker.
Avatar billede arne_v Ekspert
15. maj 2006 - 19:57 #1
unsigned int tal;
char buf[11];
tal = 1234;
sprintf(buf,"%d",tal);
lcd_puts(buf);

maaske
Avatar billede lubker Nybegynder
15. maj 2006 - 19:59 #2
Kræver sprintf en header inkluderet?
Avatar billede arne_v Ekspert
15. maj 2006 - 20:01 #3
ja

stdio.h
Avatar billede lubker Nybegynder
15. maj 2006 - 20:03 #4
Det er den ikke glad for.
For en lidt uigennemskuelig fejlmeddelelse.

Warning[359] Z:\ny PIC\main.c 56 : illegal conversion between pointer types
Warning[357] Z:\ny PIC\main.c 61 : illegal conversion of integer to pointer
Error[491]  : can't find 0x22 words for psect "rbss_0" in segment "BANK0"
Error[491]  : can't find 0x7 words for psect "temp" in segment "COMBANK"
Error[593]  : can't find 0x1 words (0x1 withtotal) for psect "code_ptr"
BUILD FAILED: Mon May 15 20:02:37 2006
Avatar billede lubker Nybegynder
15. maj 2006 - 20:06 #5
Jeg kan selvfølgelig opdele integeren og og derefter indlæse en teksttreng med if sætninger, men det virker også som en virkelig dårlig og ikke særlig pladsbesparende kode.
Avatar billede schwarz84 Nybegynder
15. maj 2006 - 20:08 #6
unsigned int tal;
char buf[11];
tal = 1234;
sprintf(&buf,"%d",tal);
lcd_puts(buf);

skal det vist være...
Avatar billede arne_v Ekspert
15. maj 2006 - 20:08 #7
hvordan ser linie 50-61 udnaar du faar de fejl ?
Avatar billede lubker Nybegynder
15. maj 2006 - 20:09 #8
Det gør det ikke bedre.

Warning[362] Z:\ny PIC\main.c 54 : redundant "&" applied to array
Warning[359] Z:\ny PIC\main.c 55 : illegal conversion between pointer types
Warning[357] Z:\ny PIC\main.c 59 : illegal conversion of integer to pointer
Error[491]  : can't find 0x22 words for psect "rbss_0" in segment "BANK0"
Error[491]  : can't find 0x7 words for psect "temp" in segment "COMBANK"
Error[593]  : can't find 0x1 words (0x1 withtotal) for psect "code_ptr" in segment "BANK0"
BUILD FAILED: Mon May 15 20:09:14 2006
Avatar billede lubker Nybegynder
15. maj 2006 - 20:10 #9
[51]        inputvar = 127;
        gram = (inputvar*196)/100;
        newton = (gram*982)/100;
       
        sprintf(&buf,"%d",inputvar);
        lcd_puts(buf);
        lcd_goto(0x0C);    // Gå til gram
        lcd_puts("123");   
        lcd_goto(0x4C);    // Gå til newton
        lcd_puts(newton);
        DelayUs(10000);
    }

}
Avatar billede lubker Nybegynder
15. maj 2006 - 20:10 #10
Ved godt det er et udsnit der ikke giver så meget mening
Avatar billede lubker Nybegynder
15. maj 2006 - 20:14 #11
Hele koden ser sådan ud: (har klippet en lille smule ud)

#include <pic.h>
#include "lcd.h"
#include "delay.h"
#include <stdio.h>

//unsigned int tarevar;     //Tare variabel - indeholder vægt-forskydningen
unsigned int inputvar;        //Variabel indeholdende inputtet
unsigned int gram;            //Variabel vægten i gram
unsigned int newton;            //Variabel vægten i newton
char buf[11];

void
main(void)
{
    DelayUs(1000);
    lcd_init();
    lcd_goto(0);    // select first line
    lcd_puts(" Gram");
    lcd_goto(0x40);    // Select second line
    lcd_puts(" Newton");

    for(;;){
        inputvar = 127;
        gram = (inputvar*196)/100;
        newton = (gram*982)/100;
       
        sprintf(&buf,"%d",inputvar);
        lcd_puts(buf);
        lcd_goto(0x0C);    // Gå til gram
        lcd_puts("123");   
        lcd_goto(0x4C);    // Gå til newton
        lcd_puts(newton);
        DelayUs(10000);
    }

}
Avatar billede arne_v Ekspert
15. maj 2006 - 20:21 #12
lcd_puts(newton);

er gal fordi newton er en int og ikke en char*
Avatar billede arne_v Ekspert
15. maj 2006 - 20:22 #13
char buf[11];

->

unsigned char buf[11];

maaske ?
Avatar billede lubker Nybegynder
15. maj 2006 - 20:23 #14
Ja, det ved jeg godt, den kan godt kompilere denne del, den skriver bare ikke noget der.
Avatar billede lubker Nybegynder
15. maj 2006 - 20:28 #15
Det hjalp desværre ikke.

Warning[362] Z:\ny PIC\main.c 29 : redundant "&" applied to array
Warning[359] Z:\ny PIC\main.c 32 : illegal conversion between pointer types
Error[491]  : can't find 0x22 words for psect "rbss_0" in segment "BANK0"
Error[491]  : can't find 0x7 words for psect "temp" in segment "COMBANK"
Error[593]  : can't find 0x1 words (0x1 withtotal) for psect "code_ptr" in segment "BANK0"
BUILD FAILED: Mon May 15 20:26:27 2006
Avatar billede arne_v Ekspert
15. maj 2006 - 20:29 #16
hvordan er lcd_puts erklaeret i den header fil du inkluderer ?
Avatar billede lubker Nybegynder
15. maj 2006 - 20:32 #17
void
lcd_puts(const char * s)
{
    LCD_RS = 1;    // write characters
    while(*s)
        lcd_write(*s++);
}
Avatar billede arne_v Ekspert
15. maj 2006 - 20:40 #18
char buf[11];

og

sprintf(buf,"%d",inputvar);
lcd_puts((const char*)buf);
Avatar billede lubker Nybegynder
15. maj 2006 - 20:43 #19
Det vil den ikke:

Warning[359] Z:\ny PIC\main.c 33 : illegal conversion between pointer types
Executing: "C:\Programmer\HI-TECH Software\PICC\9.50\BIN\PICC.EXE" -E"LCD.lde" "Z:\ny PIC\delay.obj" "Z:\ny PIC\lcd.obj" "Z:\ny PIC\main.obj" -M"LCD.map" -O"LCD.cof" -O"LCD.hex" -Q -MPLAB -16F57
Advisory[1207]  : some of the command line options you are using are now obsolete
Advisory[1208]  : use --help option or refer to the user manual for option details
Error[491]  : can't find 0x22 words for psect "rbss_0" in segment "BANK0"
Error[491]  : can't find 0x7 words for psect "temp" in segment "COMBANK"
Error[593]  : can't find 0x1 words (0x1 withtotal) for psect "code_ptr" in segment "BANK0"
BUILD FAILED: Mon May 15 20:42:21 2006
Avatar billede arne_v Ekspert
16. maj 2006 - 02:53 #20
pas

jeg forstår det ikke
Avatar billede lubker Nybegynder
16. maj 2006 - 08:08 #21
Det gør jeg heller ikke.
Har lidt på fornemmelsen den sætter en begrænsning for hvor mange variabler jeg kan oprette, og jeg nu er nået maksimum.

Ellers tak for forsøget.
Avatar billede lars314 Nybegynder
16. maj 2006 - 08:09 #22
RAM usage on the PIC

> (1)I get this error when I'm compiling my program for a PIC:

::Can't find space for psect rbss_0 in segment BANK0 (error)

> What does this mean exactly?

It means that you have run out of space in RAM bank 0 (hence the rbss_0
name). It might also mention the class COMBANK, depending on the circumstances.
What you probably need to do is move some variables into banks 1, 2 or 3.
You do this by prefixing some global variable declarations with a qualifier
like bank1, e.g.
Avatar billede lars314 Nybegynder
16. maj 2006 - 08:09 #23
Avatar billede lubker Nybegynder
17. maj 2006 - 16:07 #24
Jeg lukker her.
Har fundet en helt anden løsning, der måske ikke er den smartest programmerede, men den virker.

Jer der vil have lidt point må gerne ligge et svar.
Avatar billede lubker Nybegynder
24. august 2006 - 10:09 #25
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester