Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wskaźniki

Ostatnio zmodyfikowano 2017-03-26 21:54
Autor Wiadomość
henryxxl
Temat założony przez niniejszego użytkownika
Wskaźniki
» 2017-03-26 20:04:11
Witam.
Jestem nowy na forum i mam do was pytanie. Mam taki program:
main.c
C/C++
#include <avr/io.h>

#include "keys.h"

#define LED1 (1<<PD7)
#define LED1_TOG PORTD ^= LED1

void moje_miganie_led( void ) {
    LED1_TOG;
}

int main( void ) {
   
    DDRD |= LED1;
   
    key_init();
   
    while( 1 ) {
       
        moj_klawisz( moje_miganie_led ); // TU ZASZŁA ZMIANA !!!
       
    }
}
keys.c
C/C++
#include <avr/io.h>

#include "keys.h"

// inicjalizacja biblioteki
void key_init( void ) {
    PORTC |= KEY1;
}

// obsługa klawisza
void moj_klawisz( void( * fun_wsk )( void ) ) { // TU ZASZŁA ZMIANA !!!
   
    static uint16_t key_lock;
   
    if( !key_lock && !( PINC & KEY1 ) ) {
        key_lock = 50000;
       
        // reakcja na PRESS (wcinięcie przycisku)
        //LED1_TOG;
        //PORTD ^= (1<<PD7);
        if( fun_wsk ) fun_wsk(); // TU ZASZŁA ZMIANA !!!
       
    } else if( key_lock &&( PINC & KEY1 ) ) key_lock++;
   
}
keys.h
C/C++
#ifndef KEYS_H_
#define KEYS_H_

#define KEY1 (1<<PC7)

void key_init( void );
void moj_klawisz( void( * fun_wsk )( void ) );

#endif /* KEYS_H_ */

Nie rozumiem jak dziala linijka
void moj_klawisz( void( * fun_wsk )( void ) );
 
P-159442
marcolo2307
» 2017-03-26 21:54:59
To deklaracja funkcji przyjmującej jako parametr wskaźnik na funkcję
void nazwa( void )
.
Tutaj masz to opisane.
P-159451
« 1 »
  Strona 1 z 1