Bazy Danych, sprawozdanie 8

background image

Sprawozdanie z ćwiczenia 8

Data wykonania ćwiczenia: 24.05.2010

Temat ćwiczenia: Mikrokontrolery AVR cz.II

Laboratorium Mikroinformatyki

Rok akademicki

Termin

Rodzaj studiów

Kierunek

Prowadzący

Grupa

Sekcja

2009/2010

poniedziałek

dzienne

INF

GD

1

C

12.03.2010

Skład sekcji:

Korneliusz Olejniczak
Przemysław Sadowski

background image

1. Zadanie:

Naszym zadaniem podczas laboratorium było napisanie programu kopiujacego tablice
z pamieci ROM do pamieci RAM az do napotkania ciagu słowa 0x00,0xff lub do
osiagniecia liczby przekopiowanych elementów równej 30. Kazdorazowo wczytany
znak miał byc wystawiony na wyjscie na porcie B. Program miał powstać w języku C.

2. Rozwiązanie zadania:

Działanie programu:
Program działa tak jak powinien. Jeśli tablica jest krótsza i zakończona sekwencją końcową,
jest dłuższa, czy taka jak powinna być, program nie zgłasza błędów, bądź nie wysypuje się.

linia

Polecenie programu

Komentarz

1
2
3
4
5 0x20,0x15, 0x10, 0x43, 0x20, 0x02,
6 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
7 0x09, 0x10, 0x11, 0x12, 0x13, 0x09,
8 0x10, 0x11, 0x12, 0x13, 0x09, 0x10,
9 0x00, 0xff,

Zakończenie tablicy ROM

10 };
11

zmienne pomocnicze

12
13
14
15
16

// -----------------------------------------------------

17

DDRA=0x00;

Ustaw ienie Portu A jako w yjścia

18

PORTA=0xFF;

19

DDRB=0xFF;

Ustaw ienie Portu B jako w ejścia

20

PORTB=0x00;

21
22

Włączenie obsługi przerw ań

23
24

licznik=0;

25

Początek pętli sczytującej 30 elementów tablicy

26

{

27

Sczytanie pierw szego bajtu z ROM

28

29

PORTB=temp;

Jeśli nie jest, to na Port B w yślij sczytany bajt

30

tab_ram[licznik]=temp;

31

licznik++;

Zw iększ licznik o jeden

32

}

33
34

break;

35
36

}

37
38 }

#define TABLE_LENGTH 30

volatile unsigned char tab_ram[TABLE_LENGTH];

Zadelkarow anie tablicy RAM w ielkości 30

static unsigned char tab_rom[] PROGMEM = {

Zadelkarow anie tablicy ROM:

o losow ych martościach

unsigned int licznik;
unsigned int temp;

// ************** main **************
void main(void) {

sei();

w hile(licznik<TABLE_LENGTH)

temp=pgm_read_byte(&tab_rom[licznik]);

if( temp!=0x00 || pgm_read_byte(&tab_rom[licznik+1])!=0xff){

Jeśli sczytyw any bajt i następny są sekw encja
końcow ą to przerw ij

Zapisz do tablicy RAM na pozycji licznika
sczytany bajt

else

// end of programm

background image

Wnioski:

Próba została przeprowadzona dla 30 elementów w tablicy(28 losowych bajtów, 2B końcowej
sekwencji), przy ustawionym procesorze na 1 MHz(dla uproszczenia obliczeń) w AVRStudio.

Program napisany w języku Assembler trwał 448 taktów, czyli 448 μs.

Samo rozpoczęcie programu w języku C(na poprzedniej stronie), tzn. zadeklarowanie
zmiennych, dodanie bibliotek, zajmuje 236 taktów. Pozostałe czynności zajmują kolejne 628
taktów co daje nam ich 865.

Wynika z tego, że programy pisane w języku Assembler są dużo szybsze niż, w języku C,
mimo identycznego działania.


Wyszukiwarka

Podobne podstrony:
Bazy Danych, sprawozdanie 9
eksploracja lab03, Lista sprawozdaniowych bazy danych
sprawozdanie SKLEP SPOŻYWCZY Rafał Sylwestrzuk(1), WAT, semestr III, Bazy danych
eksploracja-lab03 Lista sprawozdaniowych bazy danych
eksploracja lab03, Lista sprawozdaniowych bazy danych
1 Tworzenie bazy danychid 10005 ppt
bazy danych II
Bazy danych
Podstawy Informatyki Wykład XIX Bazy danych
Bazy Danych1
bazy danych druga id 81754 Nieznany (2)
bazy danych odpowiedzi
Bazy danych
notatek pl g owacki,bazy danych Nieznany

więcej podobnych podstron