C++ programma

Alle vragen m.b.t digitale schakelingen m.b.v. losse i.c's
en oplossingen m.b.v. PIC processoren.
Plaats reactie
mathieu
Berichten: 44
Lid geworden op: za 18 feb 2006, 12:59

C++ programma

Bericht door mathieu »

Hoi,

ik heb een probleem met een programma van mij.
deze dient voor een powersyply board.
Het gaat over een deel ervan in een functie te plaatsen


ziehier het programma:

#include <ADUC812.H>
#include <stdio.h>

sbit nul = P0^0;
sbit een = P0^1;
sbit twee = P0^2;
sbit drie = P0^3;
sbit vier = P0^4;
sbit vijf = P0^5;
sbit zes = P0^6;
sbit zeven = P0^7;



void main (void)
{
P0 = 0;


/*-----------------------------------------------
Configure the A/D to sequentially convert each
input channel.
-----------------------------------------------*/
ADCCON1 = 0x7C; // 0111 1100
ADCCON2 = 0x04; //00000100
while (1)
{
unsigned int conv_val;
unsigned char channel;
float i;


/*-----------------------------------------------
Start a conversion and wait for it to complete.
-----------------------------------------------*/
SCONV = 1;
while (ADCCON3 & 0x80); //x0000000

/*-----------------------------------------------
Read A/D data and print it out.
-----------------------------------------------*/
channel = ADCDATAH >> 4;
conv_val = (ADCDATAL | ((ADCDATAH & 0x0F) << 8));

i = (2.5 / 4095) * conv_val ;

if(i>=1.71)
{
if(i>1.89)
{
nul = 0;
een = 0;
}
else{
nul = 1;
een = 1;
}
}

else {
nul = 0;
een = 0;
}


}

}

----------------------
als ik nu vanaf ADCCON1 = 0x7C;
tot
else {
nul = 0;
een = 0;
}


}

in een functie wil plaatsen, hoe moet ik dit doen??

Groeten,
als er onduidelijkheden zijn stel ze mij gerust.
the waiter
Berichten: 202
Lid geworden op: zo 27 feb 2005, 19:57
Locatie: In de buurt van Tilburg
Contacteer:

Bericht door the waiter »

in feite heb je het al in een functie staan, main.
het princiepe is dus ook het zelfde,
wat je moet weten is, wat gaat er in en wat gaat er uit je functie. (returned hij een waarde naar main)

De structuur van het prog wordt:

//lib's include
#include <ADUC812.H>
#include <stdio.h>

// functie declareren
void functie_naam(void);
// in de functie functie_naam gaat geen waarde en komt geen waarde
//zoals in he originele prog

//main functie
void main(void)
{
// wat code
//functie aanroepen
functie_naam();
//nog meer code

} // einde main

//functie maken
void functie_naam( void)
{
// alle C code van deze functie, die in de oude versie in je main staat en
//je in de functie wil hebben

}



==============
Hopelijk is het duidelijk
If only I and DEAD people can read hex, how many people can read hex?

57006

www.dayslikethis.nl
mathieu
Berichten: 44
Lid geworden op: za 18 feb 2006, 12:59

Bericht door mathieu »

ok,
ik denk dat ik het snap,
maar ik maak toch 2x dezelfde functie aan
"void functie_naam(void)
, en ik moet die routine toch maar 1x schrijven (denk ik :roll: )

groeten,
the waiter
Berichten: 202
Lid geworden op: zo 27 feb 2005, 19:57
Locatie: In de buurt van Tilburg
Contacteer:

Bericht door the waiter »

ja idd je moet de routine maar 1 keer aanmaken, maar je meot zorgen dat alle routines al voor main gedeclarreerd zijn, anders gaat het fout.
If only I and DEAD people can read hex, how many people can read hex?

57006

www.dayslikethis.nl
mathieu
Berichten: 44
Lid geworden op: za 18 feb 2006, 12:59

bittrein opsplitsen

Bericht door mathieu »

Hoi,
ik zit een probleem, ik moet een programma maken voor een schuifregister, daarin moet ik een strobe, clock en data puls maken,
op de clock stuur ik constant een 0 1 signaal,
op de strobe stuur ik om de 8 , 1signalen een 1sginaal,
en nu volgt het probleem, als ik een hex getal wil doorsturen
bv. 0x09 = bin 00001001, ik moet nu elke keer mijn clock 1 is tijdens mijn 8 , 1 pulsen, een bin deel van mijn hex waarde door sturen,
als ik dit vergelijk met mijn voorbeeld is dit
clock 1 = 0
clock 2 =0
clock 3 = 0
clock 4 = 0
clock 5 = 1
clock 6 = 1
clock 7 = 0
clock 8 = 1

hoe doe ik dat als mijn programma waar ik mijn clock en strobe puls

#include <ADUC812.H>
#include <stdio.h>

sbit Strobe =P2^5 ;
sbit Clock = P3^4;
sbit Data = P3^3;
unsigned char strobebepaling;
unsigned char teller;

unsigned char pulsgever[]={0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1};
//----------------------------------------------
void schuifregister(void)
{
Strobe = 0;


for(teller = 0 ;teller <15; teller++)
{
Clock = pulsgever[teller];

}
if (teller ==15){
for(strobebepaling = 0; strobebepaling <1; strobebepaling++)
{Strobe =1;}
}

else{Strobe = 0;}
}
//----------------------------------------------

void main (void)
{
while (1)
{
schuifregister();
}
}

dit was mijn programma.
the waiter
Berichten: 202
Lid geworden op: zo 27 feb 2005, 19:57
Locatie: In de buurt van Tilburg
Contacteer:

