- #include<msp430x14x.h>
- #include "uart.h"
- #include "lcd.h"
- #include "portyUart.h"
- #include "portyLcd.h"
- #define TAKTY_ZEGARA_1_SEK 800000
- char Bufor[30]; // bufor odczytywanych danych
- int low=0; // znacznik pocz1teku danych w buforze
- int high=0; // zmacznik konca danych w buforze
- int a=0,b=0,c=0,d=0,literki=0;
- void main(void)
- {
- WDTCTL=WDTPW + WDTHOLD; // wy31czenie WDT
- P3SEL |= 0x10 + 0x20 + 0x40 + 0x80;
- P4DIR &= ~0x10;
- P4DIR &= ~0x20;
- P4DIR &= ~0x40;
- P4DIR &= ~0x80;
- InitPortsLcd(); // inicjalizacja portów LCD
- InitLCD(); // inicjalizacja LCD
- clearDisplay(); // czyszczenie wyowietlacza
- initPortyUart(); // inicjalizacja portow UART
- //initUart(115200); // inicjalizacja UARTa predkooa transmisji 2400 Budoów
- initUart(9600);
- _EINT(); // w31czenie przerwan
- while(1) // nieskonczona petla
- {
- if(literki%16==0) {
- if(literki%32==0) SEND_CMD(CUR_HOME);
- else SEND_CMD(DD_RAM_ADDR2);
- }
- if( !(P4IN & 0x10) == 0 && a>0) { a=0; __delay_cycles(TAKTY_ZEGARA_1_SEK*0.02); }
- if( !(P4IN & 0x20) == 0 && b>0) { b=0; __delay_cycles(TAKTY_ZEGARA_1_SEK*0.02); }
- if( !(P4IN & 0x40) == 0 && c>0) { c=0; __delay_cycles(TAKTY_ZEGARA_1_SEK*0.02); }
- if( !(P4IN & 0x80) == 0 && d>0) { d=0; __delay_cycles(TAKTY_ZEGARA_1_SEK*0.02); }
- if( !(P4IN & 0x10) != 0) {
- //UartStringTransmit("pierwszy"); // wys3anie napisu Tekst do ternimala
- if(a==0) { literki++; SEND_CHAR('1'); UartCharTransmit('1'); __delay_cycles(TAKTY_ZEGARA_1_SEK*0.02); a=a+1;}
- if(a>0&&a<10) { a=a+1; __delay_cycles(TAKTY_ZEGARA_1_SEK*0.7); }
- if(a==10) { literki++; SEND_CHAR('1'); UartCharTransmit('1'); __delay_cycles(TAKTY_ZEGARA_1_SEK*0.2); }
- while(high != low) // gdy odebrano dane
- {
- putc(Bufor[low]); // wypisanie danych na wyowietlaczu
- low= (++low)%30; // inkrementowanie znaczika pocz1tka danych
- }
- continue;
- }
- if( !(P4IN & 0x20) != 0) {
- if(b==0) { literki++; SEND_CHAR('2'); UartCharTransmit('2'); __delay_cycles(TAKTY_ZEGARA_1_SEK*0.02); b=b+1;}
- if(b>0&&b<10) { b=b+1; __delay_cycles(TAKTY_ZEGARA_1_SEK*0.7); }
- if(b==10) { literki++; SEND_CHAR('2'); UartCharTransmit('2'); __delay_cycles(TAKTY_ZEGARA_1_SEK*0.2); }
- while(high != low) // gdy odebrano dane
- {
- putc(Bufor[low]); // wypisanie danych na wyowietlaczu
- low= (++low)%30; // inkrementowanie znaczika pocz1tka danych
- }
- continue;
- }
- if( !(P4IN & 0x40) != 0) {
- if(c==0) { literki++; SEND_CHAR('3'); UartCharTransmit('3'); __delay_cycles(TAKTY_ZEGARA_1_SEK*0.02); c=c+1;}
- if(c>0&&c<10) { c=c+1; __delay_cycles(TAKTY_ZEGARA_1_SEK*0.7); }
- if(c==10) { literki++; SEND_CHAR('3'); UartCharTransmit('3'); __delay_cycles(TAKTY_ZEGARA_1_SEK*0.2); }
- while(high != low) // gdy odebrano dane
- {
- putc(Bufor[low]); // wypisanie danych na wyowietlaczu
- low= (++low)%30; // inkrementowanie znaczika pocz1tka danych
- }
- continue;
- }
- if( !(P4IN & 0x80) != 0) {
- if(d==0) { literki++; SEND_CHAR('4'); UartCharTransmit('4'); __delay_cycles(TAKTY_ZEGARA_1_SEK*0.02); d=d+1;}
- if(d>0&&d<10) { d=d+1; __delay_cycles(TAKTY_ZEGARA_1_SEK*0.7); }
- if(d==10) { literki++; SEND_CHAR('4'); UartCharTransmit('4'); __delay_cycles(TAKTY_ZEGARA_1_SEK*0.2); }
- while(high != low) // gdy odebrano dane
- {
- putc(Bufor[low]); // wypisanie danych na wyowietlaczu
- low= (++low)%30; // inkrementowanie znaczika pocz1tka danych
- }
- continue;
- }
- }
- }
- #pragma vector=UART0RX_VECTOR // procedura obs3ugi przerwania UART
- __interrupt void usart0_rx (void)
- {
- Bufor[high]=RXBUF0; // wpisanie odebranych danych do bufora
- high=(++high)%30; // inkrementowanie znacznika konca danych
- }