Scris în limbaj de asamblare pentru avr. AVR

Scris în limbaj de asamblare pentru avr. AVR

Revich Yu. V.

Programare practică a microcontrolerelor Atmel AVR
asamblator - a doua vedere, Vipr. -

Sunt prezentate principiile de funcționare, caracteristicile arhitecturii și utilizarea

programare microcontrolere Atmel AVR Rețete pregătite
pentru programarea funcțiilor de bază ale unui dispozitiv microelectronic zilnic -
tură: ca răspuns la apăsarea unui buton sau indicație dinamică
înainte de plierea protocoalelor, înregistrarea datelor din memoria externă și caracteristici
Legătura cu aniversarea orei reale. Se acordă un respect deosebit schimbului de date.
le micro dispozitive electronice cu un computer personal, navigați
aplica programul Cartea conține caracteristicile modelelor actuale AVR și spiv-
microcircuite mandriene ale rocilor de eliberare rămase. Programele principale
parametrii Microcontrolere AVR, transfer de comenzi și texte de program pentru acestea,
precum și o listă de termeni și abrevieri care sunt utilizați.

Pentru studenți, lucrători inginerie și tehnici și operatori radio

Grup de pregătire video:

Editor șef

Katerina Kondukova

Adjunct editor sef

Igor Shishigin

Cap editorial

Grigory Dobin

Editor

Yuriy Rozhko

Dispunerea computerului

Olga Sergienko

corector

Zinaida Dmitrieva

Design coperta

cerbul lui Belyaeva

Cap virobnitstvom

Mikola Tverskikh

Microcontrolerele, vinovăția și stagnarea lor.................................................. ......... 7

Istoria microcontrolerelor.................................................. ............................................................. .... 8

Electronice în stil grecesc.................................................. ...................................................... ............ ... 10

De ce AVR? .................................................. ...................................................... ........................................... 12

PARTEA I. MARILE PRINCIPII ALE DISPOZITIVELOR
І FUNCȚIONALITATEA ATMEL AVR ............................................. ....... ............... 17

Capitolul 1. O privire asupra microcontrolerelor Atmel AVR .......................................... ...... ........ 19

Familii AVR ................................................. ................................................... ......... ................................. 21

Caracteristicile vikoristan MK AVR practice ................................................ ....... ................. 23

Despre trai ............................................................... .. ................................................ ........ ................. 23

Caracteristici ale instalării AVR în circuite.................................................. ........ ............. 25

Capitolul 2. Dispozitivul Zagalny, organizarea memoriei, cronometrare, aruncare........ 27

Memoria programului.................................................. ........ .. ................................................ ..... .. ........................ 27

Memorie de date (RAM, SRAM) ................................................. ... .. ................................................ .. ......... 29

Memorie de date fără energie (EEPROM) ............................................. ........ .. ......................... 31

Metode de cronometrare.................................................. .... ................................................. .......................... 32

Skidannya.................................................. ....... ................................................. ............................................................. ...... 34

Capitolul 3. Să ne cunoaștem dispozitiv periferic......................................... 37

Porti introducere-video.............................................................. ............................................................. ........... .................... 38

Temporizatoarele de tratament.............................................................. ................................................... ......................... ....................... 39

Conversie analog-digitală.................................................. ........................................................ 41

Porturile ulterioare.............................................................. ................................................... ......... .......... 42

UART.................................................. .. ................................................ ........ ................................... 43

Interfața SPI ................................................. ................................................... ......... ................. 46

Interfață TWI (I

C) ............................................... ........... ............................................. ..... ..... 50

Interfață serială universală USI ............................................. ...... ............. 50

Capitolul 4. Moduri de întrerupere și de economisire a energiei........................................... .......... ... 53

Pererivannya.................................................. ....... ................................................. ............. ................................ 53

Rіznovidi întrerupe................................................ .. ................................................ ........ 57

Moduri de economisire a energiei.................................................. .... ................................................. .......... ........ 58

PARTEA II. PROGRAMARE MICROCONTROLLERE
ATMEL AVR ................................................. ................................................... ........ ................ 61

Secțiunea 5. principiile Zagalni programare MK din familia AVR .................. 63

Asamblator sau C? .................................................. ...................................................... ............ .................... 63

Metode de programare a AVR ................................................ ....... ................................. 67

Editor de cod................................................................. ................................................... ......... ................................. 67

Despre AVR Studio ................................................. ............................................................. ........... ...................... 68

Refinisarea asamblatorului................................................. ................ ................................. ....................... ... 70

Programatori.................................................. ....... ................................................. ............. ............... 71

Despre fișierele hexadecimale.................................................. ........................................................ ............... ................................. 75

Comenzi, instrucțiuni și notare ale asamblatorului AVR.................................................. .......... ................................. 78

Numerele și Virazis.............................................................. .... ................................................. .......... .............. 79

Directive și funcții.................................................. ............................................................. ........... .......... 80

Structura originală a programului AVR.................................................. ........................................................ .......... 84

Gătirea excesivă............................................................. ............................................................. ........... ....... 85

RESET ................................................. .... ................................................. .......... ................................ 89

Cel mai simplu program.................................................. .... ................................................. .......... .............. 90

Umbrirea ................................................. .... ................................................. .......... ................................. 92

Programul clinicianului.............................................................. ................................................... ......... .......... 94

Vikoristannya întrerupere............................................................. ................................................... ......... ....... 96

Exercițiu cu cronometru.................................................. ................................................... ......................... ............ 97

Program de tratament cu întrerupere vikoristannyam............................................. ....... ............ 98

Despre detaliile de configurare ................................................ ............................................................. ........... ...... 101

Capitolul 6. Sistemul de comandă AVR ............................................. ........................................................ 105

Controlați comenzile de transfer și înregistrați SREG ...................................................................... 105

Comenzi de inversare................................................ ............................. ................................. .......................... ..... 111

Comenzile operațiilor logice.............................................................. ...................................................... ........... 113

Comenzi și operații cu biți............................................. ...... ................................................. 114

Instructiuni de operatii aritmetice.................................................. ..... ................................................. 116

Comenzi care depășesc datele.................................................. .... ................................................. .......... ..... 118

Comenzi de control al sistemului .................................................. ................. ................................ ........................ 122

Vikonannya procedurilor tipice în limbajul de asamblare........................................... ......... .. ........................... 123

Despre stivă, schimbări locale și globale ................................................ .......... ................................. 125

Capitolul 7. Operații aritmetice ............................................. ..... ................................. 127

Operații aritmetice standard.................................................. ..... ................................... 128

Înmulțirea numerelor din mai multe cifre.................................................. ..................... ................................ ....... 129

Lista numerelor cu număr mare................................................ ....... ................................................. 131

Operații cu numere fracționale.................................................. .......................................................... ............... 134

Generator numere vipadkovyh....................................................................................................... 136

Operații cu numere în format BCD ............................................. ...................................................... ... 138

Numerele negative în MK.............................................. ............................................................. ........... ....... 143

Capitolul 8. Programarea temporizatoarelor.............................................. ....... .................... 147

Temporizatoare pe 8 și 16 biți.............................................. .... ................................................. .......... .......... 147

Formarea unei valori date de frecvență.................................................. ........ ................................. 149

Cam la ora .................................................. .... ................................................. .......... ................................. 153

Corectarea exactă a timpului.................................................. ............................................................. ...... 158

Frecvența și perioada .................................................. ..................... ................................ ............................. ......... 160

Frecvență ................................................. ........................................................ ............................................. 160

Periodomir.................................................. .. ................................................ ........ ................................. 164

Controlul dinamic al afișajului.................................................. ..................... ................................ ....... 167

Indicatoare LED pentru conexiunile lor.................................................. ...................................................... 168

Programarea afișajului dinamic.................................................. ..................... ............... 171

Temporizatoare în modul PWM ................................................. ...................................................... ............ ............ 174

Secțiunea 9. Selectarea EEPROM ............................................. ..... ................................. 179

Încă o dată despre salvarea datelor în EEPROM ................................................ .... ................................... 179

Înregistrarea și citirea EEPROM .................................................. ...................................................... ............ .......... 181

Salvarea constantelor în EEPROM ............................................. ...................................................... ............ .. 183

Capitolul 10. Comparator analogic și ADC............................................. ......... ................................. 187

Operațiuni analogo-digitale și furturile acestora.................................................. ......... ................................. 187

Lucrul cu un comparator analog............................................................. ....... ................................................. 190

Integrarea ADC pe comparator ............................................. ................ ... ............................... ...... 193

Principiul de funcționare și formula Rozrahunk............................................. .......... ................................. 194

Program ADC integrat.................................................. ..... .................................... 198

Activarea ADC............................................................. .................................................. ...................... ................................. 201

Vikoristanny ADC fund.................................................. ............................................................. ........... .... 204

Program................................................. ....... ................................................. ............. ................................ 206

Capitolul 11. Programarea SPI ............................................. ....... ................................. 215

Operații de bază prin SPI ................................................. ...................................................... ............ ... 215

Opțiune hardware............................................................. ................................................... ......... ......... 216

Opțiune software................................................. ................................................... ......... ...... 218

Despre diferitele tipuri de memorie non-energetică.............................................. .......... .. ................................. 219

Înregistrarea și citirea memoriei flash prin SPI ................................................ ... .. ............................................... 221

