logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[ATMEGA32][AVR GCC]Klawiatura z przerwaniami,EEPROM i DS1990

owitech 04 Cze 2009 16:23 948 0
REKLAMA
  • #1 6615209
    owitech
    Poziom 2  
    Witam
    Mam trudności z połączeniem klawiszy z odczytem i zapisem do eepromu. kiepsko znam c i jeśli ktoś może to proszę o pomoc. z góry dziękuje.
    zmienne do pamięci to
    
    unsigned char bufor1w[8]; //tutaj przechowuje dane do zapisania
    unsigned int nr_pastylki[24]; //tablica w eepromie do ktorej chce zapisać dane
    

    kod do obsługi klawiatury mam taki
    
    #include "klaw4x4.h"
    #include "nrbuf.h"
    #include <avr/interrupt.h>
    #include <avr/pgmspace.h>
    #include <avr/eeprom.h>
    #define OP_EE  12
    #define ZAPIS_EE   13
    #define KL_OPCJA   10
    #define 	PRG_RDB(addr)   pgm_read_byte(addr)
    
    
    ISR(INT1_vect )
    {
    void czekaj(unsigned long zt) //procedura wytracania czasu
    {
     #define tau 10.38
     unsigned char zt1;
     for(;zt>0;zt--)
     {
      for(zt1=255;zt1!=0;zt1--);
     }
    }
    void piszdlcd(char dana) ;
    
    char *info[7]={
                    PSTR("Wykryto pastylke"),
                    PSTR("Wykryto zwarcie "),
                    PSTR("Brak pastylki   "),
                    PSTR("                "),
                    PSTR("Blad CRC        "),
    		PSTR("Zapis do EEPROMu"),
    		PSTR("Blad CRC        "),
                   };
    
    	Klawisz_inf=odczyt_klawiatury(Klawisz_inf);
    	unsigned char kopia=Klawisz_inf&0x0f;
    	if(Klawisz_inf&1<<7)
    	{
    		if(kopia==KL_OPCJA)
    		{
    		opcja++;
    		pobierz_z_klaw=0;
    //		czysclcd();
    //		czekaj(3000*tau);
    		}
    		
    		if(kopia==ZAPIS_EE)			
    		{
    		lcdxy(0,0);
    		pisztekst(info[5]); 	
    		
    		czekaj(500*tau);
    		}
    		
    		if(kopia==OP_EE)
    		{
    			
    		}
    	}
    }
    
    

    można to zapisać w taki sposób??
    
    if(kopia==ZAPIS_EE)			
    		{
    		lcdxy(0,0);
    		pisztekst(info[5]); 	
    		eeprom_write_byte (nr_pastylki[n],bufor1w)
    		czekaj(500*tau);
    		}
    
  • REKLAMA
REKLAMA