Forum

Einloggen | Registrieren | RSS  

Variable zwischen unterprogrammen übergeben (Elektronik)

verfasst von basti321s, 16.02.2013, 11:58 Uhr

Hallo,

ich bin hier total am verzweifeln.
Ich möchte eine Variable zwischen zwei Unterprogrammen übergeben.

Im Unterprogramm umrechnen läuft ein Timer0, der die Variable min_einer jede Minute um +1 erhöht.
Diese soll dann an das andere Unterprogramm ausgabe übergeben werden.

Ich habe schon tausend tutorials probiert, aber nichts hat funktioniert, könnt ihr mir bitte weiterhelfen.

Hier der Code:

[Code]
#include

__CONFIG (LVP_OFF & WDTE_OFF); //Low Voltage Programming OFF

// Watch dog timer off

void ausgabe (char min_einer);



void main (void)

{

OSCCON= 0b01110111; //Unimplemented

//111 8MHz

//OSTS Internal Oszillator

//HTS HFINTOSC ist stable

//LTS LFINTOSC is stable

//SCS Internal oscillator is used for system clock

TRISC = 0; //Port C als Ausgang

TRISB1 = 0;

TRISB2 = 0;

TRISB3 = 0;

TRISD = 0; //Port D als Ausgang

ANS8 = 0;

ANS9 = 0;

ANS10 = 0;

RB1=1;

RC0=0;

RC2=1;

RB3=0;

RB2=0;

RB3=1;









}

















int umrechnen(void) // Rechnet Timer Ausgang in Minuten um, Minuten werden auf "min_einer" ausgegeben.

{

unsigned int ms;

unsigned int min_einer;

unsigned int min_zehner;

OPTION_REG= 0b11000010; //Pull up disable

//Interrupt on rising edge of INT pin

//Internal cycle clock

//Increment on Low to high transition on T0CKI

//PSA assigned to timer0

//Prescaler 1:8

INTCON= 11100100; //Enable all unmasked interrupts

//Enables all unmasked peripheral interrupts

//Enables the INT external interrupt

//Disables the INT external interrupt

//Disables the PORTB change interrupt

//TMR0 Register has overflowed (cleared in software)

//INT external interrupt did not occur

//None of the PORTB general purpose I/O pins have changed state

TMR0 = 0; //Timer0 auf 0 Setzen

T0IF = 0; //Interrupt Flag zurücksetzen

PORTC=0b00000000; //PORTC rücksetzen

TMR0 = 6;









if (T0IF)

{

ms=ms+1; //Counter bei Timerüberlauf um 1 erhöhen

T0IF=0; //Interrupt Flag zurücksetzen

TMR0=6; //Timer preload auf 6 stellen

}



if (ms==60000)

{

min_einer=min_einer+1;

ms=0;

}



if (min_einer==9)

{

min_zehner=min_zehner+1;

min_einer=0;

}



if (min_zehner==9)

{

min_zehner=0;

}



return 0;



}











//-----------------------------------------------------------------------------







void ausgabe(char min_einer)

{











if (min_einer==9) //7Segment 0

{

PORTC=0b00000000;

PORTD=0b00000000;

}

if (min_einer==8) //7Segment 1

{

PORTC=0b00010000;

PORTD=0b00010000;

}

if (min_einer==7) //7Segment 2

{

PORTC=0b00100000;

PORTD=0b00100000;

}

if (min_einer==6) //7Segment 3

{

PORTC=0b00110000;

PORTD=0b00110000;

}

if (min_einer==5) //7Segment 4

{

PORTC=0b01000000;

PORTD=0b01000000;

}

if (min_einer==4) //7Segment 5

{

PORTC=0b01010000;

PORTD=0b01010000;

}

if (min_einer==3) //7Segment 6

{

PORTC=0b01100000;

PORTD=0b01100000;

}



if (min_einer==2) //7Segment 7

{

PORTC=0b01110000;

PORTD=0b01110000;

}

if (min_einer==1) //7Segment 8

{

PORTC=0b10000000;

PORTD=0b10000000;

}



if (min_einer==0) //7Segment 9

{

PORTC=0b10010000;

PORTD=0b10010000;

}









}

[/Code]



Gesamter Thread:

Variable zwischen unterprogrammen übergeben - basti321s, 16.02.2013, 11:58
Variable zwischen unterprogrammen übergeben - 79616363(R), 16.02.2013, 12:13
bitte "7 Tipps für Fragesteller" lesen; danke - geralds(R), 16.02.2013, 12:18
bitte "7 Tipps für Fragesteller" lesen; danke - basti321s, 16.02.2013, 13:28
bitte "7 Tipps für Fragesteller" lesen; danke - geralds(R), 16.02.2013, 13:41
bitte "7 Tipps für Fragesteller" lesen; danke - basti321s, 16.02.2013, 15:26
Modul - Display - geralds(R), 16.02.2013, 21:56
Modul - Display - basti321s, 17.02.2013, 09:39
Modul - Display - Björn(R), 17.02.2013, 20:49