// ******************** // *Testschaltung 1611* // ******************** // graph. Flüssigkristallanzeige FKA LC7981 // Uhr DS32C35 // MSP430F1611 // ----------------- // | XIN|- 32,768kHz // | | // Taster rot--|RST (58) XOUT|- 32,768kHz // P5.7|LED rot // | P5.6|LED Grün // 8 Mhz X2IN- | P2.1|Taster // | P2.0|Taster // 8 MHz X2OUT- | P1.0..P1.7|Daten FKA // | | // | P3.0| SPI BL1 (28) // UTXD0 |P3.4 P3.1|-> Daten Ausgang SPI/I²C (29) // URXD0 |P3.5 P3.2|<- Data In (SOMI0) SPI/I²C (30) // UTXD1 |P3.6 P3.3|-> Serial Clock Out (SCL) SPI/I²C (31) // URXD1 |P3.7 // | P4.0| TB0 Eingang // P4.1| // P4.2| // P4.3| // | P4.6| // | P4.7| //(44)SD-CS |P5.0 P2.7| SD Karte Einsteckkontrolle // SD-DI |P5.1 P2.6| // SD-DO |P5.2 P2.5| RST RV1805 // SD-CLK |P5.3 P2.4| // nCSB ADS1293 |P5.4 P2.3| // |P5.5 P2.2| // grün |P5.6 P6.7| // rot |P5.7 P6.6| Steuerung FKA RS // P6.5| Steuerung FKA R/W // P6.3| Steuerung FKA E // Juni 2021 //****************************************************************************** #include #include "TS_LC7981.h" #include // für Zeichen (Infotext) notwendig #include // für sprint #include unsigned int t,k; //char zeile; void Timer_einstellen(void); void programmversion(void); void wertrx_ausgeben(void); void UART1_empfang_einstellen(void); void datenrx_ausgeben(void); char i,rxwert,zaehler,rx_buffer[3],mm; unsigned int daten,OB,UB; int main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer P5DIR |= BIT6+ BIT7; // für LED P5.6 + P5.7 P1DIR =0xFF; //FKA text_init(); // in TS_7981.h programmversion(); UART1_empfang_einstellen(); while(1) { rxwert = RXBUF1; if (rxwert == 0xAA) { while (!(IFG2 & URXIFG1)); mm = RXBUF1; while (!(IFG2 & URXIFG1)); UB = RXBUF1; while (!(IFG2 & URXIFG1)); OB = RXBUF1; daten = (OB<<8) | UB; wertrx_ausgeben(); datenrx_ausgeben(); } } } void UART1_empfang_einstellen(void) { P3SEL |= 0xC0; // P3.6 = USART1 TXD ; P3.7 = RXD1 ME2 |= URXE1; // Enable USART1 TXD/RXD UCTL1 |= CHAR; // 8-bit character UTCTL1 |= SSEL0; // UCLK = ACLK UBR01 = 0x03; // 32k/9600 - 3.41 UBR11 = 0x00; // UMCTL1 = 0x4A; // Modulation UCTL1 &= ~SWRST; // Initialize USART state machine IE2 |= URXIE1; // Enable USART1 RX interrupt // _BIS_SR(LPM3_bits + GIE); // Enter LPM3 w/ interrupt } void programmversion(void) { char vers[26],z,c; lcd_write_command(LCD_CMD_CURSOR_LA,26); //26 Zeilenanfang 2.Zeile --> 26 Zeichen pro Zeile lcd_write_command(LCD_CMD_CURSOR_HA,0); sprintf(vers,"%s","0164-V05-I-UART-empfangen"); for (z=0; z<25;z++) { c=vers[z]; lcd_write_command(LCD_CMD_WRITE_DATA, c); } } void wertrx_ausgeben(void) { char vers[5],z,c; lcd_write_command(LCD_CMD_CURSOR_LA,115); //26 Zeilenanfang 2.Zeile --> 26 Zeichen pro Zeile lcd_write_command(LCD_CMD_CURSOR_HA,0); sprintf(vers,"%04u",rxwert); for (z=0; z<4;z++) { c=vers[z]; lcd_write_command(LCD_CMD_WRITE_DATA, c); } } void datenrx_ausgeben(void) { char vers[7],z,c; lcd_write_command(LCD_CMD_CURSOR_LA,167); //26 Zeilenanfang 2.Zeile --> 26 Zeichen pro Zeile lcd_write_command(LCD_CMD_CURSOR_HA,0); sprintf(vers,"%06u",daten); for (z=0; z<6;z++) { c=vers[z]; lcd_write_command(LCD_CMD_WRITE_DATA, c); } } /* // UART0 RX ISR #pragma vector=UART0RX_VECTOR __interrupt void usart1_rx (void) { } */