Forum
Variable zwischen unterprogrammen übergeben (Elektronik)
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:
