Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 5th, 2012  |  syntax: None  |  size: 1.56 KB  |  hits: 18  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. int lese_uhrzeit(char *wahl)
  2. {
  3.         //lokale Variablen
  4.         int _sec, _min, _hour, _weekday, _day, _month, _year;
  5.         i2c_start_wait(UHR_ADRESSE+I2C_WRITE); //Adresse in Bus schreiben
  6.         i2c_write(0);
  7.        
  8.         i2c_rep_start(UHR_ADRESSE+I2C_READ);
  9.        
  10.        
  11.         // Daten auslesen
  12.         _sec = i2c_readAck();
  13.         _min = i2c_readAck();
  14.         _hour = i2c_readAck();         
  15.         _weekday = i2c_readAck();
  16.         _day = i2c_readAck();
  17.         _month = i2c_readAck();
  18.         _year = i2c_readAck();
  19.        
  20.         // Gefragte Information zurueckgeben
  21.         if (strcmp(wahl,"sec") == 0)
  22.         {
  23.                 int _sec_einer = (_sec & 0x0F); // Unteres Nibble maskieren -> einer Sekunden
  24.                 int _sec_zehner = ((_sec & 0x70) >> 4)& 0x07;   // Oberes Nibble maskieren -> zehner Sekunden
  25.                
  26.                 _sec = _sec_einer + _sec_zehner*10;;
  27.                
  28.                 return _sec;
  29.         }      
  30.                
  31.         else if (strcmp(wahl,"min") == 0)
  32.         {              
  33.                 int _min_einer = (_min & 0x0F);
  34.                 int _min_zehner = ((_min & 0x70) >> 4)& 0x07;
  35.                
  36.                 /*char einer[5];
  37.                 char zehner[5];
  38.                
  39.                 itoa(_min_einer,einer,10);
  40.                 itoa(_min_zehner,zehner,10);
  41.                 lcd_setze_text(einer,zehner);
  42.                 wait_ms_long(1000);
  43.                 */
  44.                 _min = _min_einer + _min_zehner*10;;
  45.                 return _min ;
  46.         }
  47.        
  48.         else if (strcmp(wahl,"hour") == 0)
  49.         {
  50.                 int _hour_einer = (_hour & 0x0F);
  51.                 int _hour_zehner = ((_hour & 0x30) >> 4)& 0x07;
  52.  
  53.                 _hour = _hour_einer + _hour_zehner*10;
  54.                
  55.                 return _hour ;
  56.         }      
  57.        
  58.         else if (strcmp(wahl,"day") == 0)
  59.         {
  60.                 int _day_einer = (_day & 0x0F);
  61.                 int _day_zehner = (_day & 0x30) >> 4;
  62.                
  63.                 _day = _day_einer + _day_zehner*10;
  64.                
  65.                 return _day ;
  66.         }
  67.        
  68.         // Monat, Jahr, Wochentag werden nicht benötigt
  69.         else
  70.         {
  71.                 return -1 ;
  72.         }
  73. }