Program de schimb de memorie 45DB011B prin SPI ............................................... ........ .. .............. 224

Înregistrarea și citirea cardurilor flash............................................. ....... ................................................. ............. ............ 225

Conectarea cardurilor MMS.................................................. ............................................................. ........... ... 225

Trimiterea comenzilor și inițializarea MMC............................................. ......... ................................. 228

Înregistrarea citirii MMS.................................................. ............................................................. ................... ......... 232

Capitolul 12. Interfața TWI (I

C) ta yogo praktikhe vikoristannya................... 237

Protocolul de bază I

C ........................................................... ............................................... ...... ......... 237

Protocolul de programare I

C ........................................................... ........................ 240

Înregistrarea datelor în memoria externă............................................. ....... .. .......... 241

Moduri de schimb de memorie AT24 ............................................. . .. ................................................. 241

Program................................................. ....... ................................................. ............. ................................ 243

Anuar cu interfața I

C ........................................................... ............................................... ...... .... 247

Înregistrarea datelor.............................................................. ........................................................ .............. ................... 255

Citirea datelor.................................................................. .... ................................................. .......... ................... 259

Capitolul 13. Programarea UART/USART ................................................ .... ............. 261

Inițializare UART ................................................. .. ................................................ ........ ............... 262

Transmiterea și recepția datelor .................................................................. ....... ................................................. ............. .......... 263

Instalarea finală a anuarului DS1307 pentru UART suplimentar .................................. ...... ................... 266

Protejați-vă de eșecurile de comunicare............................................. ...................... ................................. 271

Verificarea împerecherii.................................................. ............................................................. ........... ........ 271

Cum se organizează un schimb corect............................................................. ........ ................................... 273

Capabilitati suplimentare ale USART ................................................. ...................................................... 274

Implementarea interfețelor RS-232 și RS-485 .................................. .......................................................... .... 276

Conversia nivelurilor pentru RS-232 ............................................. ...................................................... 280

RS-485 ................................................. ............................................................. ........... ................................ 283

Capitolul 14. Moduri de economisire a energiei și temporizator watchdog.................................. 285

Programarea modului de economisire a energiei............................................. ....... ........................ 286

Voi atașa fundul la baterie.................................. ........... .................................... 287

Prelucrarea suplimentară a programului............................................................. ...................................................... ............ ...... 289

Watchdog timer wiki.................................................. ..................... ................................ ........... 293

ADULTĂRI ............................................................... ........................................................ .............. ....... 299

Anexă 1. Parametrii de bază ai microcontrolerelor Atmel AVR 301

Anexa 2. Comenzi Atmel AVR ............................................... ..... ................................. 309

Comenzi aritmetice și logice.................................................. ...................................................... 310

Comenzi pentru operații cu biți............................................. ....................... ................................. ............................. ...... 311

Comenzi de nivelare................................................. ................................................... ........................ 312

Comenzile de transfer de control.................................................. ............................................................. ........... 313

Comenzi pentru tranziție nebună și subprogram.................................................. ....... ... 313

Comenzi de inversare-inversare și comenzi de tranziție mentală.............................. .......... 314

Comenzi de transfer de date.................................................. ............................. ................................. .......................... ........ 315

Comenzi de control al sistemului .................................................. ................. ................................ ........................ 316

Anexa 3. Textul programului.................................................. ........................................ 317

Program demonstrativ pentru schimbul de date din memoria flash 45DB011B
în spatele interfeței SPI.................................................. ............................................................. ........... ................................. 317

Proceduri de schimb de interfață I

C ........................................................... ........................ 321

Anexa 4. Schimb de date cu un computer personal
Configurarea programului prin UART ............................................. ........ ................................ 329

Lucrul cu un port COM în Delphi ................................................ .... ................................................. .......... ..... 329

Instalarea liniei RTS în DOS și Windows................................................ .......................................................... 335

Programul COM2000 ................................................. ................................................... ........................ 337

Configurarea programelor pentru emulator de terminal suplimentar ................................................ ................. ................. 339

Addendum 5. Glosarul include adesea abrevieri și termeni 341

Literatură................................................. ....... ................................................. ............. ............... 347

Indicator de subiect.................................................. ........................................................ ...... 349

INTRARE

Microcontrolere,
Sunt vinovat și stagnan

Se pare că anii 1960 se leagănă, fiind atenți la participanții la demonstrațiile studențești
protest, Gordon Moore a respectat: „Revoluționarii de drept sunt aceiași”. Învăța
Sursa de tensiune a uneia dintre ieșirile tranzistorului W. Shockley, printre altele
fondatorul celebrei Silicon Valley, care are propria fundație
El este liderul companiilor care au fost destinate să joace un rol principal în dezvoltare
microelectronică, Moore știa ce spunea. Într-un mod paradoxal
producția lui Moore și a lui spivrobitniki a fost considerată a fi baza acelei lumi,
în ce an s-a concentrat activitatea „tineretului rebel”?
anii 1960 Hackerii de astăzi (nu huliganii informatici din ziare, ci anchetatorii
şi-au îngropat computerele drepte) - depresionişti ideologici direcţi
Studenții de la Sorbona și demonstranții americani, care au schimbat motto-ul „Make
dragoste nu razboi"

la „Nu scrie un gol – scrie un cod”. Nevypadkovo bogat cine știe...

nu sunt membri ai industriei electronice și informatice, autorii constatărilor, form-
ce au luat pentru a expune lumea actuală, - cei care au venit de la mijloc, aproape de acest „bun-
tineri."
Povestea noastră despre microcontrolere a început în 1957. Gordon Moore
împreună cu Robert Noyce, care mai târziu a devenit unul dintre vinificatorii din Mik-
roschems și, de asemenea, șase spіvrobіtniki Shockley Semiconductor Labs (Shockley apelând
Ikh "zradnitskaya visimka"), după ce a adormit la compania Fairchild Semiconductor. Hei, mie
Provocările nu sunt legate doar de dezvoltarea pieței de alimentare cu energie și de avansarea microcircuitelor
în practica inginerească și, astfel, a devenit un fel de forjă de personal și
generator de idei pentru fete tinere.
Axa se bazează numai pe fapte istorice. Moore și Noyce însuși, ca în anii 1960
a creat compania Integrated Electronics, sub numele prescurtat Intel
știe imediat fiecărui student. Jeremy Sanders, fondatorul unei alte familii
Cea mai mică companie este AMD, de asemenea afiliată la Fairchild, unde sunt considerate a fi co-
model eficient în timp de producție și vânzare a gropilor de gunoi
componente, în care compu-

„Fă dragoste, nu război” - anii 1960 se stingeau, protestând împotriva războiului din Vietnam.

introduce

Voi obliga petrecerea. Charlie Spork, unul dintre managerii cheie ai Fairchild, născut în 1967.
devenind director al National Semiconductor, care există de un sfert
sută Jumătate din „Zradnytska Visimka” - Jean Hoerny, Evgen Klainer,
Jay Last și Sheldon Roberts - s-au născut în 1961. a adormit la firma Amelco, cu care
De-a lungul anilor, Intersil, Maxim și Ixys au crescut în popularitate. Spіvrobitnik
Solicitările lui Fairchild Robert Widlar se datorează rezultatelor boosterelor operaționale -
varietăți de microcircuite și până în prezent sacrifică popularitatea tuturor
microprocesoare. Mai mult, istoria Fairchild este legată de vinovăția părinților lor
noul model de finanțare de tip venture (sau „Risik”), care a jucat rolul inițial
un rol important în dezvoltarea tuturor tehnologiilor legate de electronică, calculatoare și
telecomunicatii. Nu degeaba Fairchild este adesea numită „mama tuturor electronicelor”.
troniki".

Istoria microcontrolerelor

De aceea, uraganul este important pentru creșterea noastră, cei care sunt printre
Alte fire spion Fairchild inovatoare au fost primele care s-au strecurat.
memorie. În zilele noastre, aveți CD-uri și DVD-uri, hard disk-uri că cardurile flash, noi
Este important de menționat că la începutul anilor 1960 existau programe pentru calculatoare
au fost salvate în principal pe foi de carton (cărți perforate), truse de construcție.
ține-ți capul deasupra modulelor scumpe OZP pe liniile obturatoare cu mercur, oscilând
tuburi grafice și inele de ferită, unde pielea a fost „cusută” manual.
Bine. Cel mai compact dispozitiv electronic pentru salvarea datelor
discurile magnetice numite RAMAC 305 cu o capacitate de 5 MB aveau dimensiunea
dintr-un frigider industrial și a fost închiriat cu 5 mii. dolari pe lună.
Vinakhid a devenit un „schimb de lumină” din regatul întunecat al acestor monștri
îmbrăcămintea sport a corporației americane Bosch Arma Yong Chou, născută în 1956. decolandu-se
brevet pentru dispozitiv, cunoscut acum ca „programare ROM unică”
(ROM OTP

). În acest brevet, printre altele, termenul a fost inventat pentru prima dată

