Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Mikrovaldiklių MSP430 programinis modelis

Lituaniana


Mikrovaldiklių MSP430 programinis modelis

Mikrovaldiklių programinį modelį sudaro:

procesoriaus vidiniai specialios paskirties registrai, skirti specifinėms funkcijoms atlikti (PC - programos skaitiklis, SR - būsenos registras ir kt.) ir taikomosiose programose dazniausiai naudojami netiesiogiai;



programuotojui laisvai prieinami procesoriaus vidiniai bendros paskirties registrai, (jų skaičius ir registro talpa (palaiko 8, 16 ir daugiau bitų instrukcijas);

pastovios atminties, skirtos programoms saugoti kiekis ir adresų erdvė;

operatyviosios atminties, skirtos duomenims saugoti kiekis ir adresų erdvė;

komandų sistema ir adresavimo rezimai.

Mikrovaldiklių MSP430 procesoriai turi 16 registrų. Visi jie integruoti procesoriaus viduje, tokiu būdu sumazinamas instrukcijos vykdymo laikas. Tai leidzia operacijas is registro į registrą atlikti per vieną taktą. Keturi registrai rezervuoti specialiam naudojimui: komandų skaitiklis PC, steko rodiklis SP, būsenos registras SR ir konstantų generatorius CG. Kiti dvylika registrų yra bendro naudojimo. Visi periferiniai įrenginiai susieti su procesoriumi duomenų ir adresų magistralėmis.


Komandų skaitiklis (PC) nurodo mikrovaldikliui, kokią instrukciją vykdyti ir kuri instrukcija bus vykdoma sekanti. Kiekviena instrukcija naudoja jai reikalingą informacijos kiekį (instrukcijos ilgis gali būti du, keturi, sesi ar daugiau baitų).

Steko rodiklis (SP) naudojamas centrinio procesoriaus valdymui ir nurodo atminties srities, kurioje saugojami laikini duomenys, adresą. Tai gali būti nuoroda centriniam procesoriui, kurioje pertrauktos programos vietoje grįzti is paprogramės arba apdorojus aparatinį pertraukimą. Steko rodiklis gali būti programiniu būdu keičiamas (komandomis CALL, PUSH ir POP), tačiau negalima uzmirsti, kad steko rodiklį naudoja ir centrinis procesorius.

Pozymių registrą sudaro 16 bitų. Tik jaunesnysis baitas registro y 242r1721c ra naudojamas.

7 pav. Pozymių registras

V - persipildymo bitas . Nustatomas į "1", jeigu rezultatas aritmetinės operacijos aritmetinis perpildymas.

SCG1, SCG0 - siais bitais kontroliuojami mikrovaldiklio generatoriaus taktiniai impulsai, naudojami visoje sistemoje.

OscOff - mikrovaldiklio kvarcinio generatoriaus isjungimo bitas . Jeigu nustatytas į "1", kvarcinis generatorius pereina į isjungimo rezimą. Į sį rezimą galima pereiti tik tada, kai sistemoje nenaudojami dazniai ACLK arba MCLK.

CPU Off - centrinio procesoriaus isjungimo bitas. Jeigu nustatytas į "1", centrinio procesoriaus daznis MCLK yra isjungtas.

GIE - (GENERAL INTERRUPT ENABLE) bitas. Jeigu bitas nustatytas į "1", galimi pertraukimai sistemoje. GIE bitas po įvykdyto pertraukimo yra isvalomas "0". Instrukcija RETI GIE bitą atstato į "1".

N - neigiamo operacijos rezultato pozymis. Nustatomas į "1", jeigu įvykdytos operacijos rezultatas yra neigiamas.

Z - nulinio operacijos rezultato pozymis. Nustatomas į "1", jeigu įvykdytos operacijos rezultatas lygus nuliui, priesingu atveju bitas Z isvalomas (t.y. lygus "0").

C - pernesimo į vyresniąją skiltį pozymis sumuojant, arba jei nėra paskolos bito is vyresnės skilties atliekant atimties operaciją.

Konstantų generatoriai CG1 ir CG2 Dazniausiai naudojamos konstantos gali būti generuojamos konstantų registrais R2 ir R3. Generuojamos konstantos suteikia galimybę sutrumpinti instrukcijos vykdymo laiką.

Bendro naudojimo registrai nuo R4 iki R15 Registrus nuo R4 iki R15 vartotojas gali naudoti savo nuoziūra. Į juos talpinti duomenis arba su jais atlikti įvairius veiksmus. Registrai yra valdomi programiniu būdu.

Adresavimo rezimai

Visi septyni adresavimo rezimai naudojami saltinio operando isrinkimui ir keturi adresavimo rezimai naudojami paskirties operando isrinkimui. MSP430 mikrovaldikliuose realizuota ortogonalinė adresavimo sistema, t.y. kiekviena instrukcija gali naudoti bet kurį adresavimo rezimą.

3 lentelė. Adresavimo rezimai

Adresavimo rezimas

Sintaksė

Aprasymas ir pavyzdziai

Registrinis rezimas

Rn

Instrukcijoje abu operandai yra registrai. Pvz.: mov R10, R6.

Indeksinis rezimas

X(Rn)

Instrukcijoje operandas randasi adresu (Rn + X). X reiksmė yra saugojama sekančiame zodyje po instrukcijos kodo. Pvz.: add R9, 3(R6).

Tiesioginis rezimas

ADDR

Instrukcijoje operandas randasi adresu (PC + X). X reiksmė yra saugojama sekančiame zodyje po instrukcijos kodo. Pvz.: xor.b R12, Mem_loc.

Absoliutinis rezimas

&ADDR

Instrukcijoje nurodomas absoliutinis adresas. Pvz.: jmp &Service

Netiesioginis registro rezimas

@Rn

Pvz.: mov @R6, R8. Skaičius esantis registre R6 suprantamas, kaip atminties ląstelės adresas ir toje ląstelėje esantys duomenys bus patalpinti į registrą R8.

Automatinio didinimo rezimas

@Rn+

Pvz.: mov @R6+, R8. Skaičius esantis registre R6 suprantamas, kaip atminties ląstelės adresas ir toje ląstelėje esantys duomenys bus patalpinti į registrą R8, o registro R6 turinys bus padidintas dviem.

Betarpinės adresacijos rezimas

#N

Pvz.: mov #2, R8. Į registrą R8 įrasomas skaičius, siuo atveju 2.

Atminties struktūra mikrovaldiklyje MSP430F449 pateikta 8 pav. Mikrovaldiklio atmintį sudaro operacinė ir pastovioji atmintys. Galimas pastoviosios (flash tipo) atminties skaitymas, rasymas ir trynimo daugkartinės operacijos. Priėjimas prie sios atminties yra apsaugotas nuo atsitiktinio atminties turinio trynimo. Mikrovaldiklio atmintį sudaro:

32 B Flash atminties, skirti pertraukimo vektoriams. Atminties adresai nuo 0FFE0h iki 0FFFFh.

60 KB Flash atminties yra suskirstyti į 78 segmentus po 512 baitų. Nuo 0 iki 76 segmento Flash atmintis gali būti trinama individuliai arba kaip grupė segmentų nuo 0 iki 76. Atminties adresas nuo 01100h iki 0FE00h.

Informacinė atmintis yra dviejų segmentų A ir B po 128 B Flash atminties. Si atmintis gali būti trinama individualiai arba kaip grupė segmentų kartu su Flash atminties segmentais. Atminties adresas nuo 01000h iki 010FFh.

0FFFFh

Pertraukimo

0FFE0h

vektoriai

0FFDFh

60KB

Flash

atminties

segmentai 0 - 77

01100h

010FFh

2x128 B

Flash

atminties

segmentai A, B

01000h

0FFFh

1 KB, ROM

uzkrovimo

0C00h

programa

09FFh

2 KB, RAM

0200h

01FFh

16 bitų

0100h

periferijos moduliai

00FFh

8 bitų

0010h

periferijos moduliai

000Fh

SFR - specialios

paskirties

0000h

registrai (8 bitų)

8pav. Mikrovaldiklio MSP430F449 atminties struktūra

1 KB uzkrovimo programa is pastoviosios ROM atminties. Atminties adresas nuo 0C00h iki 0FFFh.

2 KB operatyvinės (RAM) atminties. Galimas atminties įrasymas, skaitymas ir trynimas. Atminties adresas nuo 0200h iki 09FFh.

256 B atminties, isskirti periferiniams moduliams, kurie valdomi per 16 bitų duomenų magistralę (taimeriai). Atminties adresas nuo 0100h iki 01FFh.

240 B atminties, isskirti periferiniams moduliams, kurie valdomi per 8 bitų duomenų magistralę (P1, P2 įėjimai - isėjimai ). Atminties adresas nuo 010h iki 0FFh.

16 B atminties, isskirti specialios paskirties registrams (SFR). Atminties adresas nuo 0000h iki 000Fh.

MSP430 seimos Assembler-io programavimo kalba

MSP430 seimos kontrolerių Assembler-io kalbą sudaro 51 instrukcija, is kurių 27 pagrindinės ir 24 emuliuojančios. Procesoriaus greitaveika priklauso nuo individualių instrukcijų, nuo instrukcijų formato ir adresavimo metodo bei ciklų skaičiaus reikalingų įvykdyti tam tikrai instrukcijai (komandai).

4 lentelė. MSP430 serijos mikrovaldiklio instrukcijų sąrasas

INSTRUKCIJA

PAAISKINIMAI

POZYMIS

V

N

Z

C

ADC(B) dst

dst + C → dst

x

x

x

x

ADD(B) src, dst

src + dst → dst

x

x

x

x

ADDC(B) src, dst

src + dst + C → dst

x

x

x

x

AND(B) src, dst

src AND dst → dst

x

x

x

BIC(B) src, dst

(NOT src) AND dst → dst

BIS(B) src, dst

src OR dst → dst

BIT(B) src, dst

src AND dst

x

x

x

BR(B) dst

Programos atsaka į dst

CALL dst

PC + 2 →TOS, dst → PC

CLR(B) dst

0 → dst

CLRC

0 → C

CLRN

0 → N

CLRZ

0 → Z

CMP(B) src, dst

dst - src

x

x

x

x

DADC(B) dst

dst + C → dst (decimally)

x

x

x

x

DADD(B) src, dst

src + dst + C → dst (decimally)

x

x

x

x

DEC(B) dst

dst - 1 → dst

x

x

x

x

DECD(B) dst

dst - 2 → dst

x

x

x

x

DINT

Gesinami pertraukimai

EINT

Leidziami pertraukimai

INC(B) dst

dst + 1 → dst

x

x

x

x

INCD (B) dst

dst + 2 → dst

x

x

x

x

INV (B) dst

Invertuojamas dst

x

x

x

x

JC/JHS label

Persokti į zymeklį (label), jei C = 1

JEQ/JZ label

Persokti į zymeklį (label), jei Z = 1

JG label

Persokti į zymeklį , jei (N xor V) = 0

JL label

Persokti į zymeklį , jei (N xor V) = 1

JMP label

Besąlygiskai persokti į zymeklį (label)

JN label

Persokti į zymeklį (label), jei N = 1

JNC/JLO label

Persokti į zymeklį (label), jei C = 0

JNE/JNZ label

Persokti į zymeklį (label), jei Z = 0

MOV(B) src, dst

src → dst

NOP

Jokia operacija nevykdoma

POP(B) dst

@SP → dst, SP + 2 → SP

PUSH(B) src

SP - 2 → SP, src → @SP

RETI

TOS → SR, SP + 2 → SP

TOS → PC, SP + 2 → SP

x

x

x

x

RET dst

Sugrįzimas is paprogramės

TOS → PC, SP + 2 → SP

RLA(B) dst

MSB ← MSB-1 . LSB ← 0

x

x

x

x

RLC(B) dst

C ← MSB . LSB ← C

x

x

x

RRA(B) dst

MSB → MSB, MSB → MSB-1. LSB → C

x

x

x

x

RRC(B) dst

C → MSB . LSB → C

x

x

x

x

SBC(B) dst

dst - C  → dst

x

x

x

x

SETC

1 → C

SETN

1 → N

SETZ

1 → Z

SUB(B) src, dst

dst - src → dst

x

x

x

x

SUBC(B) src, dst

dst - src - 1 + C → dst

x

x

x

x

SWPB dst

Sukeisti baitus vietomis

SXT dst

Bit1 ... Bit7 → Bit8 ... Bit15

x

x

x

TST(B) dst

Patikrinimas

x

x

x

x

XOR(B) dst

src XOR dst → dst

x

x

x

x

Sutrumpinimų, naudojamų lentelėje paaiskinimai: Source (src.) - duomenų saltinis, Destination (dst.) - galutinis operacijos rezultatas, Program Counter (PC) - komandų skaitiklis. Stack Pointer (SP) - steko rodiklis. Status Register (SR) - pozymių registras. Top Of Stack (TOS) - duomenys steko virsuje, MSB - didziausios vertės bitas, LSB - maziausios vertės bitas.

Pozymio registro bitai: V - persipildymo pozymis, N - neigiamas pozymis, Z - nulio pozymis, C - pernesimo pozymis. "x" - reiskia, kad įvykdzius komandą pozymių registro bitai keičiasi, "-" liko nepakitę, "*" - emuliuojamos komandos.


Document Info


Accesari: 1776
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )