Nazwisko i Imię: …………………………………………………………… Nr Indeksu: ……………… Data: ……………………… Przedmiot: SW

1)……… 2)……… 3)……… 4)……… 5)……… Suma:…………………… Ocena: …………

  1. Napisz kod programu dodający dwie liczby 4 bitowe, z których pierwsza podana jest na bitach 0 (młodsza), 1, 6 i 7 (starsza), a druga na bitach 2 (młodsza), 3 , 4, 5 (starsza) portu P1. Wynik dodawania wyświetl na porcie P2.
    /10 pkt/

  2. Napisz kod programu zwiększający o jeden liczbę „a” umieszczoną w pamięci zewnętrznej danych pod adresem 8080 Hex. /10 pkt/

  3. Podaj wynik /dziesiętnie/ wykonania programu podanego niżej. Przyjmij, że wartość w porcie P1 wynosi 01010010. /10/

#define <8051.h>

unsigned char bdata a, b;

sbit a0 = a^0; sbit a1 = a^1; sbit a2 = a^2; sbit a3 = a^3;

sbit b0 = b^0; sbit b1 = b^1; sbit b2 = b^2; sbit b3 = b^3;

void main (void)

{

a0 = P1^0; a1 = P1^1; a2 = P1^6; a3 = P1^7;

b0 = P1^2; b1 = P1^3; b2 = P1^4; b3 = P1^5;

P2 = a + b;

while (1) {;}

}

  1. Napisz kod programu (zmieniający na przeciwny 3 bit zmiennej „b” umieszczonej w pamięci wewnętrznej danych. /10 pkt/

  2. Napisz bez użycia dyrektywy sbit program równoważny podanemu: /10 pkt/

sbit W1 = Key^2; sbit W2 = Key^3; sbit W3 = Key^4; sbit W4 = Key^5;

void ISR_Timer1 (void) interrupt 3

{

Key = P0; if ((W1 & W2 & W3 & W4) != 1) {P2 = Key;}

}

Odpowiedzi