document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. /*******************************************************************************
  2.  Projektname:       RC5.cprj
  3.  Benötigte Libs´s:  IntFunc_lib.cc
  4.  Routinen:          lcd.cc, PRO-BOT128C_Lib_V2.cc
  5.  Autor:             Niels
  6.  Datum:             29. 05. 2013
  7.  
  8.  Funktion:          RC5-Fernsteuerungen testen
  9.                     Ausgabe von Kanalnummer und Befehl
  10. *******************************************************************************/
  11.  
  12. // Compiler-Direktiven
  13. #define RC5DATAMASK 0b0000000000111111 // 6 Bit Datenwert-Maske
  14. #define RC5CHANNELMASK 0b0000000000011111 // 5 Bit Kanalinfo-Maske
  15.  
  16. void main(void)
  17. {
  18.  
  19. PRO_BOT128_INIT();    //PRO-BOT128 Setup
  20. LCD_Init();
  21. RC5_Init(26);
  22. AbsDelay(100);       //Wait 0,1 Sec.
  23. LCD_ClearLCD();
  24.  
  25. Akkuspg(); // Ausgabe der Akkuspannung
  26. LCD_ClearLCD();
  27.  
  28. int RC5Value; // Hier speichern wir die Roh-Empfangsdaten der FB
  29. int RC5Data; // Hier nur die letzten 6 Bit von RC5Value speichern
  30. int RC5Channel; // Kanal der Fernbedienung (5 Bit)
  31.  
  32. LCD_Locate(1, 1);
  33. LCD_WriteText("Kanal   Befehl ");
  34.  
  35. while(true)
  36. {
  37.  
  38. // Endlos-Schleife
  39.     do
  40.       {
  41.       RC5Value=RC5_Read();
  42.       // RC5-Tastencode ermitteln und ausgeben
  43.       LCD_Locate(1, 1);
  44.       RC5Data=RC5Value;
  45.       RC5Data=RC5Data&RC5DATAMASK; // Maskierung der letzten 6 Bit
  46.       // Befehlsausgabe
  47.       LCD_Locate(1, 15);
  48.       LCD_WriteWord(RC5Data, 2); // Zur Ausgabe ganzzahliger Werte auf LCD
  49.       RC5Channel=RC5Value; // Gleichheitszeichen ist eine Zuweisung
  50.       RC5Channel=RC5Channel>>6; // Rechtsverschiebung / >> Verschiebeoperator
  51.       RC5Channel= RC5Channel&RC5CHANNELMASK; // Maskierung
  52.       // Kanalausgabe
  53.       LCD_Locate(1, 6);
  54.       LCD_WriteWord(RC5Channel, 2);
  55.       }
  56.     while(1);
  57. }
  58. }
  59.  
  60. // Wir lagern Programmcode in eine (Unter-)Funktion aus
  61. int Akkuspg(void)
  62. {
  63.     LCD_ClearLCD();
  64.     //LCD auf Zeile 1 Position 1 setzen:
  65.     LCD_Locate(1, 1);
  66.     LCD_WriteText("Akkuspannung:"); //Begruessung
  67.     LCD_Locate(2, 1);
  68.     float Akkuspannung;
  69.     Akkuspannung=AKKU_SPG();
  70.     LCD_WriteFloat(Akkuspannung, 6);
  71.     AbsDelay(2000);       //Wait 2 Sec.
  72.     return 0;
  73. }
');