"arde" - un micromodul pliat într-o matrice cu jumperi fuzibili, care
Torii, când erau programați, scuipau unul la altul când li se aplica tensiune înaltă.
OTP ROM cu mult timp in urma lipsit de dispozitive comune pentru compact
salvând datele și nu își pierde valoarea până în ultima oră -
nu mai puțin de un sfert din microcontrolerele din lume, în special cele mai simple, până la
totul este eliberat singur cu o astfel de carte descărcată programată o singură dată.
M'yattyu, respectând ieftinitatea extremă. І mai mult în Pe lângă stâncile rămase„înghițit” pa-
Memoria a început să apară treptat ca o memorie flash manuală, când a rămas
Prețurile pentru tablete au scăzut, ceea ce poate știa Vikoristan OTP ROM.
Să ne întoarcem la anii 1960. Memoria compactă a conductorilor era absolut necesară
Totul - de la armată și NASA până la producătorii de dispozitive de zi cu zi. De acum
Fairchild a creat ceea ce astăzi se numește DRAM, de exemplu, pe astfel de micro-
scheme (32.768 de cipuri cu o capacitate de 256 de biți de skinuri) memoria însemnului era

Descifrarea abrevierilor reale ale divelor. addenda 5.

al aceluiași supercomputer ILLIAC-IV, un concurent al BESM-6. Sentiment
Stars of Dme Veter, născut în 1968 Moore și Noyce l-au deposedat pe Fairchild și au adormit la Intel, așa cum
o companie specializată în dezvoltarea și producerea memoriei. Încă nu există miros
Se pare că cel mai popular produs Intel nu va fi memoria deloc, ci mică
reglator (Fig. B1), denumește microprocesor, dezvoltarea unor prim-
a început inițial ca o etapă suplimentară în proiectarea calculului de bază
Tora.

Mic ÎN 1. Microprocesor

І

IEȘIRE MICROPROCESOR VINE

Născut în 1969 O serie de oameni de la Busicom, o tânără companie japoneză, s-au prezentat la Intel.
Nu suntem angajați în producția de calculatoare. Va trebui să formez de la 12 inte-
circuite finale ca element principal al noului calculator desktop ieftin -
Tora. Proiectul Boulevization al lui Masatoshi Shima, care reprezintă o sută de japonezi.
Ron. Ted Hoff (Marcian E. Ted Hoff, n. 1937), ceramist care a început
configurat timid pentru produsele Intel, familiarizandu-ne cu proiectul, ne dăm seama că
În schimb, pentru a crea un calculator cu diverse opțiuni de programare,
ruvannya, puteți învăța despre computere, programare pentru roboți, cum ar fi
calculator. Idee în curs de dezvoltare, în toată toamna anului 1969. Hoff s-a înscris pentru ar-
arhitectura viitorului microprocesor În primăvară, a sosit Will Hoffa (toate la fel
deja cunoscut de noi Fairchild) nou spivrobitnik Frederic Faggin, care
ry și a venit cu un nume pentru întregul sistem: „Motherland 4000”. Familia a crescut
cu patru cipuri cu 16 cipuri: 4001 sloturi ROM de 2 KB; 4002 - RAM z
4-

port de ieșire de biți pentru descărcarea programelor; 4003 bv 10-bito-

Extinderea dvs. de intrare-ieșire cu intrări ulterioare și ieșire paralelă
cabine pentru conectarea cu o tastatură, indicator și altele clădiri exterioare; in orice caz-
4004 biți pentru un procesor pe 4 biți (unitate centrală de procesare). Tse CPU
Acesta conținea 2300 de tranzistori și funcționa la o frecvență de ceas de 108 kHz. 15 cădere de frunze
1971

R. Primul microprocesor a fost asurzit. Busicom este o glumă

plată, plătind Intel 60 000 de dolari. Dar Intel a decis să schimbe Busicom pentru bani,
Pentru a vă schimba drepturile asupra procesatorului.
i4004 mav tensiune de calcul, egală cu primul computer electronic.
computer ENIAC (1946). Prima sa practic zastosuvannya Al 4004-lea cunoscut în sistem.
Cum se controlează semafoarele și analizoarele de sânge. Acest microproces
Smitya a fost detectată în echipamentul de bord al sondei interplanetare Pioneer-10, care
având stabilit un record pentru cea mai lungă durată de viață a dispozitivelor similare: de la lansare
1972

r., iar până în primăvara anului 2001 r. Pioneer-10 merge deasupra Pământului la 11,78 miliarde km și până în prezent

a lucrat și, la propriu, a lucrat până în ziua de azi, chiar și în amarul an 2003. Biroul NASA
Mi-am luat rămas bun de la el social.

introduce

Astfel a început schimbarea progresului microprocesoarelor, care ulterior au fost separate
Există o serie de specii diferite, care se împart în principal în două grupuri principale:
Potrivit pentru microprocesoare (MP) și microcontrolere (MC). Primul
Recunoscut pentru utilizarea în depozitul sistemelor de plată, cel mai răspândit.
fapte de iac - calculatoare personale(PC), de asemenea, adesea
se numesc „procesoare PC” (dacă doriți să includeți acest grup în același mod,
apă MP pentru servere și alte activități). Deputații sunt împărțiți în parlamentari,
Ce sunt utilizate în principal pentru controlul diferitelor sisteme,
Prin urmare, cu un nucleu de calcul clar slab, duhoarea ar trebui inclusă în
o mulțime de noduri suplimentare. Cele pentru MP primar sunt transferate în dimensiune -
informații despre chipset-uri externe sau module suplimentare (memorie, porturi de intrare)
ieșire, temporizatoare, controlere, unități pentru procesarea semnalelor analogice.
catch and in.), în MK este reconstruit direct pe cristal, motiv pentru care a fost la modă pentru ei
numită „micro-EOM”.
Și să fiu sincer, în cel mai simplu mod, este necesar să se asigure funcționarea corectă.
fiecare calculator să fie echipat cu un singur microcircuit MK cu un conectat
au înainte dispozitive de intrare-ieșire. Modele actuale de un singur cristal obișnuit
Steel MK depășește capacitățile de calcul ale IBM PC AT la cea de-a 286-a producție
cesor din cealaltă jumătate a anilor 1980. Regiunile E, de cordon intre MP si
Este important să efectuați MK: de exemplu, procesoare pentru dispozitive mobile, în
telefoane și computere la camere digitale și procesoare
Vuzol este vinovat de funcții de calcul greșite și Keruvat bogat-
componente numerice externe.

Electronice în stil grecesc

Născut în 1962 familia Perlegos, emigranți greci, a apărut în California
în orașul Tripolis. Părinţii au luat, ca în patrie, viticultura şi
Noi, George și Gust Perlegos, au dobândit o specialitate la modă ca inginer -
electronică: a absolvit ofensiv la Universitatea din San Jose, apoi la Stanford
Universitate. Născut în 1974 la vârsta de 24 de ani, cel mai tânăr dintre frații săi, George Perlegos,
incepand sa exerseze in Intel, unde a irosit pe una dintre cele mai avansate direcții:
Îndepărtarea memoriei care este ștearsă electric, pentru a înlocui ROM-ul OTP „șters”.
Chiar înainte de Perlegos, poate o oră cu ieșirea microprocesorului, născut în 1971,
Intel spivorbitnik Don Frohman Vinayshov obturator „plutitor” și creând primul UV-
EPROM este ștearsă cu un volum de 2K (256 8).

Z

Amitki pe câmpuri

În viața „primară”, trăiește puțin timp pentru o informație dintr-o pagină
„K” (la fel ca „M”) nu este recomandat: este important să înțelegeți la ce aveți de gând
despre kilobiți, kilobiți, „kilobiți” sau kilobiți pe secundă. Prote
Astfel de stenografii apar adesea, inclusiv în documentația tehnică, și vom ajunge la
Toți vor moșteni acest fund. Pentru valoare, sunt acceptate următoarele reguli.
la: o singură litera „K” înseamnă kilobiți dubli (1024 biți), „M” -
megabiți dubli (1024 kbiți). Deși în literatură este adesea acceptată utilizarea kiloocteților
mai pe scurt, ca „KB”, și kilobiți, ca „KB”, vom încerca să înțelegem această confuzie, iar în

Microcontrolere, vinovăția și stagnarea lor

Decideți să scrieți în total: kbyte și MB, kbit/s, MB/s. Viklyuch-
În stoc există o memorie dedicată a programelor de microcontroler, care se datorează
măsurată în cuvinte pe doi octeți: de exemplu, cuvintele 4K au 4096 capete semnificative -
sliv (8 kbytes).

George Perlegos este implicat activ în acest proces și este implicat direct în participarea sa și
Apoi, și sub eforturile sale neîntrerupte, au fost create două tehnologii,
care au devenit un punct de creştere pentru toată galuzia odată cu proliferarea memoriei flash – una dintre
principalele etape ale actualei „revoluții digitale”. Tse bulo schatuku vinaide-
ny chip 2716 - 16K (2048 8) EPROM cu o tensiune de alimentare +5 V și apoi
2816 - primul EEPROM, ROM șters electric, care a devenit prototipul
memorie flash.
Născut în 1981 Perlegos privează Intel și mulți alți sateliți (inclusiv
fost Gordon Campbell, viitorul creator al altei companii celebre Chips &
Technologies) creează compania Seeq. Va exista o scădere a pro-
gândit, iar după trei ani compania a reușit să priveze legătura de revendicare -
investitorii noștri. Nu mai au încredere în ei, George și fratele său Gust și nu numai...
cu Seeq spivrobitniki în 1984. creează o companie punând în comun bani,
Numele este întotdeauna numit Advanced Technology MEmory and Logic sau
pe scurt - Atmel.
Majoritatea produselor Atmel au folosit cipuri de memorie nevolatile de toate tipurile -
caracteristici noi - cum ar fi OTP EPROM și EEPROM cu ulterioare și paralele
acces, precum și Flash. Născut în 1985 Atmel a lansat primul EEPROM din lume acasă -
nici una dintre cele mai recente tehnologii CMOS, iar 1989 p. - Cer memorie flash din mâncare
de la o tensiune +5 V. De exemplu, în anii 1980, Intel a intenționat să pedepsească o serie de companii
Producătorii de EPROM, inclusiv Atmel, au fost acuzați de încălcarea brevetelor,
În cele din urmă s-a decis să se discute despre schimbul de licențe. Mai mult, până la urmă
Ca urmare, Atmel a primit o licență pentru producerea de microcontrol-uri clasice.
Lera 8051, în sprijinul căruia Intel ajungea deja la acea oră,
perfecţionarea procesoarelor PC.

P

DETALII

Este probabil ca EEPROM-ul să fie împărțit în memorie flash, deoarece prima permite
acces sonor la orice cameră confortabilă și la altele - chiar și la blocuri întregi. De-
de ce EEPROM este mai puțin costisitoare (tipic micro-ului specializat
Circuite EEPROM - în unități (kilobiți până la un megabiți) și mai scumpe, în acest moment
Sunt folosite în principal pentru a salva date, inclusiv microcontrol în depozit.
leriv. Memoria flash este mai simplă și mai ieftină și oferă, de asemenea, un avantaj semnificativ pentru viteză.
creșterea cu o mare utilizare a informațiilor, în special cu citirea/scrierea în flux, ha-
tipic pentru dispozitivele media (cum ar fi camerele digitale sau playerele MP3). În stoc
Memoria flash pentru microcontroler este folosită pentru a salva programe. Detalii
Despre diferitele tipuri de memorie și funcționarea lor. capitolul 11.

Deci Atmel a fost „tras” în numărul de producători de microcontrolere, în care
Romul a ajuns deja rapid în primele poziții: în 1993. focarul de virus a început
Primele de la Galusa MK AT89C51 din memoria flash instalată a programului. Acest lucru înseamnă
începutul unei revoluții în toată practica inginerească, care a fost începută
Anterior, MK Mali fie avea o memorie OTP programată o singură dată, fie

introduce

Lavabil cu UV, ceea ce este mult mai valoros pentru industria de producție, iar robotul este condus cu acesta
Timpul tâlharilor va fi petrecut în mare detriment. Numărul de cicluri de rescriere pentru UV
PROM-ul nu depășește multe zeci, ci doar lumina zilei pe care a fost cheltuită
Un astfel de cristal poate duce la ștergerea informațiilor. Din acest motiv, te rog spune-mi,
Trebuiau pregătite aparatele regionale, mai ales din vikorstani
Mănânc OTP ROM, ceea ce este semnificativ riscant: schimbă-l măcar o dată
Programul scris era deja imposibil. Apare memoria flash
au schimbat întreg „peisajul” acestui galus: ei înșiși au devenit
posibile astfel de discursuri ca actualizare de software BIOS-ul computerului sau „nu-
zăbrele” de programe de bază pentru dispozitivele electronice de zi cu zi.
U 1995 r. doi studenți ai Universității Norvegiene de Știință și Tehnologie de lângă Tron-
Heime, Alf Bogen și Vegard Vollen au venit cu ideea unui nucleu RISC de 8 biți, care
Așa au fost instalate ceramica lui Atmel. Numele distribuitorilor au devenit parte din numele Ar-
Arhitectura AVR: Alf+Vergard+RISC. Ideea mesei a avut succes, din 1996.
odinioară fundamentele centrului anterior Atmel de lângă Trondheim și, la fel, același
Primul microcontroler din noua serie AVR sub numele
AT90S1200. În cealaltă jumătate a anului 1997, corporația Atmel a început producția
vitalitatea familiei AVR.

De ce AVR?

Controlerele AVR „de la oameni” au două caracteristici care evidențiază acest lucru
familia altor deputați. În primul rând, sistemul de comandă este arhitectura nucleului AVR
Am lucrat împreună cu compania care vinde compilatoare de la pro-
gramovannya nivel inalt Sisteme IAR. Ca urmare, a apărut posibilitatea
scrieți cu programe AVR fără pierderi mari de productivitate
aliniat cu programele scrise în asamblatorul meu. Acest raport
Să vorbim despre asta în capitolul 5.
Cu alte cuvinte, unul dintre principalele avantaje ale AVR a fost stagnarea transportorului
ra. Rezultatul AVR nu înțelege ciclul mașinii: majoritatea
Comenzile sunt finalizate într-un singur ciclu de ceas. Pentru egalizare, este important de ce scapi
Datorită popularității mari a MK-urilor din familia PIC, puteți finaliza o comandă în 4 cicluri și clasa
sichny 8051 - ars în 12 cicluri (vreau modele actuale X 51 z ma-
ciclu de autobuz într-un ciclu).
Adevărat, în acest caz a trebuit să sacrific puțin pe simplitatea sistemului de comandă.
se remarcă mai ales în rustic X 51 de, de exemplu, oricare ar fi operațiunile reprogramate
sunt indicate datele din mijlocul controlorului, indiferent de metoda de adresare
cu porunca mea

pentru diferite variante, pentru acelasi timp in AVR este posibil pt

metoda pielii, propria sa comandă, în plus față de zona de acțiune înconjurată
Nya. Iar rafturile pliabile au o operațiune de galuzia cu biți. Prote tse nu
reduce la dificultăți semnificative folosind AVR assembler: trucuri, texte
programele sunt mai scurte și mai predictive ale programului cu mare
egal. De asemenea, trebuie luate în considerare următoarele: din numărul de echipe, de la 90 la 130, este necesar -
Există doar 50-60 de poduri unice per model, altele sunt interschimbabile.

Microcontrolere, vinovăția și stagnarea lor

Eu, veți descoperi că acest mic fragment este complet eliminat atunci când limbajul este învingător C,
de fapt arhitecturi antice diferite din aspectul caracteristicilor
Gramuvannya
Mare avantaj Arhitectura AVR - prezenta a 32 de registre operationale,
nu sunt în întregime egale în drepturi, dar permit ca o serie de episoade de dragoste să nu explodeze până când
RAM și nu abuzați de stiva (ceea ce în principiu este imposibil și
familie X 51), în plus, la modelele AVR mai tinere, stiva a devenit inaccesibilă
programator. Prin urmare, structura programelor de asamblare pentru AVR a devenit suspectă.
ghiciți programele de nivel înalt, unde efectuează operatorii
nu cu centre de memorie și registre, ci cu variabile și constante abstracte.
O altă caracteristică a AVR este punctul de vedere al designului circuitului - toate conexiunile sunt în
pot fi utilizate în trei stări (intrare - pornit - ieșire) și electrice
structuri CMOS skiy (aceasta înseamnă simetria ieșirii
semnale și suport ridicat pentru intrări). Zagalom este semnificativ
mai la îndemână decât porturile X 51 (bistabil și TTL-sumabil) și transmite vopsea
Protecția transmisiei (luată ca transmisie pe magistrala de sol).
Gânduri care au venit din diverse surse și s-au transformat în dovezi puternice,
autorul a ajuns aproximativ la o astfel de subdiviziune a regiunilor zastosuvannya celor trei înșiși
cele mai largi familii de controlere.

Controlori ai arhitecturii clasice X 51 (primele microcircuite ale familiei
8051 de minge au fost lansate pe cob din anii 1980) cele mai potrivite pentru zagalny
Vivchennya unui obiect. Este semnificativ faptul că crema Atmel, X 51-sum_snі virobi vi-
aproximativ o duzină de firme mai sunt permise, inclusiv giganți precum Philips și
Siemens și analogi de șuncă (seria 1816, 1830 etc.)
arhitectura este cea mai universală.

Familia AVR este recomandată pasionaților de electronice,
datorita simplitatii si versatilitatii dispozitivului, disponibilitatii structurii pt
tipuri diferite controlere, simplitatea proiectării circuitelor și a programării
(y la acest tip Prin „programare” înțelegem procesul de înregistrare a unui proces
gram și microcircuit).

PIC-urile cu microcip sunt ideale pentru proiectarea dispozitivelor voluminoase.
proprietăți, în special cele destinate circulației.

Această clasificare este în mare măsură subiectivă, iar autorul nu este sensibil la ceilalți
puncte de vedere: diferite familii MK se apropie treptat de parametri,
devin complet interschimbabile, ca toate aparatele electrice moderne
Cu toate acestea, alegerea uneia sau alteia familii are adesea un caracter „religios”.
Înainte de asta, trei ghicitori ale familiei MK sunt chiar și cele mai extinse
mijloc controlere universale dar departe de a fi cele mai de succes. Zagalne
Numărul familiilor comune de microcontrolere este estimat aproximativ
De fapt, mai mult de 100 și tot mai multe lucruri noi apar urgent. Piele
Pot exista zeci din aceste familii diferite modele. Pe ce primul loc
Printre MK-urile pe 8 biți, este tradițional să Compania Motorola,
important pentru proiectarea controlerelor pentru dispozitive mobile. Firma de microcipuri

introduce

Cu familia PIC, ocupă locul trei, iar Atmel ocupă locul doi. Pentru ceea ce merită,
Pe lângă MCU-urile AVR pe 8 biți, Atmel produce mai multe varietăți de MK-uri,
înaintea căruia se află nu numai cunoștințele despre 8051, ci și despre ARM-
procesoare și MK-uri specializate pentru diverse aplicații. Prote
Aceasta este o statistică formală, așa că nu vorbiți încă despre asta - deci, în mijlocul MK cu introducerea
Memoria flash Atmel se află deja pe locul trei pe piața de iluminat.
În 2002-2003, lumea a produs 3,2 miliarde de bucăți de microconducte.
Troleriv. Este semnificativ faptul că angajamentul față de lansarea procesoarelor pentru computere poate fi evaluat în
200 de milioane de unități pe râu, deci reprezintă doar aproximativ 6% din piață (pentru financiar
Total calculat, adevărat, în comparație cu altele și, de asemenea, prețul tipic al unui MK obișnuit
adaugă până la 2-5 dolari, iar un procesor pentru un PC este cu cel puțin un ordin de mărime mai mare și
Uneori ajunge la o sută de dolari). Așa că nu-i lăsa pe cei stăpâniți să stea tari,
Care este specialitatea unui programator electronic specializat în micro-
controlere, nu mai puțin importante și rare decât un program de calculator-
inginer de sistem sau creatorul de suplimente koristuvach.

Această carte se adresează cititorului care dorește să învețe structura și designul circuitului
toate caracteristicile AVR MK și învață cum să le înțelegi corect de bază
știri Prin urmare, autorul va împărtăși limba mea de asamblare.
Selecția programului de mijloc va fi analizată în capitolul 5). Să se ferească de carte
pentru acele date de lectură din motive practice, descrieți algoritmi gata pregătiți pentru
sarcini tipice cu care se confruntă dezvoltatorii în momentul implementării acestora și a altora
Funcții MK. Autorul, împreună cu cititorii, relatează despre o serie de alimente, precum
cereți să depășiți sfera beneficiilor programării MK: lucrați din post-
interfețele lor, operații aritmetice obținute de pe un PC, practice
implementarea precisă a modurilor de economisire a energiei.
În același timp, autorul, fără a înființa un reportaj, poate raporta absolut totul.
MK AVR: pentru care nu erau disponibile nici măcar zece volume. Ne este frică să ocolim
cum ar fi alimentarea cu energie, dezvoltarea și programarea din spatele interfeței JTAG, perspective
tu, care dezvăluie autoprogramarea controlerelor, este de asemenea necesară
Cea mai importantă sarcină pentru sinteza sunetului și alte moduri PWM
temporizator.
Această carte are cele mai multe dintre fundurile sale orientate către tineri
(cu o capacitate de memorie de 8 MB) modele ale modelului Mega, pentru ca il gasiti singur
Universal și potrivit pentru o gamă largă de comenzi fără nicio complexitate
scheme. În cazuri simple, orientarea autorului a fost cea mai universală
de la modelele mai tinere ATtiny2313 (despre nebunia sa din versiunea „clasică”.
AT90S2313 div. dist. Capitolul „Programul medicului cu vikoristannyam întrerupere”.
vi 5
). Cele mai multe buturi de țintire pot fi făcute practic fără reluare
adaptat la alte modele AVR care oferă aceeași configurație.
Vreau să spun.

