kodowanieQ KSA


Gdańsk, 15.12.2003 r.

Marcin Tobiasz

Krzysztof Warnke

Automatyka i Robotyka

semestr dziewiąty

Laboratorium

Komputerowych Systemów Automatyki

Stanowisko laboratoryjne do badania

współpracy mikrokontrolera serii 8051

z komputerem PC

1. Wstęp

Nasze zadanie laboratoryjne polegało na opracowaniu trzech sposobów kodowania tekstu. Tekst wejściowy wprowadzany zostaje przy pomocy klawiatury komputera PC, wynik - tekst zakodowany - zostaje wyświetlony w oknie terminala. Cała procedura kodowania, czyli zamiany tekstu wejściowego na wyjściowy ciąg znaków, odbywa się w mikrokontrolerze. Komputer komunikuje się z zewnętrznym układem mikroprocesora za pomocą portu szeregowego.

2. Opis działania programu

Kodowanie w programie polega na modyfikacji ostatnich bitów każdego znaku w kodowanym tekście. Aby uprościć zadanie zastosowany algorytm jest symetryczny, tzn. za pomocą tej samej procedury można zaszyfrować jak i później odtworzyć wybrany ciąg znaków. Jednym z takich algorytmów jest stosowana w naszym programie suma symetryczna (modulo 2). Wybór liczby kodującej jest dokonywany przez użytkownika według poniższej kombinacji:

Sposób kodowania: kod_h: kod_b:

1 07 0000 0111

2 06 0000 0110

3 0E 0000 1110

12 01 0000 0001

13 09 0000 1001

23 08 0000 1000

123 0F 0000 1111

Liczby zostały dobrane w ten sposób, aby nie udało się wyskoczyć poza zakres znaków możliwych do bezpośredniego wprowadzenia z klawiatury, gdyż na tym etapie możliwe jest jedynie szyfrowanie pojedynczych wyrazów wprowadzanych przez użytkownika za pośrednictwem konsoli.

Działanie programu polega na:

Do poprawnego odkodowania znaków wymagana jest znajomość sposobu, którym został on zakodowany.

3. Wnioski

Procesor doskonale radzi sobie z tak prostymi procedurami, jedyne, z czym mieliśmy problemy, to komunikacja PC - mikrokontroler. Zdarzało się bowiem, że procesor przestawał reagować na komendy wydawane z konsoli komputera, lub zawieszał swą pracę podczas wczytywania programu do pamięci.

Co do działania programu, należałoby go usprawnić dodając obsługę kursora, klawiszy DEL i BACKSPACE pozwalających na podstawową edycję wpisanego tekstu, w obecnej fazie bowiem, tekst wpisany jest tekstem ostatecznym. Oczywiście w praktyce nigdy nie szyfruje się pojedynczych wyrazów, lecz całe dokumenty. W takim przypadku, gdy użytkownik nie musi widzieć tekstu zaszyfrowanego (program taki sam wczytywałby plik) można przenieść zaszyfrowane znaki poza zakres znaków bezpośrednio wprowadzanych z klawiatury, co znacznie utrudniłoby odkodowywanie ręczne.

Sposób kodowania jest sposobem dosyć prymitywnym, lecz odczytanie informacji bez znajomości liczby kodującej nastręczyłoby pewnych trudności. Z łatwością można jednak zmodyfikować program i uruchomić na dowolnym innym procesorze.

4. Listing programu

Listing kodu źródłowego programu napisanego w języku ASSEMBLER dla procesora Intel 8051.

;Laboratorum KSA

;Krzysztof Warnke & Marcin Tobiasz

;automatyka i robotyka

;semestr 9

wczyt equ 07Fh ;obsluga czytania z klawiatury

wypis equ 07Dh ;obsluga wyswietlania znaku

linia equ 095h ;dodatkowa linia

nasztxt equ 0A0h ;adres poczatkowy bufora tekstu

ile equ 030h ;zmienna licznika znakow

kod equ 040h ;zmienna kodu

org 08000h ;adres poczatkowy

ljmp start

start: mov dptr, #txt1 ;zapamietanie adresu tekstu

lcall wypisz ;wywolanie procedury wypisujacej

lcall linia ;dodatkowa linia

mov R0, #ile ;zerowanie licznika

mov @R0, #0

mov R0, #nasztxt ;zapamietanie adresu bufora

czytajlp: lcall wczyt ;czytanie z klawiatury

lcall wypis ;wyswietlanie w konsoli

mov @R0, A ;zapis wczytanego znaku

inc R0 ;zwieksz adres ufora

inc ile ;zwieksz licznik

cjne A, #13, czytajlp;if nie wcisnieto 'enter' dalej

lcall linia

mov dptr, #txt2 ;zapamietanie adresu tekstu

lcall wypisz ;wywolanie procedury wypisujacej

lcall linia ;dodatkowa linia

wybork: mov R0, #kod ;budowanie algorytmu kodowania

mov @R0, #0 ;zeruj zmienne

mov A, 0

mov R1, #3 ;licznik petli

wyborlp: lcall wczyt ;czytaj znak z klawiatury

lcall wypis ;wyswietl znak

clr c ;czysc znacznik zera

mov R4, A ;tymczasowa pamiec znaku

subb A, #31h ;czy wcisnieto '1'

jz jeden

subb A, #1h ;czy wcisnieto '2'

jz dwa

subb A, #1h ;czy wcisnieto '3'

jz trzy

mov A, R4 ;odtworzenie zawartosci

cjne A, #13, wyborlp ;if nie wcisnieto 'enter' dalej

sjmp koncwbr

wybrnxt: dec R1 ;poprawnie wybrano jeden sposob

mov A, R1

jz koncwbr ;sprawdz czy juz wybrano trzy

sjmp wyborlp jesli nie - wbieraj dalej

koncwbr: lcall linia ;dodatkowa linia

lcall linia ;dodatkowa linia

sjmp koduj

jeden: mov R0, #kod ;pierwszy sposob

mov A, @R0 ;wczytaj kod

xrl A, #07h ;modyfikuj kod

mov @R0, A ;zapamietaj kod

sjmp wybrnxt

dwa: mov R0, #kod ;drugi algorytm

mov A, @R0 ;wczytaj kod

xrl A, #06h ;modyfikuj kod

mov @R0, A ;zapamietaj kod

sjmp wybrnxt

trzy: mov R0, #kod ;trzeci algorytm

mov A, @R0 ;wczytaj kod

xrl A, #0Eh ;modyfikuj kod

mov @R0, A ;zapamietaj kod

sjmp wybrnxt

koduj: mov R0, #nasztxt ;adres poczatku bufora

mov R3, ile ;zawartosc licznika

mov R1, #kod ;sposob kodowania

kodujlp: mov A, @R0 ;czytaj pierwszy znak

xrl A, @R1 ;kodowanie

mov @R0, A ;zapamietanie

lcall wypis ;wypisanie zakodowanego

inc R0 ;zwieksz adres bufora tekstu

djnz R3, kodujlp ;zmniejsz i skocz jesli nie zero

lcall linia ;dodatkowa linia

ljmp start

wypisz: clr A ;procedura wypisujaca tekst

movc A, @A+dptr ;wczytaj znak

jz endpisz ;jezeli to zero - zakoncz

lcall wypis ;wypisz znak

inc dptr ;zwieksz adres

sjmp wypisz ;dalej

endpisz: ret ;powrot

txt1: db 13, 10, 'Program kodujacy/dekodujacy zadany tekst', 13

db 13, 10, 'Wpisz tekst: ', 13, 10, 0

txt2: db 13, 10, 'wybierz sposob kodowania', 13

db 13, 10, 'dozwolone sposoby to 1 2 lub 3', 13,

db 13, 10, 'lub ich kombinacja', 13, 10, 0

end



Wyszukiwarka

Podobne podstrony:
Wykład 6 6 kodowanie mowy
Kodowanie informacji
Kodowanie
Kodowanie pytań
kodowanie tekstu
POZIOMY KODOWANIA TEMPORALNEGO
Kodowanie zbior pytan wykład
KODOWANIE (metody), Metodologia badań społecznych
kodowanie sterownikow Audi A4, auta, Diagnostyka dokumety, procedury diagnostyczne
ksa4, Edukacja, studia, Semestr VIII, Komputerowe Systemy Automatyki, KSA-lab
INSTRUKCJA KODOWA, studia, 3 semestr, badania marketingowe
KODOWANIE LICZB
BW12 teoria informacji i kodowania turbokody
Kodowanie podświadomości, Edukacja, Psychologia
kodowanie sterownikow a4, AuTO MoTO
Kodowanie (3)
kodowanie int
NCS Krok po kroku podstawy kodowania

więcej podobnych podstron