/************************************************/ /* LMX9820 Bluetooth Commandos */ /************************************************/ #include "user.h" // Einfügen der "user.h"-Headerdatei. Sollte im gleichen Verzeichnis sein (ist sie aber nicht) /************************************************/ /* Const. declaration */ /* refere to National Datasheet */ /************************************************/ // "#define" definiert symbolische Konstanten, die dann durch einfachen Textersatz eingesetzt werden #define StartDelimiter 02 // StartDelimiter wird durch 02 ersetzt #define EndDelimiter 03 // EndDelimiter wird durch 03 ersetzt #define PacketType_REQ 0x52 // PacketType_REQ wird durch 0x52 ersetzt #define PacketType_CFM 0x43 // PacketType_CFM wird durch 0x43 ersetzt #define PacketType_IND 0x69 // PacketType_IND wird durch 0x69 ersetzt #define PacketType_RES 0x72 // PacketType_RES wird durch 0x72 ersetzt #define GAP_Inquiry 0x00 // GAP_Inquiry wird durch 0x00 ersetzt #define GAP_Write_Local_Name 0x04 // GAP_Write_Local_Name wird durch 0x04 ersetzt #define SPP_Set_Port_Config 0x07 // SPP_Set_Port_Config wird durch 0x07 /*********************************************/ void SendRequestToBlueTooth (void) // Anfrage-Funktion: Sendet eine Anfrage zu LM9820 { SendByteToSerialBuffer (StartDelimiter); // Sendet den Wert 02 (siehe Definitionen oben) SendByteToSerialBuffer (PacketType_REQ); // Sendet den Wert 0x52 (siehe Definitionen oben) } /*********************************************/ void SetBlueModuleName (void) // Modul-Namen-Funktion: Setzt den Namen des Moduls { SendRequestToBlueTooth(); // Ruft Anfrage-Funktion auf SendByteToSerialBuffer (GAP_Write_Local_Name); // Sendet den Wert 0x04 (siehe Definitionen oben) SendByteToSerialBuffer (0x14); // Sendet den Wert 0x14 SendByteToSerialBuffer (0); // Sendet den Wert 0 SendByteToSerialBuffer (0x6a); // Sendet den Wert 0x6a SendByteToSerialBuffer (0x13); // Sendet den Wert 0x13 puts ("LMX9820 Test"); // Sendet den String "LMX9820 Test" zur Seriellen SendByteToSerialBuffer (0x00); // Sendet den Wert 0x00 SendByteToSerialBuffer (EndDelimiter); // Sendet den Wert 03 (siehe Definitionen oben) } /*********************************************/ void SetSerialService (void) // Funktion zum Setzen der seriellen Hardware { // Code kann hinzugefügt werden } /*********************************************/ int GetBlueDevices (void) // Blue-Device-Funkton: Funktion für die Bluetooth-Hardware { SendRequestToBlueTooth(); // Aufrufen der Anfrage-Funktion SendByteToSerialBuffer (GAP_Inquiry); // Sendet den Wert 0x00 SendByteToSerialBuffer (3); // Sendet den Wert 3 SendByteToSerialBuffer (0); // Sendet den Wert 0 SendByteToSerialBuffer (PacketType_REQ + 3); // Sendet den Wert 0x72 (siehe Definitionen oben) addiert mit 3 SendByteToSerialBuffer (0x0a); // Length SendByteToSerialBuffer (0x00); // NumResponses SendByteToSerialBuffer (0x00); // Mode SendByteToSerialBuffer (EndDelimiter); // Sendet den Wert 03 (siehe Definitionen oben) } /*********************************************/ void SetModeBlueCom (unsigned char Baud) // Set up baudrate of simulated port { unsigned char xdata CommState; // Definieren der Variable CommState CommState = 03; // 8 data bit CommState = CommState + 0; // 1 stopbit CommState = CommState + 0; // parity CommState = CommState + 0; // even SendRequestToBlueTooth(); // communication start SendByteToSerialBuffer (SPP_Set_Port_Config); // Sendet den Wert 0x07 (siehe Definitionen oben) SendByteToSerialBuffer (6); // Sendet den Wert 6 SendByteToSerialBuffer (0); // Sendet den Wert 0 SendByteToSerialBuffer (0x5F); // Sendet den Wert 0x5F SendByteToSerialBuffer (0x01); // Sendet den Wert 0x01 SendByteToSerialBuffer (Baud); // Sendet den Wert der Variable "Baud" SendByteToSerialBuffer (CommState); // Sendet den Wert der Variable CommState SendByteToSerialBuffer (0); // Sendet den Wert 0 SendByteToSerialBuffer (0); // Sendet den Wert 0 SendByteToSerialBuffer (0); // Sendet den Wert 0 SendByteToSerialBuffer (EndDelimiter); // Sendet den Wert 93 (siehe Definitionen oben) } /*********************************************/ // Exteral hardware control pins: sbit BlueToothResetPin = P2 ^ 6; /*********************************************/ void BlueToothReset(void) { BlueToothResetPin = 0; Wait(10); // 10us external!! BlueToothResetPin = 1; } /*********************************************/ void SetBlueBaud_115200(void) // set up ADuC to 115kBaud by using T3 baudrategen. { PLLCON = 0x00; // CD = 1 T3CON = 0x82; // T3CON = 0x82 T3FD = 0x20; // T3FD = 0x09 PCON |= 0x80; // set SMOD -> 19200 Baud (double baudrate controller) SCON = 0x50; // S0CON: mode 2, 8-bit UART, enable rcvr EA = 1; // interrup driven (if necessary) ref. www.keil.com intsio.zip ES = 1; } /*********************************************/ void LMX9820_init (void) { SetBlueBaud_115200(); SetBlueModuleName(); }