Bună ziua dragi amatori radio!
Vă urez bun venit pe site-ul "Radio Amateur"
Sistemele de numerotare folosite pentru a crea programe pentru microcontrolere
ne vrem sau nu, dragi cititori, dar a învăța elementele de bază ale programării microcontroler, vom avea un pic se amestecă lor „materia cenușie“, a reveni la locul de „bile“, care se extind uneori dincolo de „role“, lubrifiate (puteți Snickers) și împinge în dvs. memoria adimensional (dar nu prea departe), unele noi cunoștințe, fără de care nu se poate face.
Deci, sistemul de numere, ce este și de ce trebuie să-l cunoaștem.
Ca întotdeauna, definiție inteligentă:Sistemul numeric este o metodă simbolică de scriere a numerelor, reprezentând numere folosind semne scrise (gândiți-vă "Unu" și scrieți "1").
Deși se întâmplă, mai ales în cazul oamenilor cu labele de grămadă, că se gândesc la "Unu" și scriu "O". În medie, un tipic rus este familiarizat cu două astfel de sisteme, dar utilizează doar unul în practica sa zilnică (mai mult și nu este necesar). Știm cu toții sistemul numeric roman sub numele de "cifre romane" (încă din timpul școlii) și, nativ și apropiat de noi, sistemul numeric zecimal.
De ce am început brusc să vorbim despre "tsiferki"? Faptul că probabil ați ghicit deja din articolele anterioare, microcontrolerul nu înțelege seturile noastre obișnuite de numere (amintiți-vă - toate comenzile pentru ea constă dintr-un set de doar două numere: zero și unu), precum și necesitatea de a comunica cu el.
Pentru a comunica cu microcontrolerul (și cu toate microprocesoarele, tehnologia digitală), există un sistem de numere binare. În sistemul binar toate numerele sunt scrise cu numai două caractere - "0" și "1". De ce tehnologia digitală este aleasă tocmai sistemul de numere binare. De fapt, tehnologia digitală nu are propriile "creiere", iar ei recunosc numerele nu prin ochi, ci prin nivelurile de tensiune la intrările lor. Pentru a distinge între "0" și "1", două niveluri de tensiune sunt suficiente (și dacă utilizați sistemul de numere zecimale, ai avea nevoie deja de zece niveluri de tensiune).
Se consideră că:
- cifra "1" corespunde unui nivel ridicat de tensiune
- cifra "0" corespunde unui nivel de tensiune scăzut.
De exemplu, dacă „picior“, a microcontrolerului (la o tensiune de sursa de alimentare de 5 volți) aplică 5 volți, atunci el va înțelege că acest lucru este „1“, iar în cazul în care nu se depune și a închide „piciorul“ pe „teren“, el va înțelege că acesta este "0". De asemenea, în ordinea inversă. În cazul în care dispozitivul trebuie să transmită un „1“, se pune pe ei „picioare“ de înaltă tensiune - 5 volți, iar dacă „0“ - joasă tensiune - 0 volți. Asta înseamnă că recunoașterea cifrelor 0 și 1 în tehnologia digitală are loc în două niveluri de semnal.
Este interesant faptul că ieșirea microcontrolerului poate avea și o a treia stare - și nu "0" și nu "1", ci așa-numita "stare Z". Aceasta este, pe "picior" și nu "mare", și nu "joasă" de tensiune. În acest caz, ieșirea microcontrolerului este dezactivată. Fizic, în «Z- de stat“, concluzia, desigur, nici unul dintre ele nu este dezactivat, doar pe ea în acest moment este setat de tensiune, care nu corespunde cu joasă sau înaltă tensiune. Faptul este că o tensiune înaltă, la care microcontrolerul determină fără echivoc faptul că acesta este "1", nu corespunde strict la 5 volți și poate fi într-un anumit interval: de la 2,5 la 5 volți. O tensiune joasă, la care microcontrolerul determină în mod unic că este "0", nu trebuie să fie mai mare de 0,5 volți. Dacă tensiunea de pe „tulpina“ a microcontrolerului va fi mai mare de 0,5 volți, dar mai mică de 2,5 volți, dispozitivul nu va recunoaște „0“ acest lucru, sau „1“. Aceasta este a treia stare de "stare Z" - tensiunea pe "picior" pare să fie, dar microcontrolerul nu reacționează la ea în nici un fel.
În tehnologia digitală, un nivel de tensiune ridicat corespunzător "1" se numește unitate logică. iar un nivel de tensiune scăzut corespunzător "0" se numește zero logic.
Să vedem cum corespund numerele sistemului zecimal cu numerele din sistemul binar:
1 - 1
2 - 10
3 - 11
5 - 101
10 - 1010
200 - 11001000
Traduceți numărul din sistemul zecimal în binar și înapoi, foarte simplu. Este suficient să aveți un calculator cu funcții de inginerie sau să utilizați calculatorul standard "Windows", traducându-l în "modul de inginerie":
A nu se confunda cu numărul de sistem zecimal numere de sistem binar în trecut, la sfârșitul numărului de atasaza simbolul „B“
200 - 11001000в
În limbile de programare, astfel de simboluri sunt adăugate la începutul numărului.
200 - 0b11001000. sau
200 - # b11001000
Numerele zecimale din limbile de programare sunt scrise ca de obicei, fără adăugări. Dar într-un "limbaj de programare", nu se poate adăuga litera "D"
200D - 0b11001000
Și totuși, dacă folosim numerele în sistemul zecimal, spunem, de exemplu, "cinci", atunci în sistemul binar nu ar trebui să vorbim "o sută", ci "unul cu zero".
Operații aritmetice în notație binară. Într-un sistem binar cu numere, puteți obține același lucru ca în zecimală:
- adăugați
- scădea
- multiplica
- împărțiți
Firește, pentru a efectua operații aritmetice pe numere binare, putem folosi cu succes calculatorul, dar să știm cum să facem acest lucru cu un stilou pe hârtie este util, util. Considerăm, de exemplu, numai două operațiuni - adunarea și multiplicarea. Ele sunt mai ușor de înțeles, iar în viitor, dacă este necesar, atunci luați în considerare operațiile rămase (dar o puteți face și dumneavoastră).
Adăugarea.
Adăugarea se face atât în coloană, cât și cu numere zecimale.
Reguli care trebuie respectate atunci când se adaugă:
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 10 - în acest caz, procesul de adăugare este, de asemenea, ca, de exemplu, și în adăugarea de 5 + 5 în sistemul zecimal - „unu plus unu este egal cu zece, zero, scrie o“ minte „a mers“ Ceea ce a plecat " la minte ", apoi transferăm la nivelul următor.
Pentru un sistem binar: "unul plus unul este un zero, zero este scris, unul" pentru minte "este plecat".
De exemplu:
- în zecimal: 5 + 5 = 10
- în binar: 101 + 101 = 1010. și acum în coloană:
101
+
101
Începeți de la dreapta la stânga (ca de obicei):
1 + 1 = 10. 0 scrie, 1 pe "mintea a mers" (... .0)
0 + 0 = 0 + 1 de la "ia minte" = 1 (... .10)
1 + 1 = 10 și scrieți 10 (1010)
și obținem rezultatul: 1010, care este de 10 în sistemul zecimal.
Multiplicarea.
Reguli care trebuie respectate la multiplicare:
0x0 = 0
0x1 = 0
1h0 = 0
1x1 = 1
De exemplu:
- în sistemul zecimal:
5x5 = 25
- în sistemul binar:
101x101 = 11001
Și acum într-o coloană (toate conform legilor obișnuite ale matematicii):
101
x
101 ---
101 - înmulțiți 1 cu 101
000 - înmulțiți 0 cu 101
101 - înmulțiți 1 cu 101
---
11001
- Adăugați toate liniile și obțineți rezultatul 25.
Interesant, atunci când programarea în multiplicarea microcontroler (nu toate microcontrolere pot multiplica în mod independent, dar toate sunt posibilitatea de a adăuga și scădere), rezultatele nu sunt așa cum am făcut mai sus, iar pe de altă parte - mult mai ușor. Și cum să facă acest lucru, aflăm în procesul de învățare comenzi microcontroler.
În plus față de sistemul zecimal și binar, în tehnologie digitală încă o dată, al treilea, sistemul numeric - hexazecimal este folosit. În notație hexazecimală, toate numerele sunt desemnate nu zece caractere, zecimal, și nu două ca în binar și șaisprezece: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. să sistem de numere de potrivire hexazecimal în raport cu zecimal și binar:
1 - 1 - 1
5 - 101 - 5
10 - 1010 - A
200 - 11001000 - C8
Pentru a indica numerele hexazecimale în final, se adaugă litera latină "H":
1H, 5H, AN, C8H
Pentru a scrie numere hexazecimale în limbaje de programare, acestea sunt adăugate la începutul „Oh“, sau semnul „$“ (marcate aici „verde“):
С8 = С8Н = ОхС8 = $ С8
De ce în limbile de programare sunt folosite deja trei tipuri de sisteme de numere:
- zecimal
- binar
- Hexadecimal
oricum, în cursul traducerii programului în cod mașină, acestea iau numai sub forma unui sistem binar? În principiu, este posibil de a gestiona numai cifre zecimale - pentru noi va fi mai convenabil, sau binar - nu la chin numerele de transfer compilator în sistem binar de la alte sisteme. Dar problema este că în sistemul de comenzi și instrucțiuni care urmează să fie efectuate de către microcontroler în diferite cazuri, trebuie să utilizeze numere în binar și hexazecimal. În unele cazuri, pentru claritate, dar în alte cazuri - pentru a nu complica viața ta (dacă există ceva cunoscut ca un număr în hexazecimal, atunci de ce fac mișcări inutile și traduce acest număr în sistemul zecimal, dacă numai pentru claritate). Dar vă asigur că doar la început veți simți un oarecare disconfort atunci când se utilizează sisteme binare și hexazecimale număr, după o perioadă scurtă de timp nu va mai acorde o atenție la ea. Și poate un alt sistem de număr vă bucura, astfel încât în viața de zi cu zi se deschide. Cool va fi, spune în magazin pentru a vânzătorului - "Mi-ai dat 3FF ruble." Apropo, fanii de sistem de numerotare „netraditionala“, chiar a crea un ceas digital care afișează ora în binar (Cât de mult timp? 1-1-0-0-1-0-1-1).
În următorul articol, vom analiza încă o operațiune logică mai "pădure întunecată". Dar după aceea vom trece acum la studiul dispozitivului de microcontrolere.