PARTINA

Voi adăuga noi principii

și funcționarea Atmel AVR

Capitolul 1. O privire asupra microcontrolerelor Atmel AVR

Sectiunea 2. Dispozitiv Zagalny, organizarea memoriei,

taktuvannya, skidannya

Secțiunea 3. Familiarizare cu dispozitivele periferice

Secțiunea 4. Moduri de schimb și de economisire a energiei

ROZDIL

O privire asupra microcontrolerelor
Atmel AVR

Atmel AVR este o familie de microcontoare universale pe 8 biți.
trolere bazate pe nucleul halal cu diverse dispozitive periferice
în roiuri. Capacitățile AVR MK vă permit să vă schimbați fără sarcini standard,
De ce ar trebui să dăm vina pe distribuitorii de echipamente radio-electronice?
Caracteristicile microcontrolerelor Atmel AVR.

Productivitatea este de aproximativ 1 MIPS/MHz. MIPS (Milioane de instrucțiuni Per
În al doilea rând, un milion de comenzi pe secundă) - una dintre cele mai vechi și bogat sub ce formă -
Caracteristicile de performanță ale procesoarelor sunt mici, deci seturile de instrucțiuni
pentru procesoare diferite diferă și, evident, același număr
Instrucțiunile pentru diferite sisteme variază robot Corisna. Prote
pentru sisteme de calcul simple pe 8 biți care nu înlocuiesc comenzile,
ce să faci cu numere mari, numere cu virgulă mobilă și matrice
date, acesta este un indiciu prost al nivelării productivității lor. Virahu-
Nucleul AVR este de 16 ori mai mare în ceea ce privește productivitatea.
procesor inline 80286

Arhitectura RISC a fost îmbunătățită. Conceptul RISC (redus).
Set de instrucțiuni de calcul, calculat cu un set scurt de comenzi)
ofera vizibilitate unui set de comenzi care consta intr-un minim de compact si rapid
urmează instrucțiunile; caz în care operațiuni atât de greoaie ca
calcule cu virgulă mobilă sau operații aritmetice la scară mare -
cu ele in cifre se transfera pentru a fi implementat la nivel de subprograme. Concept
RISC ușurează dimensiunea nucleului (un nucleu AVR tipic are mai mult de 32 de mii.
tranzistori, în valoare de zeci de milioane în procesoare PC) și accelerație
îi spune robotului său: o instrucțiune tipică este finalizată într-un singur ciclu de ceas (cu excepția comenzilor
dezinstalarea programelor, brutalizarea memoriei și acțiunile altora cu care operează
tributuri aduse Marii Doujina). AVR are cea mai simplă conexiune din două părți
ventilator, dacă comanda se termină în aceeași măsură cu alegerea ofensivă.
Pe lângă arhitecturile Intel, AVR-ul „clasic” nu are foarte mult hardware.
nya/podіlu, totuși, în pedodina Mega există mai multe operațiuni.

Autobuze de memorie separate pentru comenzi și date. AVR (precum și majoritatea celorlalți
microcontrolere) poate t.z. Arhitectura Harvard, unde zonele de memorie

Bună seara tuturor! Transmit dintr-o lume liniștită numită „assembler”. Voi explica rapid că subiectul este despre microcontrolere AVR - și încă nu știu de ce această postare este necesară pentru cei care doresc să folosească assembler pentru orice altă sarcină. În dreapta este că acum câteva zile am început să citesc assembler de la zero - aveam nevoie să creez un singur dispozitiv - și am decis să creez totul în el pe cont propriu. Deci axa este o zi bună, deci Este absolut ușor de citit asamblatorul! Limbajul de asamblare poate fi doar înțeles! Pentru toți cei care doresc să programeze în limbaj de asamblare, vă recomand cu tărie să vă aprofundați în detaliu cum funcționează FIZIC microcontrolerul și apoi să învățați comenzile subtile.
Așadar, sunt pe cale să încep o mică serie de articole, care vor fi recunoscute de la bun început ca si tineÎnțeleg acestea și alte discursuri în limbaj de asamblare programat - cred că pentru cei care nu înțeleg deloc, eu însumi voi fi o astfel de „traducere” a discursurilor celor care în acest caz ar fi mai bine să împingă.

Voi spune imediat că mi-a plăcut cel mai mult acest subiect din depunerea DIHALT - așa că aceste articole vor fi un fel de traducere din limbajul super-duper-assembly-microcontroller în limbajul înțeles de majoritatea oamenilor. Ei bine, sunt sigur că guru mă va corecta pe parcurs și, de îndată ce explic greșit, este păcat să mă corectezi.
De acum, primele cunoștințe despre asamblatori, pe care le învățasem cu câteva zile în urmă, m-au impresionat până la capăt - și am stat la articolele lui DI HALT de la 23:00 până la 5 dimineața - după care m-am culcat mulțumit și fericit.Înțeleg esența programului nya în asamblare pentru microcontrolere.
Cum pot explica asta mai simplu? Cred că trebuie să pornim de la esență.
***
Nu vom intra imediat în detalii tehnice (vom vorbi despre ele în articolul următor) - doar realizați că sunt 3 personaje:
1. Microcontroler - Acesta este englezul Steve, care a ajuns la cel rusesc. Vin cunoaște perfect limba engleză, dar limba rusă nu înțelege - același cuvânt. Numai engleză. Odată ce ți-ai terminat slujba, va trebui să lucrezi fără greș să faci toate lucrurile despre care rușii te întreabă.
2. Asamblator - Aceasta este traducerea Vasya, a cărei mamă este engleză și mama sa este rusă. Vіn cunoaște perfect limba engleză și rusă.
3.Mi - Aceasta este rusă, înainte să vină englezii. Ei bine, atunci o avem =) În același timp, cunoaștem limba rusă perfect și (!!!) puțină engleză - nu prea mult, cu un vocabular.
***
Dacă apare o astfel de situație, englezul se va așeza în camera ta pe masă. Și stai la computer și citești această postare, de parcă apartamentul tău ar fi inundat! Ghinion axle! Vântul e în cameră, focul s-a transformat în fereastră... Ar fi rău să-l închizi! Tot ce trebuie să faci este să te ridici de pe scaun, să iei picioarele de pe sistem, să le bagi în papuci, să pui bucătăria în fața unora (bere) și să te lupți cu elementele. Și aici îți dai seama repede că în camera noastră se află un englez, care se ceartă cât e ceasul să strici! Și îmi spui atât de dulce: „Omule! Închide apartamentul, cu amabilitate, și apoi te poți așeza din nou pe canapea!” și stai și mă minunezi de tine și nu te deranja cu nimic! Puteți apăsa urgent pentru supă - dar tot nu veți înțelege! Apoi îl suni pe prietenul tău - transferă Vasily - el va veni și va sta la conducere cu englezul pe podea. Și spui - Traduce: „Steve, du-te și închide apartamentul și apoi stai pe canapea!” Traducătorul traduce în engleză - englezul înțelege și se duce să închidă măsuța, apoi vine și se așează pe pat.
În acest moment, este necesar să înțelegeți pur și simplu rolul asamblatorului în „Mi-Assembler-Controller”
Deci, cum poate fi înțeles asamblatorul? Citiți mai departe.
***

Deci, vedem o astfel de situație. Vasya spune - „Ascultă, ei bine, pe scurt, acesta este cel din dreapta - am uitat calculatorul acasă, am împărțit 56983 în 2 și îi spun lui Steve, așa că ai strâns pumnii de atâtea ori” și Vasya pe calculatorul respectă și i se pare lui Steve numele englezesc există "DIRECTIVĂ"- Această directivă este destinată lui Vasya, rezultat al cuceririi unora dintre acțiunile lui Steve.

O altă situație - îi spui lui Vasya „Spune-i lui Steve ca să poți derula de 28491 de ori” și Vasya îți traduce pur și simplu cuvintele în engleză. Se numeste OPERATOR

Este simplu - o directivă și un operator. Operatorul este mesajul tău direct, așa că poți lucra cu Stiva - Vasya doar pentru a-ți traduce ajutorul în engleză. Și Directiva este un mister pentru Vasya însuși - și Vasya va urma imediat ce i-au spus ei, apoi este important să vedem rezultatul pe care pare să îl aibă Steve.

Acum îl vom chinui pe englez în mod regulat! Dar, în primul rând, este necesar să-l cunoaștem mai bine pe traducătorul nostru Vasya. Este necesar să știi acum - Vasya te va auzi mereu fără greș - ce ți-au spus, ar trebui să te oprești. Calculatorul lui Vasya nu are zeci de cifre - dacă te uiți la fund cu jimmies, atunci 56983 \ 2 = 28491,5 - altfel totul va fi tăiat pentru Vasya - și poți număra doar numărul întreg - și nu contează va fi 28491.000001 altfel va fi 29999. Va fi 28491 în ambele picături. Nimic nu este rotunjit. Mai mult Informații importante despre Vasya. Vasya Zhorstoky - Nu-mi pasă de faptul că Stiv strânge de douăzeci de mii de ori. Ți-au spus - Vasya perev. În plus, nu este o neînțelegere prea mare - și după ce te-ai gândit să câștigi ceea ce ai cerut. Deci, dacă Stiv a murit în douăzeci și trei de mii cinci sute a treisprezecea zi a vieții sale, va fi în întregime vina ta.

Vlasna, lasă așa. În următoarea postare, vom săpa mai adânc - deocamdată este pur și simplu suficient să înțelegem acest lucru. Doar recunoașteți această situație și înțelegeți ce rol este și care este directiva pentru operator.
Și apoi vom încerca să numim totul prin numele său propriu și să ne imaginăm aproximativ cum funcționează un asamblator cu un microcontroler într-un mod matur.

Ce este necesar pentru a deveni un dezvoltator profesionist de programe pentru microcontrolere și pentru a atinge un astfel de nivel de stăpânire încât să puteți găsi cu ușurință și să obțineți un loc de muncă cu un salariu mare (salariul mediu al unui programator de microcontrolere în Rusia este pentru începutul anului 2015 soarta se conturează
80.000 de ruble).

ADĂUGA

Sintaxă: ADD reg1, reg2 Această comandă combină registrele reg1 și reg2, salvând rezultatul în registrul reg1. Schimbă poziția însemnelor H, S, V, N, Z, C.

ȘI

Sintaxă: AND reg1, reg2 Această comandă concatenează o operație logică între registrele reg1 și reg2, salvând rezultatul în registrul reg1. Schimbă poziția însemnelor S, V, N, Z.

ȘI EU

Sintaxă: ANDI hreg, număr Această comandă convertește operația „I logic” între registrul mare hreg și numărul constant (0…255), salvând rezultatul din registru. Schimbă poziția însemnelor S, V, N, Z.

BRBC

Sintaxă: BRBC bit, label Această comandă verifică starea biților din registrul SREG ($3F) și merge la eticheta etichetei, deoarece bitul este aruncat. Mitka a fost vinovat că a fost printre 63 de echipe sub echipa brbc.

BRBS

Sintaxă: BRBS bit, label Această comandă verifică starea biților din registrul SREG ($3F) și trece la eticheta etichetei, care are bitul setat. Mitka a fost vinovat că a fost printre 63 de echipe din echipa brbs.

BRCC

Sintaxă: BRCC bit, label Această comandă verifică ordinea de transfer (C) și trece la eticheta etichetei, dacă este eliminată.

BRCS

Sintaxă: BRCS bit, label Această comandă verifică ordinea de transfer (C) și trece la eticheta care este inserată.

BREQ

Sintaxă: BREQ bit, label Această comandă verifică marcajul zero (Z) și trece la eticheta care este inserată.

BRNE

Sintaxă: BRNE bit, label Această comandă verifică semnul zero (Z) și trece la eticheta etichetei, care nu este ștearsă.

C.B.I.

Sintaxă: CBI ioreg, bit Această comandă resetează registrul de intrare/ieșire ioreg ($00...$1F) la 0. Numărul de biți indică operandul de biți.

CLR

Sintaxă: CLR reg Această comandă șterge toți biții din registrul reg 0. Schimbă starea semnalelor S, V, N, Z.

C.P.

Sintaxă: CP reg1, reg2 Această comandă egalizează registrele reg1 și reg2 prin înlocuirea reg2 cu reg1. Registrele nu pot fi modificate. Schimbă poziția însemnelor H, S, V, N, Z, C.

IPC

Sintaxă: CPI hreg, număr Această comandă înlocuiește hreg cu constanta numerică pentru a elimina constanta din registru. Registrele nu pot fi modificate. Schimbă starea însemnelor H, S, V, N, Z, C. Comanda operează numai cu registrele R16…R31.

DEC

Sintaxă: DEC reg Această comandă schimbă regul registrului cu unul, scriind rezultatul înapoi în registru. Schimbă poziția însemnelor S, V, N, Z.

ÎN

Sintaxă: IN reg, ioreg Această comandă transferă registrul de intrare-ieșire ioreg la RON reg.

INC

Sintaxă: INC reg Această comandă incrementează regul registrului cu unul, scriind rezultatul înapoi în registru. Schimbă poziția însemnelor S, V, N, Z.

LD

Sintaxă: LD reg, longreg Această comandă transferă un octet de memorie de date (adresele din mijlocul memoriei sunt situate în registrul mai lung) în registrul reg (pentru modelul 1200).

LDI

Sintaxă: LDI hreg, număr Această comandă atribuie valoarea medie a numărului celui mai mare registru al hreg (comanda poate fi folosită și cu registrele R16…R31). Numărul trebuie să fie în intervalul 0...255.

LSR

Sintaxă: LSR reg Această comandă înlocuiește registrul logic reg. Când 0 biți sunt copiați în steaguri C, 7 biți sunt resetati la 0. Schimbă starea steagurilor S, V, N, Z, C.

ORI

Sintaxă: ORI hreg, număr Această comandă convertește operația „ABO logic” între registrul mare hreg și numărul constant (0...255), salvând rezultatul din registru. Schimbă poziția însemnelor S, V, N, Z.

OUT

Sintaxă: OUT ioreg, reg Această comandă suprascrie registrul de intrare-ieșire ioreg în locul registrului de registru.

RCALL

Sintaxă: RCALL label Această comandă apelează subprogramul indicat de eticheta etichetă, care este responsabilă pentru că se află în 2048 de comenzi ale comenzii rcall.

RET

Sintaxă: RET Această comandă încheie subrutina, mergând la comanda care urmează comenzii de apel.

RETI

Sintaxă: RETI Această comandă încheie rotația cu subprograme și setează permisiunea legală de întrerupere.

RJMP

Sintaxă: etichetă RJMP Tranziție video. Accesați secțiunea de program marcată cu etichetă, care poate fi localizată în 2048 de comanda RJMP.

SBI

Sintaxă: SBI ioreg, bit Această comandă inserează într-un bit registrul de intrare-ieșire ioreg ($00...$1F). Numărul de biți indică operandul de biți.

SBIC

Sintaxă: SBIC ioreg, bit Această comandă verifică bitul registrului de intrare-ieșire ioreg ($00...$1F) și omite următoarea comandă, deoarece acest bit este eliminat. Numărul de biți indică operandul de biți.

SBIS

Sintaxă: SBIS ioreg, bit Această comandă verifică bitul registrului de intrare-ieșire ioreg ($00...$1F) și omite următoarea comandă dacă acel bit este setat. Numărul de biți indică operandul de biți.

SEI

Sintaxă: SEI Această comandă inserează însemnul permisiunii zagal de a întrerupe.

SER

Sintaxă: SER reg Această comandă setează toți biții registrului de reg la 1. Schimbă starea semnalelor S, V, N, Z. Comanda poate fi folosită și cu registrele R16...R31.

SF

Sintaxă: ST reg, longreg Pentru modelul 1200, această comandă stochează registrul reg în memoria de date (adresele din mijlocul memoriei sunt situate în registrul mai lung), deci. depășit indirect în loc de RON reg în spatele adresei care este stocată în registru mai mult.

SUBI

Sintaxă: SUBI hreg, număr Derivă constanta numărului din cel mai mare registru hreg. Rezultatul este salvat în același registru. Schimbă poziția însemnelor H, S, V, N, Z, C. Comanda poate fi folosită și cu registrele R16…R31.

Bun venit tuturor amatorilor, hackerilor și doar oamenilor care iubesc tehnologia microprocesoarelor!

În ultimii ani, am acumulat un număr mare de sarcini diferite pentru programarea microcontrolerelor AVR. După ce am grupat pe scurt materialul deja pregătit, am decis să-l format în ceea ce părea o carte întreagă. La început, nu știam ce iese din mine, dar acum mă uit la material, având în vedere că formatul său este un ghid/dirijor din programarea asamblatorului meu în spivdnaya aproximativ 40/ 60%. Cartea evidențiază mai multe aspecte ale programării și, în orice caz, atinge toate modulele interne AVR. Mai presus de toate, ceea ce este important este că majoritatea programelor se bazează pe programe care funcționează efectiv și care au fost revizuite în timp.

Lucrul la carte nu mi-a cauzat dificultățile obișnuite și a mers destul de ușor. Este uimitor, dar acum, când a venit momentul să scriu un editorial, nu știu ce să spun... Literatura disponibilă a scris deja multe despre AVR și nu aș vrea să o repet. De asemenea, vreau să evit alimentarea cu curent de actualizare directă a microcontrolerelor de diferite tipuri (nu fără efort de voință). Ce vei pierde? Cred că voi explica, de ce asamblatorul în sine?

Și a devenit clar pentru toată lumea că principalul instrument al exploratorului de zi cu zi este, desigur, „S”. Este mai important, deoarece se respectă marea importanță a memoriei și este mai important să vorbim despre AVR, unde suportul compilatoarelor de nivel înalt a stat la baza arhitecturii. Când asamblatorul și „Si” sunt actualizate, am mai ales imagini cu o lopată și un excavator. Excavatorul finalizează marea lucrare a aceluiași tip de lucru și sapă rapid orice fel de groapă. Există un loc în care un excavator pur și simplu nu poate intra, fără a vorbi măcar despre mici șanțuri pliabile. Axa este aici și este nevoie de o lopată. De asemenea, este important să nu uitați că un excavator este întotdeauna acolo, iar o lopată este întotdeauna sub mână și nu aveți nimic de câștigat.

Acum vreau să fiu supărat pe noi înaintea celor care abia încep să câștige primii bani și pentru care, sper, această carte este asigurată. Ideea principală este că dezvoltarea microcontrolerelor poate fi abordată dintr-o perspectivă „cutie neagră”. Sunt categoric impotriva acestui model! Puteți programa cu succes hardware-ul computerului și puteți cunoaște fiecare comandă a procesorului, dar nu puteți studia microcontrolerele pe 8 biți fără să cunoașteți în detaliu structura lor internă. Pentru început, trebuie să creați cel puțin câteva proiecte în limbaj de asamblare și apoi să treceți la „C”. Îți promit că nu te vei putea bucura de un asemenea succes.

Și literalmente o grămadă de cuvinte despre beneficiile incluse în această carte. Toate butturile, care nu sunt menționate în mod specific în text, sunt, totuși, legate de modelul AVR ATmega8-16PU. Sistemul numeric adoptat de noi este zece. Titlurile tuturor subprogramelor sunt de același tip, conținând o descriere a registrelor care sunt verificate și alți parametri. Subprogramele conțin comentarii de raport care încep cu simbolul „;”. Etichetele, numele registrelor și compartimentelor de memorie, precum și mnemonicii de comandă, directivele de asamblare și funcțiile invocate sunt formate din mari scriitori. Constantele numerice, numele registrelor cu semnificație legală, registrele de intrare-ieșire și biții sunt scrise cu majuscule. De exemplu:

; Nume ale marilor scriitori: ; initiala – eticheta; temp - denumirea registrului; ldi, out, cbi, sbi - mnemonice de comandă; .equ, .def, .cseg, .org - Directive de asamblare; low(), high() – funcții implementate; ; Nume litere grozave:; LED, RAMEND – constante numerice; R16 – Am o semnificație juridică în registru; SPH, SPL, PORTB, DDRB – registre de intrare-ieșire; PB2 – bit pentru registrul de intrare-ieșire. (RAMEND) ieșire SPH, cbi PORTB, LED sbi DDRB, LED .......

Toate programele de asamblare pot fi traduse în AVR Studio IDE, indiferent de versiunile, chiar și cele mai vechi. Pentru creștere securitatea software-ului Compilatorul Delphi 2007 pentru Win32 este foarte recomandat, iar textele de ieșire pot fi recunoscute în versiunile anterioare, începând cu Delphi 6.

Textele tuturor programelor de asamblare au fost verificate cu atenție, dar a fost încă imposibil să se excludă prezența compromisurilor lui Drukar. Prin urmare, dacă sunteți la curent cu orice inexactități găsite, precum și orice obiecții asociate cărții, le puteți trimite la adresa mea de e-mail [email protected]

Compilatorul traduce Codurile de weekend de la limbajul de asamblare la codul obiect. Codul obiectului poate fi modificat în simulatorul ATMEL AVR Studio sau în Emulator ATMEL AVR In-Circuit. Compilatorul generează, de asemenea, cod care poate fi programat direct în microcontrolere AVR.

Compilatorul generează cod care conține link-uri.

Compilatorul funcționează Microsoft Windows 3.11, Microsoft Windows95 și Microsoft Windows NT. Mai mult, există o versiune de consolă pentru MS-DOS.

Un set de instrucțiuni pentru familia de microcontrolere AVR este descris pe scurt în acest document, pentru informații mai detaliate, vă rugăm să derulați în jos la Voi descrie totul instrucțiuni și documentație pentru un anumit microcontroler.

Codurile de weekend

Compilatorul funcționează cu fișiere de ieșire, ce să faceți cu instrucțiunile, etichetele și directivele. Instrucțiunile și directivele conțin de obicei unul sau mai mulți operanzi.

Rândul de cod nu este de vină pentru că are peste 120 de caractere.

Orice rând poate începe cu un semn, care este un set de simboluri cu o casetă dublă, care se termină. Semnele sunt folosite pentru a indica locul, în care ceremonia este transmisă sub ora tranziției, precum și pentru a da numele celor schimbătoare.

Rândul de intrare poate avea una dintre cele patru forme:

[etichetă:] directivă [operandi] [Comentariu][etichetă:] instrucțiuni [operandi] [Comentariu]cometariuCusătură goală

Comentariul ia următoarea formă:

; [Text]

Pozițiile la brațele pătrate nu sunt neapărat flexibile. Textul de după liniuță (;) și până la sfârșitul rândului este ignorat de compilator. Etichetele, instrucțiunile și directivele sunt descrise mai detaliat mai jos.

Aplica:

etichetă: .EQU var1=100; Setează var1 la 100 (Aceasta este o directivă). EQU var2=200; Setează var2 la 200

test: test rjmp; Ciclu continuu (Această instrucțiune); Un rând cu un singur comentariu

; Încă un rând cu un comentariu

Compilatorul nu se asigură că etichetele, directivele, comentariile sau instrucțiunile sunt în coloana următoare a rândului.

Instrucțiuni pentru procesorul AVR

Mai jos este un set de comenzi pentru procesoarele AVR; o descriere detaliată a acestora poate fi găsită în Cartea de date AVR.

Instructiuni aritmetice si logice

Mnemonice

Operandi

Descriere

Operațiune

Prapori

Cicluri

Rd,Rr

Abonament fără transfer

Rd,Rr

Subsumarea cu transferuri

Rd = Rd + Rr + C

Rd,Rr

Zi fără reprogramare

Rd,K8

constante Vidnimannya

Rd,Rr

Ziua amânării

Rd = Rd - Rr - C

Rd,K8

Constantele revizuite după cum au fost transferate

Rd = Rd - K8 - C

Rd,Rr

I logic

Rd,K8

I logic cu o constantă

Rd,Rr

ABO logic

Rd,K8

ABO logic cu o constantă

Rd,Rr

Oprire logică ABO

Inversarea biților

