Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Trzeba połączyć się z kompem, wypisywać wciśnięte klawisze na LCD i przesyłać z powrotem wartość binarną odebranego chara (czyli 8 charów - zer i jedynek).
- #include <p18f4520.h>
- #include <delays.h>
- #include "xlcd.h"
- #pragma config WDT = OFF
- int poprzedni_znak;
- char rb = '?'; // odebrany znak
- void initXLCD(void);
- void txtXLCD(void);
- void initUSART(void);
- char reciveByteAndShow(void);
- void sendByte(char c);
- void initUSART(void) {
- // Inicjalizacja modułu USART
- /* Uzupełnij kod */
- TRISC = TRISC & 0xC0; // jakaś magia z instrukcji, nie wiem, czy potrzebne
- SPBRG = 25; // szybkość przesyłu (nie ja to liczyłem)
- TXSTA = 0x24; // parametry przesyłu
- RCSTA = 0x90; // parametry odbioru
- }
- char reciveByteAndShow() {
- // Odebranie bajtu danych z komputera PC
- // i wyświetlenie go na wyświetlaczu LCD
- /* Uzupełnij kod */
- if (PIR1bits.RCIF) // jeśli rejestr odbioru jest pełny
- {
- rb = RCREG; // odbierz i zapisz
- }
- SetDDRamAddr(0x4F);
- putcXLCD(rb);
- return rb;
- }
- void sendByte(char c) {
- // Wysłanie danych do komputera PC
- int i, temp, bit_jako_znak;
- /* Uzupełnij kod */
- if (rb != poprzedni_znak) // jeśli znak inny niż poprzednio
- {
- poprzedni_znak = rb;
- temp = rb;
- // bity wysyłamy od najmłodszych i przez to jest błąd, znaki są w odwrotnej kolejności
- // zróbcie sobie jakiś bufor LIFO na te znaki i wysyłajcie z bufora
- for(i=0;i<8;i++) // 8 razy obetnij najmłodszy bit i wyślij go
- {
- bit_jako_znak = (temp % 2)+0x30; // weź najmłodszy bit i zamień na chara
- temp = temp/2; // obetnij go z naszej liczby
- if(PIR1bits.TXIF) // jeśli rejestr wysyłania jest pusty
- {
- TXREG = bit_jako_znak; // wpisz do niego znak
- PIR1bits.TXIF = 0; // oznacz jako pełny
- Delay1KTCYx(1); // czekamy, żeby spokojnie sobie wysłał
- }
- }
- }
- }
- void main() {
- initXLCD();
- txtXLCD();
- initUSART();
- while(1) {
- rb = reciveByteAndShow();
- Delay1KTCYx(10);
- sendByte(rb);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement