Vítam Vás v druhej časti tohoto seriálu, v krorom si popíšeme o pamäťovom priestore AT89Cxx51 a popíšeme si o registroch.
Pamäťový priestor AT89Cxx51 delíme na:
* pamäť programu
* pamäť dat
Pamäť programu
Je adresovaná registrami PC (inštrukcie) a DPTR (konštanty). Pamäť programu je vlastne veľkosť 1 až 4kB to závisí od typu AT89Cxx51. AT89C1051 má 1kB a adresy sa pohybujú od 000h až 3FFh. AT89C2051 má 2kB a adresy sa pohybujú od 000h až 7FFh. AT89C4051 má 4kB a adresy sa pohybujú od 000h až FFFh. Adresa 000h je štartovacia adresa a adresy 003h, 00Bh, 012h, 01Bh, 023h majú špeciálny význam a to 003h vonkajší zdroj prerušenia 0, INT0 00Bh čítač časovač 0 013h vonkajší zdroj prerušenia 1, INT1 01Bh čítač časovač 1 023h sériový kanál
Pamäť dat
Adresa dátovej pamäti sa pohybuje od adresy 00h až FFh. Rozdelenie: 00h až 1Fh Táto časť je určená registrom R0 až R7 a obsahuje 4 banky. Každá banka má osem registrov každý z týchto registrov má 8b = 1B. Takže dohromady to je 4 * 8 * 8 = 256b = 32B Banka 1 nastavuje sa RS1=0, RS0=0 (štandartne vybraná banka), adresy 00h až 07h Banka 2 nastavuje sa RS1=0, RS0=1 , adresy 08h až 0Fh Banka 3 nastavuje sa RS1=1, RS0=0 , adresy 10h až 17h Banka 4 nastavuje sa RS1=1, RS0=1 , adresy 18h až 1Fh
Ešte k tomuto dodám že v podstate tento prietor obshuje 32 osem bitových registrov. 20h až 2FhTento priestor je bitovo adresovateľný. Je rozdelený ja 16 hlavných častí, ktorá každá časť obsahuje 8bitov, čiže t.j. 16B 2Fh 7Fh 7Eh 7Dh 7Ch 7Bh 7Ah 79h 78h 2Eh 77h 76h 75h 74h 73h 72h 71h 70h 2Dh 6Fh 6Eh 6Dh 6Ch 6Bh 6Ah 69h 68h 2Ch 67h 66h 65h 64h 63h 62h 61h 60h 2Bh 5Fh 5Eh 5Dh 5Ch 5Bh 5Ah 59h 58h 2Ah 57h 56h 55h 54h 53h 52h 51h 50h 29h 4Fh 4Eh 4Dh 4Ch 4Bh 4Ah 49h 48h 28h 47h 46h 45h 44h 43h 42h 41h 40h 27h 3Fh 3Eh 3Dh 3Ch 3Bh 3Ah 39h 38h 26h 37h 36h 35h 34h 33h 32h 31h 30h 25h 2Fh 2Eh 2Dh 2Ch 2Bh 2Ah 29h 28h 24h 27h 26h 25h 24h 23h 22h 21h 20h 23h 1Fh 1Eh 1Dh 1Ch 1Bh 1Ah 19h 18h 22h 17h 16h 15h 14h 13h 12h 11h 10h 21h 0Fh 0Eh 0Dh 0Ch 0Bh 0Ah 09h 08h 20h 07h 06h 05h 04h 03h 02h 01h 00h 30h až 7Fh je to užívateľská pamäť o veľkosti 80B 80h až FFh Táto časť hje určená pre špeciálne funkcie registrov (SFR). A ešte jedno upozernenie niektore adresy adresy fyzicky ani neexistujú. Čiže ak by ste dalu napr. zápis na adresu E7h spôsobí chybu programu. Preto je táto časť definovaná bitovo čiže napr. Akumulátor má bitové adresy E0h až E7h. A teraz sa pytate aky je rozdiel medzi E7h tak kde to robi chybu a E7h pre ôsmy bit akumulátora? Vysvetlenie je jednoduché zoberme si to na príklade bitovo adresovatelnej časti. Ked poviem programu adresa 29h program to bere ako bitove adresy 48h až 4Fh ale keď mu poviem bitovu adresu 29h tak zistíte že tento bit sa nachádza v adrese 25h. A takisto to je v tomto prípade adresa E7h neexistuje a ale bitová adresa E7h to ano program v tom prípade vie že sa jedná o ôsmy bit akumulátora.
ACC
ACC.7
E7h
ACC.6
E6h
ACC.5
E5h
ACC.4
E4h
ACC.3
E3h
ACC.2
E2h
ACC.1
E1h
ACC.0
E0h
PSW
C D7h
AC D6h
F0 D5h
RS1 D4h
RS0 D3h
OV D2h
-
P D0h
P1
P1.7 97h
P1.6 96h
P1.5 95h
P1.4 94h
P1.3 93h
P1.2 92h
P1.1 91h
P1.0 90h
P3
P3.7 B7h
P3.6 B6h
P3.5 B5h
P3.4 B4h
P3.3 B3h
P3.2 B2h
P3.1 B1h
P3.0 B0h
B
B.7 F7h
B.6 F6h
B.5 F5h
B.4 F4h
B.3 F3h
B.2 F2h
B.1 F1h
B.0 F0h
IE
EA AFh
-
-
ES BCh
ET1 BBh
EX1 BAh
ET0 B9h
EX0 B8h
IP
-
-
-
PS h
PT1 h
PX1 h
PT0 h
PX0 h
TCON
TF1 8Fh
TR1 8Eh
TF0 8Dh
TR0 8Ch
IE1 8Bh
IT1 8Ah
IE0 89h
IT0 88h
SCON
SM0 9Fh
hSM1 9Eh
SM2 9Dh
REN 9Ch
TB8 9Bh
RB8 8Ah
TI 99h
RI 98h
Akumulátor (stradač), označenie A alebo ACC
Je základný 8bitový register, ktorý sa využíva ako zdrojový alebo cieľový register všetkých aritmetických a logických operácii a pre príkazy presunu dát.
Program Status Word, označenie PSW C (Carry) je to príznak prechodu so ôsmého bitu na prvý bit. Väčšinou sa využíva ako príznak pretečenia. AC (Auxiliary Carry) je to príznak prechodu zo štvrtého na piaty bit. Rozdeluje spodnú a hornú polovicu 8bitového registru. Väčšinou sa používa s čislami BCD. F0 (flag 0) je to užívatelsky nadstaviteľný príznak. RS0 a RS1 (Register Select) vyuzžíva sa na výber registrov zo 4 bank OV (Over Flow) je to príznak preplnenia. Tento príznak je určený pre aritmetické operácie P (Parity) je párový príznak, čiže ak je číslo párne tak P=1, ak je nepárne tak P=0
P1 predstavuje PORT 1, čiže linky P1.0 až P1.7
P3 predstavuje PORT 3, čiže linky P3.0 až P3.7
Pomocný register, označenie B
Tento register sa používa ako pomocný register akumulátora pri násobení a delení. Inak ho kľudne môžeme využívať ako daľší 8bitový register.
Register IE
Tento register slúži na nastavenie povolenia jednotlivých prerušení (0-zablokovaný, 1-odblokovyný):
EA povolenie všetkých prerušení ES povolenie prerušenia sériového kanála ET1 povolenie prerušenia časovačom/čítačom 1 EX1 povolenie prerušenia od INT1 (P3.3) ET0 povolenie prerušenia časovačom/čítačom 0 EX0 povolenie prerušenia od INT0 (P3.2)
Register IP
Tento register slúži na na nastavenie priority prerušenia. ATMEL pozná iba dve priority 0-nízka, 1-vysoká. Tento register na nastavuje preto, lebo keby sa napr. aktivovali v sucastnej dobe dve prerušenia vykona sa najprv sa vykona prerušenie s vyššou prioritou až potom ten s nižšou. Pokial by mali rovnaku prioritu vykona sa sa hardwarova priorita tá je určena bitmi (1.bit ma najvyšiu a 5.najnižšiu) s toho vyplyva ze to pojde takto PX0 (najvyšiu), PT0, PX1, PT1 a PS (najnišiu). Obslužný program s nížšou prioritou môže byť prerušený s obsluhou s vyššou prioritou a naopak obslužný program s vyššou prioritou nemôže byť prerušeny s obsluhoou s nižšou prioritou. PS povolenie prerušenia sériového kanála PT1 povolenie prerušenia časovačom/čítačom 1 PX1 povolenie prerušenia od INT1 (P3.3) PT0 povolenie prerušenia časovačom/čítačom 0 PX0 povolenie prerušenia od INT0 (P3.2)
Register TCON
Tento register slúži na konfiguráciu prerušenia čítača/časovača a vonkajšieho prerušenia. TF1 tento bit indikuje pretečenie čítača/časovača 1, pri pretečení je automaticky nastavený a po vykonaný obslužného program automaticky vynulavaný TF0 tento bit indikuje pretečenie čítača/časovača 0, pri pretečení je automaticky nastavený a po vykonaný obslužného program automaticky vynulavaný IE1 tento bit ukazuje aktiváciu prerušenia INT1 IE0 tento bit ukazuje aktiváciu prerušenia INT0 IT1 týmto bitom nastavujeme akým spôsobom má byť aktivované prerušenie INT1. IT=0 citlivé na log.0 a IT=1 citlivé na log.1 IT0 týmto bitom nastavujeme akým spôsobom má byť aktivované prerušenie INT0. IT=0 citlivé na log.0 a IT=1 citlivé na log.1 TR1 spustenie čitača/časovača 1, pri TR1=1 TR0 spustenie čitača/časovača 0, pri TR0=1
Register TMOD
Tento register slúži na konfiguráciu režimu čítača/časovača.
G
C/T
M1
M0
G
C/T
M1
M0
čítač/časovač 1
čítač/časovač 0
G (Gate) tento bit určuje akým spôsobom majú byť uvažované impulzy. Pri G=0 je riadený programovo cez register TCON a bitom TR0 alebo TR1. Pri G=1 je riadeny presene tak ako pri G=0 ale s tým rozdielom ze je riadený aj obdovo vstupom INT0 alebo INT1 C/T (Counter/Timer) týmto bitom sa určuje s kadial bude ATMEL brať hodinový signál. C/T=0 hodinový signál bere z vnútorného zdroja čiže ak ATMEL pracuje na frekcencii 24MHz AMTEL bere ako hodinovy signal vo frekvencii 1/12 z 24MHz = 2 MHz. C/T=1 hodinový signál bere z vonkajšieho zdroja cez vývod T0 (čítač/časovač 0), T1 (čítač/časovač 1) vo frekvencii maximálne 1/24 z frekvencie pracujúceho ATMEL-ka, čiže ak ATMEL pracuje na frekvencii 24MHz tak vonkajší signál nemôže prekročiť 1/24 z 24 = 1MHz M1, M0 týmito bitmi sa volí jeden zo styroch režimov čítača/časovača. režim 1 nastavuje sa tak že M1=0, M0=0. Čítač/časovač je 13 bitový. THx (horný bajt) je 8bitovy a TLx (dolný bajt) je 5bitový. Číta nahor (v kažfom režime). režim 2 nastavuje sa tak že M1=0, M0=1. V tomto režime je čítač/časovač 16 bitový (THx aj TLx mají 8bitov) režim 3 nastavuje sa tak že M1=1, M0=0. V tomto režime je čítač/časovač 8 bitový a navyše má funkciu RELOAD (obnoviť). Čítač/časovač je tvorený TLx, ktorý je 8bitový, pri pretečený sa TLx nastaví rovnakou hodnotou ako je THx (8bit), čiže týmto sa zabezpečil RELOAD. režim4 nastavuje sa tak že M1=1, M0=1. V tomto režime je čítač/časovač rozdelený na dva samostatné 8 bitové časovače, TL0 je riadený bitmi čítača/časovača 0 a používa všetky bity G, C/T, TR0, TF0, signál INT0. TH0 je riadený čítačom/časovačom 1 s tým rodielom, že ma prístup iba k bity TR1 a TF1. Čítač/časovač 1 je riadený klasicky ale pužiť sa dá iba v aplikácii, ktorá nevyužíva prerušenie (tento čítač/časovač je prevažne využívaný pri aplikáciách obsluhy sériového kanála na nastavenie prenosovej rýchlosti). Register SBUF
Je to 8 bitový register, ktorý sa používa pri sériovom kanále a slúži pre príjem a vysielaanie znaku.
Register SCON
Tento register slúži na konfiguráciu sériového kanála. SM0, SM1 nastavujeme nimi režim sériového kanála. režim 1 nastavujeme tak že SM0=0, SM1=0. Tento režim sa použivá na synchrónny 8 bitový prenos, kde data sa vysielajú RxD (P3.0) a hodinový signál prenosu cez TxD (P3.1). Hodinový signál je pevne nastavený na 1/12 z frekvencie mikroradiča (čize ak ATMEL pracuje na frekvencii 24MHz, hodinový signál prenosu je 2MHz)
Režim 1
režim 2 nastavujeme tak že SM0=0, SM1=1. Je to asynchronny 8 bitovy prenos, kde RxD je prijem dar a TxD sa data vysielaju.Prenos začína štartovacím bitom log.0 a po 8 bitoch dát nasleduje stopovaci bit úrovne log.1. Prenosová rýchlosť (dá sa zdvojnásobiť) je vypočítaná vzrocom:
2SMOD*Xtal/[384*(256-TH1)]
Režim 2
režim 3 nastavujeme tak že SM0=1, SM1=0. Je to 9 bitový asynchrónny prenos dát. Deviaty bit je TB8 (pre TxD) a RB8 (pre RxD). Prenos začína štartovacím bitom úrovne log.0, nasleduje 9 bitov dát a nakoniec stopovací bit úrovňe log.1. Prenosový rýchlosť je daná 1/64 z frekvencie ATMEL. Čiže pri Xtal=24MHz t.j. 375kBd/s. Táto rýchlosť sa dá zvojnásobiť.
Režim 3,4
režim 4 nastavujeme tak že SM0=1, SM1=1. Je to presne to isté ako režim 3, ale s tým rozdielom že prenosová rýchlosť je daná pretečeným časovača1. Rýchlosť sa dá zvojnásobiť. SM2 povolenie viacprocesorovnej komunikácie REN povolenie príjmu dát TB8vyslaný 9. bit (viz. režim 3,4) RB8 prijatý 9. bit (viz režim 3,4) TI indikácia vyprázdnenia vysielacieho registra. V režime 1 je aktivovaný na konci 8. bitu a v režimoch 2,3,4 je aktivovaný na začiatku stopovacieho bitu. TI na nastavuje hardwarovo a nuluje programom. RI indikácia vyprázdnenia prijiímacieho registra. V režime 1 je aktivovaný po prijatý 8. bitu a v režimoch 2,3,4 je aktivovaný v strede stopovacieho bitu. TI na nastavuje hardwarovo a nuluje programom.
Register PCON
SCON
-
-
-
-
-
PD
IDL
Aj moje znalosti sú obmedzené a z toho dôvodu viem iba využitie jedného bit SMOD. Pokiaľ bude SMOD=0, tak je SMOD deaktivovaný ale ak je SMOD=1 tak prenosová rýchlosť sériového kanála sa zdvojnásobím platú to iba pre režimy 2,3,4 registra SCON.
Register DPTR
Je to jedniný 16bitovy register (i keď v kombinácii Akumulátra a pomocného registra B, čiže sa označuje sa potom programovo označuje ako register AB je tiež 16 bitový). Tento register slúži ako ukazovateľ do pameti (pri nepriamom adresovanim, nepriamom skoku - JMP @A+DPTR). AT89Cxx51 má iba dva 16 bitové operácie a to DPH (horný bajt) a DPL (dolný bajt).
Tak a dnes to máme za sebou. Dnes to bol trocha dlhý článok (nechcel som to rozdeľovať). Už by ste mali vedieť základne veci o AT89xx51 z hardwarovej stránky a v budúcej časti sa smelo pustíme už do programovania.
Za obsah komentárov je zodpovedný užívateľ, nie prevádzkovateľ týchto stránok.
Partneri:
Autori stránky sú Milan Ondrka (BgDestroy) a Ondrej Závodský(zawin), o graficky desing sa stará Ľuboš Fabo(BUFU).
Pri informovaní adminov je použitie čohokoľvek z tejto stránky pre osobné alebo obchodné účely 100% povolené.