Ćwiczenie 7 - Republika WWW
Transkrypt
Ćwiczenie 7 - Republika WWW
ĆWICZENIE 7 TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON ODBIERANIE DANYCH PORTEM SZEREGOWYM WYKORZYSTANIE FUNKCJI getchar, gets Wiadomości wstępne: Używanie w programie funkcji getchar, getc z biblioteki stdio.h Należy poprzedzić inicjowaniem portu szeregowego np. funkcją init_rs( ) void init_rs ( void ) { SCON=0x50; TL1=0x00; TH1=0xFD; TMOD|=0x20; TR1=1; TI=1; } Zadanie 1. Korzystając z funkcji getchar ( ) pobrać kod znaku z portu szeregowego i po odebraniu wysłać kod znaku portem szeregowym . Zwracanie znaku trwa aż do momentu naciśnięcia klawisza „Esc”. Kod znaku ‘Esc’ = 0x1B. Wywołanie funkcji : nsigned char c; ......... c = getchar ( ); ......... // funkcja odbiera portem szeregowym znak #include <stdio.h> #include <reg515.h> void init_rs(void) { SCON=0x50; TL1=0x00; TH1=0xFD; TMOD|=0x20; TR1=1; TI=1; } void main ( ) { unsigned char c; init_rs( ); while (1) { while((c=getchar( ))!=0x1B) { printf("\nznak = %c\n",c); } } } Zadanie 2. Program dobiera portem szeregowym znak i zwraca kod ASCII aż do momentu wprowadzenia znaku ‘x’. #include <stdio.h> #include <reg515.h> void init_rs(void) { SCON=0x50; TL1=0x00; TH1=0xFD; TMOD|=0X20; TR1=1; TI=1; } void main () { unsigned char c; init_rs(); while (1) { printf("Wpisz znak: (znak x = koniec)\n"); for ( c=' '; c != 'x'; ) { c = getchar(); putchar(c); } printf("\nJestem poza petla. Koniec.\n"); } } Zadanie 3. Napisz program który odbiera portem szeregowym znak i wyświetla jego kod na porcie P5. Zadanie 4. Program pobiera kod znaku z portu szeregowego a następnie zwraca w zależności od wciśniętego klawisza napis. #include <stdio.h> #include <reg515.h> void init_rs(void) { SCON=0x50; TL1=0x00; TH1=0xFD; TMOD|=0X20; TR1=1; TI=1; } void main () { int day; init_rs(); while (1) { printf("Wpisz 1 cyfre - numer dnia \n"); printf("(z zakresu: od 1 do 3):\n"); day = getchar(); switch (day) { case '1': printf("Dzien 1\n"); break; case '2': printf("Dzien 2\n"); break; case '3': printf("Dzien 3\n"); break; default: ; } } } Zadanie 5. Napisz modyfikację do zadania 4 tak aby na wciśnięty numer klawisza zwracany był dzień tygodnia. Klawisz ‘1’ – Poniedziałek, klawisz ‘2’ – Wtorek , itd. Zadanie 6. Program wykorzystuje funkcję scanf do pobierania znaków i ich formatowania następnie zwraca wartości dziesiętne oraz kody wprowadzonych znaków. Konstrukcja funkcji scanf("%d %d", &x, &y); #include <stdio.h> #include <reg515.h> void init_rs(void) { SCON=0x50; TL1=0x00; TH1=0xFD; TMOD|=0X20; TR1=1; TI=1; } void main () { char str[80]; int x, y; float z; init_rs(); while (1) { printf("Po wpisaniu danych dowolnego typu nacisnij [Enter] \n"); printf("Wpisz 2 liczby calkowite:\n"); scanf("%d %d", &x, &y); printf("\nWpisz liczbe zmiennoprzecinkowa:\n"); scanf("%f", &z); printf("Wpisz lancuch znakow:\n"); scanf("%s", str); printf("Wpisales nastepujace dane:\n"); printf("%d %d\n%f\n%s\n", x, y, z, str); } } Zadanie 7. Program dodawania liczb wprowadzonych z portu szeregowego. #include <stdio.h> #include <reg515.h> void init_rs(void) { SCON=0x50; TL1=0x00; TH1=0xFD; TMOD|=0X20; TR1=1; TI=1; } void main () { int x, y,c; init_rs(); while (1) { printf("\nPo wpisaniu danych nacisnij [Enter] \n"); printf("Wpisz 1 liczbe calkowitą:\n"); scanf("%d", &x); printf("Wpisz 2 liczbe calkowitą:\n"); scanf("%d", &y); c=x+y; printf("\nWynik c=%d+%d=%d\n",x,y,c); } } Zadanie 7. Napisz modyfikację do programu 6 . a) różnicę dwóch liczb b) iloczyn 3 liczb c) iloraz 2 liczb zmiennoprzecinkowych d) (x+y)*(z/w) wynik jako liczba zmiennoprzecinkowa