Ć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