11. naloga: Neposredni dostop do pomnilnika (DMA)

Enoto DBGU uporabljajte tako, da bo znake sprejemala in oddajala s pomočjo DMA prenosov. Osnovne nastavitve ostanejo enake kot v 4.6 (podprogram DEBUG_INIT). Pri tem napišite naslednje podprograme:

- Podprogram RCV_DMA, ki nastavi DMA krmilnik tako, da je pripravljen na sprejem naslednjih N znakov. Naslov polja, v katerega naj se znaki zapisujejo, naj dobi podprogram v registru R0, vrednost parametra N pa naj se prenese v podprogram preko registra R1. Parameter N ima lahko vrednost med 1 in 80. Če je vrednost parametra večja oziroma manjša, jo omejite na navedeni interval.

- Podprogram SND_DMA, ki nastavi DMA krmilnik tako, da je pripravljen na oddajo znakov. Naslov niza naj se prenese v podprogram preko registra R0, dolžina niza pa preko registra R1.

- Podprogram CHANGE, ki zamenja velike in male črke v nizu znakov. Naslov izvornega niza dobi podprogram v registru R0, naslov ponornega niza v registru R1, dolžino obeh nizov pa v registru R2.

V glavnem programu po začetnih nastavitvah (DEBUG_INIT) pokličite podprogram RCV_DMA, nato pa v zanki čakajte, da se DMA prenos zaključi (zastavica ENDRX). S klicem podprograma CHANGE zamenjajte velike in male črke v sprejetem nizu. Rezultat pošljite s pomočjo SND_DMA.