Facebook
From Speedy Panda, 9 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 730
  1. #include<msp430x14x.h>
  2. #include "uart.h"
  3. #include "lcd.h"
  4. #include "portyUart.h"
  5. #include "portyLcd.h"
  6. #define TAKTY_ZEGARA_1_SEK 800000
  7.  
  8. char Bufor[30]; // bufor odczytywanych danych
  9. int low=0; // znacznik pocz¹teku danych w buforze
  10. int high=0; // zmacznik koñca danych w buforze
  11. int a=0,b=0,c=0,d=0,literki=0;
  12. void main(void)
  13. {
  14. WDTCTL=WDTPW + WDTHOLD; // wy³¹czenie WDT
  15. P3SEL |= 0x10 + 0x20 + 0x40 + 0x80;
  16. P4DIR &= ~0x10;
  17. P4DIR &= ~0x20;
  18. P4DIR &= ~0x40;
  19. P4DIR &= ~0x80;
  20.  
  21.  
  22. InitPortsLcd(); // inicjalizacja portów LCD
  23. InitLCD(); // inicjalizacja LCD
  24. clearDisplay(); // czyszczenie wyœwietlacza
  25. initPortyUart(); // inicjalizacja portow UART
  26. //initUart(115200); // inicjalizacja UARTa prêdkoœæ transmisji 2400 Budoów
  27. initUart(9600);
  28. _EINT(); // w³¹czenie przerwañ
  29. while(1) // nieskoñczona pêtla
  30. {
  31.  
  32.   if(literki%16==0) {
  33.     if(literki%32==0) SEND_CMD(CUR_HOME);
  34.     else SEND_CMD(DD_RAM_ADDR2);
  35.   }
  36.  
  37. if( !(P4IN & 0x10) == 0 && a>0) { a=0; __delay_cycles(TAKTY_ZEGARA_1_SEK*0.02); }
  38. if( !(P4IN & 0x20) == 0 && b>0) { b=0; __delay_cycles(TAKTY_ZEGARA_1_SEK*0.02); }
  39. if( !(P4IN & 0x40) == 0 && c>0) { c=0; __delay_cycles(TAKTY_ZEGARA_1_SEK*0.02); }
  40. if( !(P4IN & 0x80) == 0 && d>0) { d=0; __delay_cycles(TAKTY_ZEGARA_1_SEK*0.02); }
  41.  
  42. if( !(P4IN & 0x10) != 0) {
  43. //UartStringTransmit("pierwszy"); // wys³anie napisu Tekst do ternimala
  44. if(a==0) { literki++; SEND_CHAR('a'); UartCharTransmit('a'); __delay_cycles(TAKTY_ZEGARA_1_SEK*0.02); a=a+1;}
  45. if(a>0&&a<10) { a=a+1; __delay_cycles(TAKTY_ZEGARA_1_SEK); }
  46. if(a==10) { literki++; SEND_CHAR('a'); UartCharTransmit('a'); __delay_cycles(TAKTY_ZEGARA_1_SEK*0.5); }
  47. while(high != low) // gdy odebrano dane
  48. {
  49. putc(Bufor[low]); // wypisanie danych na wyœwietlaczu
  50. low= (++low)%30; // inkrementowanie znaczika pocz¹tka danych
  51. }
  52. continue;
  53. }
  54.  
  55. if( !(P4IN & 0x20) != 0) {
  56. if(b==0) { literki++; SEND_CHAR('b'); UartCharTransmit('b'); __delay_cycles(TAKTY_ZEGARA_1_SEK*0.02); b=b+1;}
  57. if(b>0&&b<10) { b=b+1; __delay_cycles(TAKTY_ZEGARA_1_SEK); }
  58. if(b==10) { literki++; SEND_CHAR('b'); UartCharTransmit('b'); __delay_cycles(TAKTY_ZEGARA_1_SEK*0.5); }
  59. while(high != low) // gdy odebrano dane
  60. {
  61. putc(Bufor[low]); // wypisanie danych na wyœwietlaczu
  62. low= (++low)%30; // inkrementowanie znaczika pocz¹tka danych
  63. }
  64. continue;
  65. }
  66.  
  67. if( !(P4IN & 0x40) != 0) {
  68. if(c==0) { literki++; SEND_CHAR('c'); UartCharTransmit('c'); __delay_cycles(TAKTY_ZEGARA_1_SEK*0.02); c=c+1;}
  69. if(c>0&&c<10) { c=c+1; __delay_cycles(TAKTY_ZEGARA_1_SEK); }
  70. if(c==10) { literki++; SEND_CHAR('c'); UartCharTransmit('c'); __delay_cycles(TAKTY_ZEGARA_1_SEK*0.5); }
  71. while(high != low) // gdy odebrano dane
  72. {
  73. putc(Bufor[low]); // wypisanie danych na wyœwietlaczu
  74. low= (++low)%30; // inkrementowanie znaczika pocz¹tka danych
  75. }
  76. continue;
  77. }
  78. if( !(P4IN & 0x80) != 0) {
  79. if(d==0) { literki++; SEND_CHAR('d'); UartCharTransmit('d'); __delay_cycles(TAKTY_ZEGARA_1_SEK*0.02); d=d+1;}
  80. if(d>0&&d<10) { d=d+1; __delay_cycles(TAKTY_ZEGARA_1_SEK); }
  81. if(d==10) { literki++; SEND_CHAR('d'); UartCharTransmit('d'); __delay_cycles(TAKTY_ZEGARA_1_SEK*0.5); }
  82. while(high != low) // gdy odebrano dane
  83. {
  84. putc(Bufor[low]); // wypisanie danych na wyœwietlaczu
  85. low= (++low)%30; // inkrementowanie znaczika pocz¹tka danych
  86. }
  87. continue;
  88. }
  89. }
  90.  
  91.  
  92.  
  93. }
  94.  
  95.  
  96. #pragma vector=UART0RX_VECTOR // procedura obs³ugi przerwania UART
  97. __interrupt void usart0_rx (void)
  98. {
  99. Bufor[high]=RXBUF0; // wpisanie odebranych danych do bufora
  100. high=(++high)%30; // inkrementowanie znacznika koñca danych
  101. }