/*******************************************************************************
Projektname: RC5.cprj
Benötigte Libs´s: IntFunc_lib.cc
Routinen: lcd.cc, PRO-BOT128C_Lib_V2.cc
Autor: Niels
Datum: 29. 05. 2013
Funktion: RC5-Fernsteuerungen testen
Ausgabe von Kanalnummer und Befehl
*******************************************************************************/
// Compiler-Direktiven
#define RC5DATAMASK 0b0000000000111111 // 6 Bit Datenwert-Maske
#define RC5CHANNELMASK 0b0000000000011111 // 5 Bit Kanalinfo-Maske
void main(void)
{
PRO_BOT128_INIT(); //PRO-BOT128 Setup
LCD_Init();
RC5_Init(26);
AbsDelay(100); //Wait 0,1 Sec.
LCD_ClearLCD();
Akkuspg(); // Ausgabe der Akkuspannung
LCD_ClearLCD();
int RC5Value; // Hier speichern wir die Roh-Empfangsdaten der FB
int RC5Data; // Hier nur die letzten 6 Bit von RC5Value speichern
int RC5Channel; // Kanal der Fernbedienung (5 Bit)
LCD_Locate(1, 1);
LCD_WriteText("Kanal Befehl ");
while(true)
{
// Endlos-Schleife
do
{
RC5Value=RC5_Read();
// RC5-Tastencode ermitteln und ausgeben
LCD_Locate(1, 1);
RC5Data=RC5Value;
RC5Data=RC5Data&RC5DATAMASK; // Maskierung der letzten 6 Bit
// Befehlsausgabe
LCD_Locate(1, 15);
LCD_WriteWord(RC5Data, 2); // Zur Ausgabe ganzzahliger Werte auf LCD
RC5Channel=RC5Value; // Gleichheitszeichen ist eine Zuweisung
RC5Channel=RC5Channel>>6; // Rechtsverschiebung / >> Verschiebeoperator
RC5Channel= RC5Channel&RC5CHANNELMASK; // Maskierung
// Kanalausgabe
LCD_Locate(1, 6);
LCD_WriteWord(RC5Channel, 2);
}
while(1);
}
}
// Wir lagern Programmcode in eine (Unter-)Funktion aus
int Akkuspg(void)
{
LCD_ClearLCD();
//LCD auf Zeile 1 Position 1 setzen:
LCD_Locate(1, 1);
LCD_WriteText("Akkuspannung:"); //Begruessung
LCD_Locate(2, 1);
float Akkuspannung;
Akkuspannung=AKKU_SPG();
LCD_WriteFloat(Akkuspannung, 6);
AbsDelay(2000); //Wait 2 Sec.
return 0;
}