Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<msp430x14x.h>
- #include "uart.h"
- #include "lcd.h"
- #include "portyUart.h"
- #include "portyLcd.h"
- #define true 1
- #define false 0
- #define button1 P4IN & BIT4
- #define button2 P4IN & BIT5
- #define button3 P4IN & BIT6
- #define button4 P4IN & BIT7
- #define buforSize 30
- char data[buforSize]; // bufor odczytywanych danych
- int startData=0;
- int endData=0;
- char data1[16];
- char data2[16];
- void Wyswietl_linie()
- {
- clearDisplay();
- int i = 0 ;
- while(true)
- {
- if(data1[i] != 0)
- {
- if(data1[i] == 13)break;
- putc(data1[i]);
- }
- i++;
- if(i == 16)break;
- }
- gotoSecondLine();
- i=0;
- while(data2[i] != 0)
- {
- putc(data2[i++]);
- if(i == 16)break;
- }
- }
- void move()
- {
- int i=0;
- for(i=0; i<16; i++)
- {
- data1[i] = data2[i];
- data2[i] = 0;
- }
- }
- void addChar(char z)
- {
- int i = 0 ;
- while(data1[i] != 0)
- {
- if(data1[i] == 13)break;
- //if(data1[i] == 16)break;
- i++;
- if(i == 16)break;
- }
- if(i!=16 && data1[i] != 13)
- //if(i!=16 && data1[i] != 16)
- {
- data1[i] = z;
- }
- else
- {
- i= 0;
- while(data2[i] != 0)
- {
- if(data2[i] == 13)break;
- i++;
- if(i == 16)break;
- }
- if(z == 13)
- {
- data2[i] = z;
- move();
- }
- else if(i!=16&& data2[i] != 13)
- // else if(i!=16&& data2[i] != 15)
- {
- data2[i] = z;
- }
- else
- {
- move();
- addChar(z);
- }
- }
- }
- void Delay (unsigned int a)
- {
- int k;
- for (k=0 ; k != a; ++k)
- {
- _NOP();
- _NOP();
- _NOP();
- _NOP();
- }
- }
- void Delayx100us(unsigned int b)
- {
- int j;
- for (j=0; j!=b; ++j) {
- Delay (_100us);
- }
- }
- void lcdInit() {
- InitPortsLcd(); // inicjalizacja portów LCD
- InitLCD(); // inicjalizacja LCD
- clearDisplay(); // czyszczenie wyowietlacza
- initPortyUart(); // inicjalizacja portow UART
- initUart(9600);
- }
- void buttonInit() {
- P4DIR &= ~BIT4;
- P4DIR &= ~BIT5;
- P4DIR &= ~BIT6;
- P4DIR &= ~BIT7;
- _EINT(); // w31czenie przerwan
- }
- void listenDataIsTransmitted(){
- while(endData != startData) // gdy odebrano dane
- {
- addChar(data[startData]); // wypisanie danych na wyowietlaczu
- startData= (++startData)%30; // inkrementowanie znaczika pocz1tka danych
- Wyswietl_linie();
- }
- }
- void main(void)
- {
- WDTCTL=WDTPW + WDTHOLD; // wy31czenie WDT
- lcdInit();
- buttonInit();
- while(true)
- {
- if((button1)==0) {
- UartCharTransmit('Q');
- Delayx100us(2000);
- }
- if((button2) == 0) {
- UartCharTransmit('W');
- Delayx100us(2000);
- }
- if((button3)==0) {
- UartCharTransmit('E');
- Delayx100us(2000);
- }
- if((button4)==0) {
- UartCharTransmit('R');
- Delayx100us(2000);
- }
- listenDataIsTransmitted();
- }
- }
- #pragma vector=UART0RX_VECTOR // procedura obs3ugi przerwania UART
- __interrupt void usart0_rx (void)
- {
- data[endData]=RXBUF0; // wpisanie odebranych danych
- endData=(++endData)%buforSize; // inkrementowanie znacznika konca danych
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement