29. november 2004 - 14:58
Der er
17 kommentarer og 2 løsninger
Kalde funktion med streng
Hej Jeg er ved at lave en funktion, som skal skrive til et display vha. en microprocessor, og jeg benytter system51 til at compile min c kode. Jeg har prøvet flg: //inst. skriv #define C0 XMEM[0x8000] //inst. læs #define C1 XMEM[0x8002] //data. skriv #define D0 XMEM[0x8001] //data. læs #define D1 XMEM[0x8003] void SkrivDisplay(int linie, int position, char* tekst) { data char i; //venter på busy while (C1 & 0x80); //angiver positionen på displayet C0 = ((linie) ? 0x0c0 : 0x80)+position; for(i=0; i<strlen(tekst); i++) { //venter på busy while(C1 & 0x80); //skriver en karakter D0 = tekst[i]; } } void main() { while (1) { data char txt = "En tekst"; //Skriver på første linie, på første position SkrivDisplay(0, 0, char); } } Måske jeg skal bruge en pointer, men det er jeg ikke så stærk i.
Annonceindlæg fra DE-CIX
29. november 2004 - 15:02
#1
char *txt = "En tekst"; ... SkrivDisplay(0, 0, txt); måske
29. november 2004 - 15:08
#2
Er der forskel på 'char* txt' og 'char *txt' ?
29. november 2004 - 15:10
#3
Nej.
29. november 2004 - 15:13
#4
Men da: char* p1,p2; svarer til: char *p1; char p2; så er der mange som foretrækker at placere stjernen foran variablen fremfor efter typen.
29. november 2004 - 15:20
#5
Ja, jeg kan godt få det til at virke som alm konsol. Jeg kan først prøve i system51 i morgen, så afvent response :)
01. december 2004 - 10:29
#6
Nu har jeg prøvet lidt frem og tilbage, og derefter fundet ud af at D0 skal fodres med ASCII værdien. Kan du omskrive funktionen, så D0 = ASCII_værdi_fra_hvert_tegn; ?
01. december 2004 - 10:36
#7
Indeholder tekst[i] ikke ASCII værdien for tekst[i] ??
01. december 2004 - 10:37
#8
Åbenbart ikke, for det virker ikke, men hvis jeg hiver tingene ud af funktionen, og kalden D0 med ASCII værdier direkte, så virker det. Er der i C en funktion til at få ASCII værdien fra et tegn ?
01. december 2004 - 10:42
#9
c = 'A' c = 65; c = 0x41; char s[] = "A"; c = s[0]; skulle alle gøre præcis det samme
01. december 2004 - 10:51
#10
Funktionen virker faktisk når den ikke kaldes med en variabel. Altså SkrivDisplay(0, 0, "Hej"); virker, men ikke SkrivDisplay(0, 0, var); Er det mine datatyper den er gal med ?
01. december 2004 - 11:00
#11
SkrivDisplay(0, 0, "Hej"); og char *var = "Hej"; SkrivDisplay(0, 0, var); burde også virke ens
01. december 2004 - 11:11
#12
Men det gør det ikke. Ihvertfald ikke i system51. Har du ikke en god idé ?
01. december 2004 - 11:14
#13
Mystisk. Hvad med: char var[4] = "Hej"; SkrivDisplay(0, 0, var);
01. december 2004 - 11:16
#14
char var[4] = "Hej"; SkrivDisplay(0, 0, var); virker det? burde også være det samme som SkrivDisplay(0, 0, "Hej"); prøv så at lave var const, virker det? const char var[4] = "Hej";
01. december 2004 - 11:17
#15
Det får jeg desværre heller ikke noget ud af. Jeg har prøvet: void SkrivDisplay(int linie, int position, char *tekst) og void SkrivDisplay(int linie, int position, char tekst[])
01. december 2004 - 11:41
#16
Kan du være truffen af en signed / unsigned char ting? hvilken type har XMEM? void SkrivDisplay(const int linie, const int position, const char tekst[])
01. december 2004 - 13:39
#17
Jeg fik løst problemet ved at benytte den øvre hukommelse. Ligger I lige et svar for jeres tid
01. december 2004 - 14:17
#18
ok
01. december 2004 - 14:20
#19
ok
Kurser inden for grundlæggende programmering