Bericht door the waiter »

waarom doe je dit:

if (teller ==15){
for(strobebepaling = 0; strobebepaling <1; strobebepaling++)
{Strobe =1;}
}

else{Strobe = 0;}
}

op het moment dat je daar komt is teller toch altijd gelijk aan 15?

zou je mij even ADUC812.H kunnen sturen, of een linkje waar ik hem kan downloaden, mijn compiler heeft hem niet.
If only I and DEAD people can read hex, how many people can read hex?

57006

www.dayslikethis.nl
mathieu
Berichten: 44
Lid geworden op: za 18 feb 2006, 12:59

Bericht door mathieu »

hoi,
-ik doe dit omdat ik dan op mijn scoop 8pulsen zie en dan 1strobe puls,
_ _ _ _ _ _ _ _
_| |_| |_| |_| |_| |_| |_| |_| |_ = clock
_
_________________________| |____ = strobe

ik weet niet echt waar ik je de aduc812 kan downloaden,
ik denk op de site van analog devices,
maar ik zoek nog even en als ik hem vind stuur ik hem door,
Wat is je e-mailadres?

Greets
Mathieu
the waiter
Berichten: 202
Lid geworden op: zo 27 feb 2005, 19:57
Locatie: In de buurt van Tilburg
Contacteer:

Bericht door the waiter »

yannick {a_t} dayslikethis{punt}nl
If only I and DEAD people can read hex, how many people can read hex?

57006

www.dayslikethis.nl
mathieu
Berichten: 44
Lid geworden op: za 18 feb 2006, 12:59

Bericht door mathieu »

hoi

lukt het met de library, is het de juiste?

groeten,

Mathieu
the waiter
Berichten: 202
Lid geworden op: zo 27 feb 2005, 19:57
Locatie: In de buurt van Tilburg
Contacteer:

Bericht door the waiter »

ik heb de afgelopen dagen nog geen tijd gehad er mee te stoeien, je hoort het als ik iets vind.
If only I and DEAD people can read hex, how many people can read hex?

57006

www.dayslikethis.nl
mathieu
Berichten: 44
Lid geworden op: za 18 feb 2006, 12:59

Bericht door mathieu »

Hoi,
het probleem is opgelost :D
toch bedankt voor de reacties :P

groeten,

Mathieu 8)
mathieu
Berichten: 44
Lid geworden op: za 18 feb 2006, 12:59

Bericht door mathieu »

hallo,

ik zit weer in de problems :( ,
hoe verstuur ik een hele zin naar een lcd zonder telkens de asci code in te geven????? in C

Groeten,

Mathieu
the waiter
Berichten: 202
Lid geworden op: zo 27 feb 2005, 19:57
Locatie: In de buurt van Tilburg
Contacteer:

Bericht door the waiter »

waarschijnlijk kun je ook gewoon de letter neer zetten en maakt de compiler er zelf de ascii waarde van
If only I and DEAD people can read hex, how many people can read hex?

57006

www.dayslikethis.nl
mathieu
Berichten: 44
Lid geworden op: za 18 feb 2006, 12:59

Bericht door mathieu »

nee, heb ik al geprobeerd, ik zend mijn waarden via eens schuifregister door en, ik wil een volledige zin intypen, waarbij hij deze toch binnenleest en displayt.

enige tips??

Groeten,

Mathieu
mathieu
Berichten: 44
Lid geworden op: za 18 feb 2006, 12:59

Bericht door mathieu »

Ok,
het is gelukt, met een array overloop ik mijn waarde een voor een en zend ze zo door

toch bedankt voor de reacties.

Groeten,

Mathieu
mathieu
Berichten: 44
Lid geworden op: za 18 feb 2006, 12:59

veranderlijke waarde in string c++

Bericht door mathieu »

hello,

k'zit WEERAL met een probleempje, :x
ik stuur een string naar mijn lcd via
LCD_DATA("dit is de string")
als ik nu een waarde in wil geven die kan veranderen zoals de waarde van de temperatuur.
ik dacht dat je dat zo deed:
LCD_DATA("temperatuur is %d",temperatuur);
maar natuurlijk zet hij alles tussen de accenten in string dus ziet hij %d niet als een veranderlijke :(

kan iemand mij helpen???


Groeten,

Mathieu
the waiter
Berichten: 202
Lid geworden op: zo 27 feb 2005, 19:57
Locatie: In de buurt van Tilburg
Contacteer:

Bericht door the waiter »

ik heb even een test programmatje gemaakt, probeer het zo eens:

#include <stdio.h>

void main(void)
{
char text[19];
int temp_tiental;
int temp_eenheid;

temp_tiental = 1;
temp_eenheid = 5;

/* temp is nu 15 */

temp_tiental = temp_tiental +48;
temp_eenheid = temp_eenheid +48;
/*ascii waarde ingesteld */

strcpy(text, "Temperatuur is ");
text[15] = temp_tiental;
text[16] = temp_eenheid;


printf("%s", text);

}

in plaats van printf gebruik je dan lcd data,

LCD_DATA(text);

in plaats van 2 aparte ints kun je ook een array van ints maken waar je het getal in zet.

even een tip over hoe je een int met het getal 15 opsplitst in 2 aparte getallen, een 1 en een 5.

stel:A =15, je wilt dat opsplitsen in b=1 en c=5.
(alle variabelen zijn integers!)
b= A/10;
c= A - (10*b)
If only I and DEAD people can read hex, how many people can read hex?

57006

www.dayslikethis.nl
Plaats reactie