//****************************************************************************** #include #include "TS_LC7981.h" #include // für Zeichen (Infotext) notwendig #include // für sprint #include #define TIMEOUT 100 // für Datenempfang unsigned int t,k; void programmversion(void); void UART1_einstellen(void); void tasten_entprellen(void); void E32_konfigurieren(void); void daten_senden(void); void daten_ausgeben(void); void Dx_ausgeben(void); void temp_ausgeben(void); void antwort_empfangen(void); void pause40000(void); unsigned char config_E32[] = { 0xC0, // sichert die Parameter nach Stromausfall 0x03, // Adresse oberes Byte 0x03, // Adresse unteres Byte 0x1A, // 8N1, UART baut rate:9600 (bps), Übertragungsrate:2,4k (bps) 0x09, // Kanal 09 gesendet von von Gerät 3 0xC7 // "fixed" Übetragungsmodus; TXD und AUX als Ausgang RXD als Eingang; }; unsigned char txdaten[] = { 0x02, // Adresse 0x02, // Adresse 0x09, // kanal 0x56, // 0x56 löst in LP161 antwort aus 0x56 }; unsigned char rxdaten[5]; unsigned char daten1,daten2; volatile char flag10ms; int main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer P2IE |= 0x03; // an P2.0, P2.1 Interruptfreigabe P2IES |= 0x03; // auf H/L Flanke an P2.0, P2.1 P5DIR |= BIT6+ BIT7; // für LED P5.6 + P5.7 P5OUT |= BIT6; // LED grün AUS P5OUT |= BIT7; // LED rot AUS P4DIR |= BIT0 + BIT1; // M0; M1 P4OUT |= BIT0 + BIT1; // M0 und M1 auf 1 --> E32 konfigurieren P1DIR =0xFF; // FKA text_init(); // in FKA TS_7981.h programmversion(); UART1_einstellen(); E32_konfigurieren(); P4OUT &= ~BIT0; // M0 und M1 auf 0 --> E32 senden/empfangen P4OUT &= ~BIT1; // M0 und M1 auf 0 --> E32 senden/empfangen pause40000(); _EINT(); while(1) { tasten_entprellen(); __delay_cycles (100); // ca. 10ms delay hier einfügen } } void antwort_empfangen(void){ unsigned char i, j; for (i=0, j=0; i 26 Zeichen pro Zeile lcd_write_command(LCD_CMD_CURSOR_HA,0); sprintf(vers,"%s","0199a se an 0202 G1+empf"); for (z=0; z<25; z++) { lcd_write_command(LCD_CMD_WRITE_DATA, vers[z]); } lcd_write_command(LCD_CMD_CURSOR_LA,52); //26 Zeilenanfang 2.Zeile --> 26 Zeichen pro Zeile lcd_write_command(LCD_CMD_CURSOR_HA,0); sprintf(vers,"%s","antwort von LP161 G1 "); for (z=0; z<25; z++) { lcd_write_command(LCD_CMD_WRITE_DATA, vers[z]); } } void pause40000(void) { unsigned int i; for (i=40000;i>0;i--); // warten } // Für debug, Byte als HEX-Zahl ausgeben /* void Dxausgeben(char data) { char vers[5],z,c; lcd_write_command(LCD_CMD_CURSOR_LA,106); //26 Zeilenanfang 2.Zeile --> 26 Zeichen pro Zeile lcd_write_command(LCD_CMD_CURSOR_HA,0); sprintf(vers,"%02X", data); for (z=0; z<2;z++) { lcd_write_command(LCD_CMD_WRITE_DATA, vers[z]); } } void daten_ausgeben(unsigned int data) { char vers[7], z; lcd_write_command(LCD_CMD_CURSOR_LA,157); //26 Zeilenanfang 2.Zeile --> 26 Zeichen pro Zeile lcd_write_command(LCD_CMD_CURSOR_HA,0); sprintf(vers,"%05u", data); for (z=0; z<5; z++) { lcd_write_command(LCD_CMD_WRITE_DATA, vers[z]); } } void temp_ausgeben((unsigned int data) { char vers[6], z; lcd_write_command(LCD_CMD_CURSOR_LA,183); // 26 Zeilenanfang 2.Zeile --> 26 Zeichen pro Zeile lcd_write_command(LCD_CMD_CURSOR_HA,0); sprintf(vers,"%05u",data/16); for (z=0; z<5; z++) { lcd_write_command(LCD_CMD_WRITE_DATA, vers[z]); } } */