5. Naloga: Priprava za realizacijo Morsejevega oddajnika (2.domača naloga)

V nadaljevanju se nahaja podrobnejša specifikacija postopka pisanja programa za Morsejev oddajnik. Specifikacija se nanaša na realizacijo na samem sistemu FRI-SMS, ki ga zaenkrat ne uporabljamo. Zato v svojem programu predvidite zaenkrat prazne podprograme LED_ON, LED_OFF, DELAY, ki bodo dobili dejansko implementacijo tekom vaj. Podrobno preberite specifikacijo in sledite postopku postopne gradnje.

Projekt bomo v nadaljevanju semestra dopolnili še za izvedbo na sistemu FRI-SMS in bo lahko predstavljal rešitev 2. domače naloge kot samostojnega projekta. Zato boste rešitev te naloge uporabili in dopolnili še z implementacijo na FRI-SMS sistemu in vse skupaj oddali na koncu semestra v okviru 2. domače naloge.

  1. Napišite podprogram XMCHAR, ki dobi parameter v registru r0. Parameter je lahko '.' ali '-'. V primeru, da je parameter '.' naj podprogram za približno 150 ms prižge LED (LED_ON, DELAY). V primeru, da je parameter '-' naj podprogram za približno 300 ms prižge LED (LED_ON, DELAY).  V obeh primerih naj nato ugasne LED in počaka približno 150ms (LED_OFF, DELAY). Podprogram preizkusite s primernim glavnim programom.

 

  1. Napišite podprogram XMCODE, ki kot parameter v r0 dobi kazalec na z ničlo zaključen niz, v katerem se pojavljajo samo '.' in '-'. Konec niza označuje 0. Podprogram naj gre skozi niz znak po znak in za vsak znak pokliče podprogram iz XMCHAR. Ko naleti na 0, pa naj počaka približno 300 ms in se zaključi. Podprogram preizkusite tako, da oddate zaporedje "--.-".

 

  1. Napišite podprogram GETMCODE, ki kot parameter v r0 dobi ASCII kodo velike tiskane črke 'A' – 'Z'. Podprogram naj v r0 vrne kazalec na z ničlo zaključen niz, v katerem je zaporedje črk in pik, ki ustreza Morsejevi kodi ustrezne črke. Podprogram naj uporablja tabelo, v kateri so Morsejeve kode črk in je vsaka črka predstavljena s šestimi znaki. Tiste kode, ki so krajše, naj imajo na koncu več 0. Npr. koda črke 'A' bo oblike:

 

.ascii ".-"     @ A

.byte 0,0,0,0

.ascii "-…"     @ B

.byte 0,0

 

itd. Namig: pri določanju začetka niza z Morsejevo kodo uporabite množenje s 6. Tabela Morsejevih kod:

 

A

· –

K

– · –

U

· · –

B

– · · ·

L

· – · ·

V

· · · –

C

– · – ·

M

– –

W

· – –

D

– · ·

N

– ·

X

– · · –

E

·

O

– – –

Y

– · – –

F

· · – ·

P

· – – ·

Z

– – · ·

G

– – ·

Q

– – · –

 

 

H

· · · ·

R

· – ·

 

 

I

· ·

S

· · ·

 

 

J

· – – –

T

 

 

 

  1. Napišite podprogram XWORD, ki kot parameter v r0 dobi kazalec na z ničlo zaključen niz, v katerem so samo velike črke. Podprogram naj s klicanjem GETMCODE in XMCODE po Morsejevi kodi pošlje črko za črko, ko pride do zaključne 0 pa počaka približno 1 sekundo in se zaključi. Za preizkus oddajte "SOS".

 

  1. Napišite glavni program, v katerem preko zaporednega vmesnika enote DBGU sprejmete besedo (znake sprejemajte, dokler ne sprejmete znaka za tipko enter). Nato to besedo v Morsejevi kodi 'oddajte' preko LED diode.