Facebook
From Mammoth Porcupine, 9 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 724
  1. #include<msp430x14x.h>
  2. #include "uart.h"
  3. #include "lcd.h"
  4. #include "portyUart.h"
  5. #include "portyLcd.h"
  6. #define BUTTON1  (P4IN&BIT4)
  7. #define BUTTON2  (P4IN&BIT5)
  8. #define BUTTON3  (P4IN&BIT6)
  9. #define BUTTON4  (P4IN&BIT7)
  10. #define _50ms   500000
  11. #define _5ms    5000000
  12. #define _1ms    506500
  13.  
  14. char Bufor[32];                         // bufor odczytywanych danych
  15. int low=0;                              // znacznik pocz1teku danych w buforze  
  16. int high=0;                             // zmacznik konca danych w buforze
  17. int licznik=0;
  18.  
  19. void ustaw_przyciski()
  20. {
  21.   P4DIR &= ~BIT4;
  22.   P4DIR &= ~BIT5;
  23.   P4DIR &= ~BIT6;
  24.   P4DIR &= ~BIT7;
  25. }
  26.  
  27. void dellay (unsigned int n)
  28.  {
  29.   unsigned int i;
  30.   for(i=0;i<n;i++);
  31.  }
  32.  
  33.  
  34. void main(void)
  35. {
  36.  WDTCTL=WDTPW + WDTHOLD;                // wy31czenie WDT
  37.  InitPortsLcd();                        // inicjalizacja portów LCD
  38.  InitLCD();                             // inicjalizacja LCD
  39.  clearDisplay();                        // czyszczenie wyowietlacza
  40.  initPortyUart();                       // inicjalizacja portow UART  
  41.  initUart(9600);                        // inicjalizacja UARTa predkooa transmisji 2400 Budoów  
  42.  
  43.  _EINT();                               // w31czenie przerwan
  44.  
  45. while(1)                                // nieskonczona petla
  46. {
  47.    while(high != low)                  // gdy odebrano dane
  48.     {
  49.      putc(Bufor[low]);                 // wypisanie danych na wyowietlaczu    
  50.      UartCharTransmit(Bufor[low]);        // wys3anie napisu Tekst do ternimala
  51.      UartCharTransmit(Bufor[low]);        // wys3anie napisu Tekst do ternimala
  52.      low= (++low)%32;                  // inkrementowanie znacznika pocz1tka danych      
  53.     }
  54.    if(licznik==0 && high!=0 && high%16==0)
  55.    {
  56.        SEND_CMD(DD_RAM_ADDR2);
  57.        licznik=1;
  58.        low=0;
  59.        high=0;
  60.    }
  61.    else if(licznik==1 && high!=0 && high%16==0)
  62.    {
  63.        SEND_CMD(DD_RAM_ADDR);
  64.        licznik=0;
  65.        low=0;
  66.        high=0;
  67.    }
  68.   else if(!BUTTON1 || !BUTTON2 || !BUTTON3 || !BUTTON4)
  69.    {
  70.    while (BUTTON1 && BUTTON2 && BUTTON3 && BUTTON4) // oczekiwanie na zwolnienie
  71.    {
  72.       dellay(_50ms);
  73.    }
  74.    int wcisniety = 0;
  75.    while (!BUTTON1 || !BUTTON2 || !BUTTON3 || !BUTTON4) // oczekiwanie na przycisniecie
  76.    {
  77.      if (!BUTTON1 && !wcisniety)
  78.      {
  79.        UartCharTransmit('M');
  80.        dellay(_1ms);
  81.        dellay(_1ms);
  82.        dellay(_1ms);
  83.        dellay(_1ms);
  84.        dellay(_1ms);
  85.        dellay(_1ms);
  86.        dellay(_1ms);
  87.        dellay(_1ms);
  88.        
  89.        while (!BUTTON1 && !wcisniety)
  90.        {
  91.        dellay(_1ms);
  92.        dellay(_1ms);
  93.        dellay(_1ms);      
  94.        dellay(_50ms);
  95.        UartCharTransmit('M');
  96.        dellay(_1ms);
  97.        dellay(_1ms);
  98.        dellay(_1ms);
  99.        }
  100.      }
  101.      if (!BUTTON2 && !wcisniety)
  102.      {
  103.        UartCharTransmit('A');
  104.        dellay(_1ms);
  105.        dellay(_1ms);
  106.        dellay(_1ms);
  107.        dellay(_1ms);
  108.        dellay(_1ms);
  109.        dellay(_1ms);
  110.        dellay(_1ms);
  111.        dellay(_1ms);
  112.       while (!BUTTON2 && !wcisniety)
  113.        {
  114.        dellay(_50ms);
  115.        UartCharTransmit('A');
  116.        }
  117.      }
  118.      if (!BUTTON3 && !wcisniety)
  119.      {
  120.        UartCharTransmit('C');
  121.        dellay(_1ms);
  122.        dellay(_1ms);
  123.        dellay(_1ms);
  124.        dellay(_1ms);
  125.        dellay(_1ms);
  126.        dellay(_1ms);
  127.        dellay(_1ms);
  128.        dellay(_1ms);
  129.        while (!BUTTON3 && !wcisniety)
  130.        {
  131.        dellay(_50ms);
  132.        UartCharTransmit('C');
  133.        }
  134.      }
  135.      if (!BUTTON4 && !wcisniety)
  136.      {
  137.        UartCharTransmit('K');
  138.        dellay(_1ms);
  139.        dellay(_1ms);
  140.        dellay(_1ms);
  141.        dellay(_1ms);
  142.        dellay(_1ms);
  143.        dellay(_1ms);
  144.        dellay(_1ms);
  145.        dellay(_1ms);
  146.        while (!BUTTON4 && !wcisniety)
  147.        {
  148.        dellay(_50ms);
  149.        UartCharTransmit('K');
  150.        }
  151.      }
  152.      dellay(_50ms);
  153.      wcisniety = 1;
  154.    }
  155.    }
  156.  }
  157.  
  158.  
  159.  
  160. }
  161.  
  162.  
  163. #pragma vector=UART0RX_VECTOR           // procedura obs3ugi przerwania UART
  164. __interrupt void usart0_rx (void)
  165. {
  166.         {
  167.          Bufor[high]=RXBUF0;    // wpisanie odebranych danych do bufora
  168.          high=(++high)%32;     // inkrementowanie znacznika konca danych
  169.         }
  170. }
  171.  
  172.