Schimbarea semnului (cod suplimentar)

Rd,K8

Setați biții la registru

Rd,K8

Lăsați bitul(ele) la registru

Rd = Rd ($FF - K8)

Incrementează valorile registrului

Decrementează valorile registrului

Verificarea pentru zero și negativitate

Ștergeți registrul

Setați registrul

Rdl,K6

Îndoiți constanta și cuvântul

Rdh: Rdl = Rdh: Rdl + K6

Rdl,K6

Ridicați o constantă într-un cuvânt

Rdh: Rdl = Rdh: Rdl - K 6

Rd,Rr

Mai multe numere nesemnate

R1: R0 = Rd * Rr

Rd,Rr

Înmulțirea numerelor prin semn

R1: R0 = Rd * Rr

Rd,Rr

Creșterea unui număr cu semn și a unui număr fără semn

R1: R0 = Rd * Rr

Rd,Rr

Înmulțirea numerelor de lovituri nesemnate

R1: R0 = (Rd * Rr)<< 1

Rd,Rr

Înmulțirea numerelor de lovituri prin semn

R1: R0 = (Rd * Rr)<< 1

Rd,Rr

Înmulțirea unui număr fracționar cu semn și cu un număr fără semn

R1: R0 = (Rd * Rr)<< 1

Instrucțiuni pentru curățare

Mnemonice

Operandi

Descriere

Operațiune

Prapori

Cicluri

Tranziție Vidnosny

Tranziție indirectă la ( Z)

Extinderea tranziției indirecte la ( Z)

STACK = PC+1, PC(15:0) = Z, PC(21:16) = EIND

Subprogramele Newsweek

STACK = PC + 1, PC = PC + k + 1

Wiklik indirect ( Z)

STACK = PC +1, PC = Z

Extensii de mediere Wiklik ( Z)

STACK = PC+1, PC(15:0) = Z, PC(21:16) =EIND

subprogramele Viklik

STACK = PC +2, PC = k

Revenind la subprograme

Întorcându-se

Rd,Rr

Egal, săriți ca egali

dacă (Rd ==Rr) PC = PC 2 sau 3

Rd,Rr

Fa diferenta

Rd,Rr

Comparați cu ceea ce a fost mutat

Rd,K8

Egal cu constanta

Rr,b

Omite bitul de registry de curățare

if(Rr(b)==0) PC = PC + 2 sau 3

Rr,b

Omiteți dacă bitul de registru este setat

if(Rr(b)==1) PC = PC + 2 sau 3

P,b

Sari peste bit la portul de purificare

if(I/O(P,b)==0) PC = PC + 2 sau 3

P,b

Omiteți dacă bitul de port este instalat

if(I/O(P,b)==1) PC = PC + 2 sau 3

s,k

Du-te, ca însemn al purificărilor SREG

if(SREG(s)==0) PC = PC + k + 1

s,k

Mergeți la ensign SREG instalat

if(SREG(s)==1) PC = PC + k + 1

Du-te într-un singur loc

dacă(Z==1) PC = PC + k + 1

Mergi la mai mult de unul

dacă(Z==0) PC = PC + k + 1

Mergeți acolo unde este instalat transferul

dacă(C==1) PC = PC + k + 1

Du-te, dacă transferul a fost anulat

dacă(C==0) PC = PC + k + 1

Mergeți la unul sau mai multe

dacă(C==0) PC = PC + k + 1

Du-te la ceva mai puțin

dacă(C==1) PC = PC + k + 1

Treci la minus

dacă(N==1) PC = PC + k + 1

Accesați Yakshcho Plus

dacă(N==0) PC = PC + k + 1

Accesați mai multe (semnul si)

dacă(S==0) PC = PC + k + 1

Du-te la yakscho mai puțin (semnul si)

dacă(S==1) PC = PC + k + 1

Treceți la faptul că a fost instalată comanda de transfer intern

dacă(H==1) PC = PC + k + 1

Mergeți ca un semn al transferului intern al curățării

dacă(H==0) PC = PC + k + 1

Du-te, deoarece ensign T este instalat

dacă(T==1) PC = PC + k + 1

Du-te, ca însemn T purificări

dacă(T==0) PC = PC + k + 1

Treci la faptul că steagul noului titlu a fost instalat

dacă(V==1) PC = PC + k + 1

Du-te, ca semn al re-purificării purificărilor

dacă(V==0) PC = PC + k + 1

Mergeți atâta timp cât sunt permise întreruperi

dacă(I==1) PC = PC + k + 1

Du-te, pentru că zona este împrejmuită

dacă(I==0) PC = PC + k + 1

* Pentru operațiunile de acces la date, sunt specificate un număr de cicluri pentru accesul la memoria internă de date și nu este corect în timpul funcționării din memoria externă. Pentru instrucțiunile CALL, ICALL, EICALL, RCALL, RET și RETI, este necesar să adăugați trei cicluri plus două cicluri pentru curățarea pielii în controlerele cu un PC mai mic de 16 biți (memorie de program 128KB). Pentru dispozitivele cu o memorie de program de 128 KB, adăugați cinci cicluri plus trei cicluri pe piele.

Instrucțiuni de transfer de date

Mnemonice

Operandi

Descriere

Operațiune

Prapori

Cicluri

Rd,Rr

Copiați registrul

Rd,Rr

Copiați câteva registre

Rd+1:Rd = Rr+1:Rr, r,d par

Rd,K8

Prefă-te constanta

Rd,k

Rd,X

Rd,X+

Rd=(X), X=X+1

Rd,-X

X = X-1, Rd = (X)

Rd,Y

Rd,Y+

Rd=(Y), Y=Y+1

Rd,-Y

Y = Y-1, Rd = (Y)

Rd,Y+q

Rd,Z

Rd,Z+

Rd=(Z), Z=Z+1

Rd,-Z

Z = Z-1, Rd = (Z)

Rd,Z+q

Economii directe

X,Rr

Economii indirecte

X+,Rr

(X) = Rr, X = X+1

-X,Rr

Y,Rr

Economii indirecte

Y+,Rr

Economii indirecte cu post-increment

(Y) = Rr, Y=Y+1

-Y,Rr

Economii indirecte cu pre-decrementare

Y=Y-1, (Y) = Rr

Y+q,Rr

Z,Rr

Economii indirecte

Z+,Rr

Economii indirecte cu post-increment

(Z) = Rr, Z=Z+1

-Z,Rr

Economii indirecte cu pre-decrementare

Z = Z-1, (Z) = Rr

Z+q,Rr

Economii indirecte din substituție

R0 = ( Z)

Rd,Z

Rd = ( Z)

Rd,Z+

Rd = ( Z), Z = Z +1

R0 = (RAMPZ: Z)

Rd,Z

Rd = (RAMPZ: Z)

Rd,Z+

Rd = (RAMPZ: Z), Z = Z +1

Economii în memoria programului

(Z) = R1:R0

Economii crescute în memoria programului

(RAMPZ: Z) = R1:R0

Rd,P

Port de citire

P,Rr

Înregistrează în port

Intrarea în registru pe stivă

Transferarea registrului din stivă

* Pentru operațiunile de acces la date, sunt specificate un număr de cicluri pentru accesul la memoria internă de date și nu este corect în timpul funcționării din memoria externă. Pentru instrucțiunile LD, ST, LDD, STD, LDS, STS, PUSH și POP este necesar să adăugați câte un ciclu plus câte un ciclu pentru curățarea pielii.

Instrucțiuni robot cu biți

Mnemonice

Operandi

Descriere

Operațiune

Prapori

Cicluri

Rotire logica spre stanga

Rd(n+1)=Rd(n), Rd(0)=0, C=Rd(7)

Mâna dreaptă logică

Rd(n)=Rd(n+1), Rd(7)=0, C=Rd(0)

Mișcare ciclică cu mâna stângă prin C

Rd(0)=C, Rd(n+1)=Rd(n), C=Rd(7)

ZSUV ciclic cu mâna dreaptă prin C

Rd(7)=C, Rd(n)=Rd(n+1), C=Rd(0)

Aritmetică zsuv dreptaci

Rd(n)=Rd(n+1), n=0,...,6

Rearanjare zoshit

Rd(3..0) = Rd(7..4), Rd(7..4) = Rd(3..0)

Ensign instalat

Purificarea steagului

P,b

Setați bitul la port

P,b

Curăță bit la port

Rr,b

Rd,b

Introduceți bitul din T în registru

Instalați steagul transferat

Ștergeți steagul transferat

Introduceți semnul unui număr negativ

Ștergeți semnul unui număr negativ

Pune steagul la zero

Ștergeți steagul de zero

Instalați steagul și întrerupeți

Ștergeți steagul și întrerupeți

Introduceți însemnul numărului cu semnul

Ștergeți steagul semnului numeric з

Instalați steagul de re-desemnare

Ștergeți steagul refacerii suprafeței

Instalați ensign T

Ștergeți steagul T

Instalați panoul de transfer intern

Ștergeți steagul transferului intern

Fara operatii

Spathi (alimentare cu energie zmenshiti)

Urmați descrierea instrucțiunilor

Resetați temporizatorul watchdog

Urmați descrierea instrucțiunilor

Asamblatorul face distincție între majuscule și minuscule.

Operanzii pot fi de acest tip.

 

 

Tse tsikavo: