Sunteți pe pagina 1din 53

Programarea Microcontrolerelor

18 ianuarie 2023

Tema:

De asemenea și buclă de curent.

Procesoarele pot fi divizate în următoarele componente:

1. După conceptul arhitect MiSP


a. Von Neymann – majoritatea procesoarelor a calculatoarelor inclusiv
până la Pentium 4. Arhitectura are memorie comună pentru
instrucțiuni și date, adică pe parcursul executării programului ea
permite modificarea codului programului. Neajuns – durata executării
instrucțiunii este destul de lungă și ocupă mai multe tacte de
generator.
b. Harward – este tipică pentru microcontrolere și la nivel fizic, și la nivel
fizic, memoria pentru programe este fizic pentru date și pentru codul
de program. Aceasta permite simultan de selectat instrucțiunea și
datele într-un singur ciclu de lucru, rezultă că viteza de executarea
este mai înaltă.
2. După setul de instrucțiuni
a. CISC – set complet de instrucțiuni
b. RISC – set redus de instrucțiuni

De obicei procesoarele cu set complet de instrucțiuni necesită binaritate mai


redusă a instrucțiuni de obicei 8bit mai rar 16bit, iar această listă de instrucțiuni
poate fi de 100-200 instrucțiuni. Instrucțiunea se execută în mai multe tacte de
generator. Controlerele din familia i8051 o instrucțiune se execută în 12 tacte de
generator.

Calculatoarele cu set redus de instrucțiuni are set de instrucțiuni cu binaritate


mai mare de 12bit – 16bit și cu un set de 40-50 instrucțiuni. Microprocesoarele
din familia ATmega8 instrucțiunile se execută într-un singur tact.

Dispozitive periferice în componența microcontrolerului:

1. Generator de sincronizare, de obicei el poate fi realizat în mai multe


variante
a. RC intern
b. RC extern
c. Oscilator de cuarț
2. Timer cu numărător, numărul minimal este 2 și numărul maximal poate fi 4.
a. Generator intern
b. Generator extern
c. Impuls extern
d. Ieșire PWM – la familia AWR, ieșirea poate fi cu modulare PWM,
poate forma impulsuri la terminale externe la microcontroler,
impulsurile și pauzele pot fi controlate cu ajutorul programului.
3. USAR – interfața sincronă serială
a. RS232
b. USB
c. RS485
4. ISC* (în ATmega16 și mai performante, la nivel hard este incorporată și
această interfață)
5. SPI (la o bună parte de microcontrolere poate servi pentru înscrierea
codului de program în memoria permanentă a sa)
6. Porturi I/O: (în microcontrolere acesta poate avea mai multe funcții)
a. I/O a interfețelor proprii a microcontrolerului USART, PWM
b. I/O pentru intrarea întreruperilor externe hard.
c. Extinderea memorii ROM sau RAM
Intel i8051/52 arhitectură clasică care a stat la baza formării altor tipuri de
microcontrolere.
1. AT89C51/AT89C52 - Diferența lor este că ..51 conține 2 timere iar ..52
conține 3.
2. ATmega8/16/32/64/128
a. 8bit – versiune limitată a microcontrolerului, 1 port complet și 2
limitate, 1 port serial
b. 16/32 – în configurare clasică, 4 porturi complete de 8bit, 1 port serial
c. 64/128 – configurare deplină, extinsă, 6 porturi jumătate, 2 porturi
seriale
19 ianuarie 2023

Tema:

1. Obiectul tehnologic de controlat


2. Obiect de prelucrarea informației (dispozitiv de calcul care face operații
asupra codului recepționat după un algoritm prescris)
3. Circuitul de reacție
4. Element de efectuarea operațiilor matematice asupra semnalului de pe
obiect și circuit de reacție
5. Sistem de extragere, prelucrare și transportarea informației a obiectului.
6. Amplificatoare și elemente de acționare asupra obiectului

Bloc. 5

1. Senzor care transformă mărimea fizică în semnal electric


2. Schemă electronică pentru prelucrarea semnalului de pe senzor
3. Dispozitiv pentru codificarea semnalului (convertor analog-cod)
4. Linia de transportare a informației (linie de legătură)

Bloc. 2 Sistem processoric

Bloc. 6 Elementele și dispozitive de acționare

În calitate de sarcină, el poate conține:

- Releu
- LED optocuplu
- Motor electric

Reprezentați tipici din industria alimentară:

1. Panificare
2. Prelucrarea laptelui
3. Conserve

Reprezentanți tipici din industria agricolă:

1. Stații de incubare
2. Ferme obișnuite
3. Ferme de creșterea peștelui

Reprezentanți tipici din industria grea:

1. Producerea cimentului
2. Producerea sticlei
3. Prelucrarea lemnului
4. Producerea aparatajului electronic

Teme pentru Teza de Licență:

1. Cuptor cu comandă numerică


2. Bloc de automatizare pentru incubator
3. Sursă de alimentare pentru laborator
4. Ceas cu orarul sunetelor
5. Stand pentru ridicarea Caracteristicii Volt Amper a dispozitivelor cu
semiconductor.
19 ianuarie 2023

Tema: Specificul arhitecturii microcontrolerelor (Hard + Soft)

Partea hard:

1. Generator de sincronizare
a. Extern – i8080, i8086, z80, ...
b. Intern + rezonator cu cuarț extern/RC extern – cea mai răspândită și
des utilizată, însă în ziua de azi ea cu încetul pierde actualitatea
c. RC intern + oscilator cu cuarț extern – ea este utilizată în
microcontrolerele moderne, în deosebi pentru familia PIC și AVR,
comutarea acestui regim permite de configurat cu metodă de
program, pe cristalul acestui chip este memorie de tip flash care
răspunde de configurarea microcontrolerului. De obicei ele se
numesc Fuse Bit, și pot fi constituite din 2 sau 4 Octeți.
2. Porturile I/O:
a. I/O digitale bidirecționale – în interiorul schemei tehnice se pun
rezistențe pull-up + pull-down
b. I/O alternative – bitul unui cod îndeplinește 2 sau mai multe funcții
(1. ca port I/O, 2. ca intrare sau ieșire specializată a componentelor
interne a procesorului). Poate fi: I/O a portului serial, intrare pentru
întrerupere din exterior, intrare pentru timer numărător, ieșirea PWM
a timerelor.
c. I/O digital + intrare pentru convertorul analog-cod (ADC)
3. Sistemul de întrerupere – la primele procesorul i8086 conține doar o intrare
de întrerupere, iar dacă trebuie de deservit mai multe elemente se
utilizează circuite exterioare. Sistemul de întrerupere conține un dispozitiv
cu mai multe nivele:
a. Intrări exterioare + ieșire interne (intrările interne, port serial, timer,
interfața I2C sau ceas de veghe intern). Fiecare nivel în memoria de
programe are o adresă fixată în spațiul memoriei pentru programe. Ca
exemplu i8051: adresa 0h rezervată pentru Reset, tipic pentru orice
procesor; adresa 03h – intrarea pentru evenimentul extern; adresa
0Bh – ieșirea timer-ului 0; adresa 13h – este a 2-a intrare pentru
întrerupere din exterior; adresa 23h - este legată cu interfața serială
UART; 28h – codul de program. Întreruperi:
i. Poate fi activată la frontul crescător
ii. Poate fi activată la frontul descrescător
iii. Poate fi activată după nivel 0 logic
iv. Poate fi activată după nivelul 1 logic
4. Timer/Contor numărător – dispozitiv multifuncțional care asigură
următoarele regimuri:
a. Numărător simplu – de obicei când conținutul lui trece din 1 logic în 0
generează întreruperea, această activare poate fi doar prin start
special din program
b. Generator – fără start special din program
c. Generator cu reglarea coeficientului de umplere PWM – acest regim
este tipic pentru controlerele din familia AVR
d. Captor al coeficientului de umplere PWM
5. Interfața serială UART – deseori această interfață este o componentă
obligatorie care permite funcționarea în:
a. regim asincron, care permite de dus evidența la control bit, tradițional
lungimea este de 8 biți, iar numărul de stop biți este fixat 1.
b. regim sincron – în unul din terminalele TxD/RxD oferă transmiterea
datelor iar altul recepționarea datelor
c. Programarea în regim ISP – acest regim este utilizat intens în
controlerele moderne deoarece nu este necesar de extras chipul din
plachetă pentru a schimba codul de program.
6. ADC (Analog Digital Converter):
a. La intrare este încorporat cu ADC + MX (multiplexor analogic care
poate avea 6 sau 8 intrări care permite utilizarea unui singur
generator ADC și deservirea mai multor dispozitive) cu metodă de
program multiplexorul este start-at sau oprit
b. MX + ADC + Amplificator programat – la nivel de structură (tipic
pentru ATmega64/128 și alte versiuni mai avansate)
7. WDC ceasul de veghe (Watch Dog Clock) este prevăzut pentru a evitat
situații de blocare a programului. Reprezintă un timer suplimentar realizat
hard, care periodic se resetează. Dacă în timpul ciclului de numărare nu
primește semnal de resetare, el trimite semnal de reset a
microprocesorului
a. WDC + RTC (Real Time Clock)
8. Memoria
a. EEPROM pentru programe (memorie flash) (10 000 Rd/Wr)
b. SRAM (Static RAM) – în componența sa se include Registrele
Funcțiilor Speciale R.F.S. + Memorie p/u Date
c. Memorie Flash – rezervată exclusiv pentru date. Necesitatea ei este
la deconectarea alimentării să fie menținut conținutul (Cicluri de
rescriere 100 000 Rd/Wr)
9. Power management
a. Formează semnalul Reset când tensiunea de alimentare scade sub
limita critică Ucc<Ulim
b. Regim de consum redus de putere (idle mode) – în acest regim se
stopează executarea programului și se deconectează consumatorii
principali de putere iar generatorul rămâne, ceea ce duce la un
consum de 5-10 ori mai redus
c. Regim de hibernare – regim de micro-consum, microcontrolerul
practic se stopează, iar curentul de consum se limitează la 10 micro
Amperi, el permite de exclus din schemă întrerupătorul. Din acest
regim microprocesorul iese prin Reset sau întrerupere externă.
Partea SOFT:

1. Assembler x51
2. Limbajul „C”:
a. regim Dos în AVR Studio (ver. 4.00)
b. CodeVision (ver. 2.05)
c. CR551/AVSim

26 ianuarie 2023

Tema:

Specificul instrucțiunilor microcontrolerelor:

1. Familia x51 (111 instrucțiuni)


a. Spre deosebire de i8080 și i8086 au instrucțiuni care permit operarea
nu doar cu octeți ci și cu biți separați
b. Varietate mai largă a instrucțiunilor de salt:
i. Salturi scurte ± 127 octeți înainte sau înapoi
ii. Salt mediu ± 2048 octeți
iii. Salt lung ± 0..64kB – pentru procesoarele i8080 și i8086 conține
doar acest tip de salt
c. Adresare a memoriei RAM
i. Metodă cu adresare directă
ii. Metodă cu adresare indirectă
d. Instrucțiuni care permit gestionarea echipamentului intern a
microcontrolerului S.F.R. – gestionarea dezvoltată a registrelor cu
funcții speciale
i. Ca port I/O
ii. Ca celulă de memorie
e. Instrucțiuni de schimb a datelor
i. Permite schimbul de valori între 2-ă registre sau 2-ă celule de
memorie
ii. Permite schimbarea conținutului între tetradele registrelor –
comodă la convertirea a diferitor date
f. Recodarea după tabel – în spațiul de memorie se rezervează un
anumit masiv de date și el conține o serie de instrucțiuni care permit
de extras aceste date după un indicator de adrese
g. Instrucțiuni de înmulțire și divizare a 2 numere la nivel Hard
h. Pentru familia x51 atunci aici sunt instrucțiuni de comutare a
bancurilor de registre – în componența stivei ea este asemănătoare
cu procesorul i8080 (în componența lui este Registrul A, Registrul Aux
B, și un set de registre auxiliare de la R1 ... R7 a câte 4 bancuri.
Registrul R0 și R1 funcția alternativa este ca indicator pentru
adresarea directă a celulelor de RAM)
i. Conține 8 celule de RAM care permit adresarea separată a biților
j. Registrele de Funcție Specială (S.F.R – Special Function Registres)
pot fi reconfigurate pe parcursul executării programului, ca exemplu
rata de execuție a programului poate fi modificat. Prin aceste registre
pot fi reconfigurate timer-ele, adică de schimbat regimul de lucru a
timer-ului și modul de reacționare la semnalul de întrerupere.
2. Familia AVR (129/131 instrucțiuni) – orice instrucțiune ocupă 2 octeți
a. 32 Registre de uz general care nu este divizat în bancuri de 8 biți ci ca
un fișier de registre
b. R26, R27, R28, R29, R30, R31 – pe lângă utilizarea lor ca uz general
mai este folosit pentru indexarea memoriei pentru adresarea 64kB de
memorie (R26, R27) – X; (R28, R29) R30, R31
c. Setul instrucțiunilor de salt este mai extins, existența unor
instrucțiuni care permit modificarea registrelor de uz general în
procesul executării
d. Setul de chemarea a subrutinelor este mai extins care poate fi
corelată cu starea procesorului
e. Instrucțiuni de gestionarea timer-e-lor și cu regimul PWM a lor
f. Instrucțiuni de gestionare a consumului de putere 6 la număr
g. Operații de divizare și înmulțire la nivel hard
3. Biții de configurare de tip „Fuse”, regim de programare ISP, sectorul Boot
Loader.
a. Biții de configurare în dependență de tipul microprocesorului pot fi
2/4 octeți
i. O parte din acești biți răspund pentru configurarea timer-ului în
ce regim să funcționeze
ii. O parte din acești biți răspund pentru configurarea regimului
PWM a timer-e-lor
iii. O parte din acești biți răspund pentru configurarea regimului la
UART
iv. O parte din biți răspund pentru configurarea modului pentru
ceasul de veghe
v. Configurarea modului de funcționare a Reset-ului (sau de la
terminal exterior, ceas de veghe sau modul de aplicarea
tensiunii de alimentare). Acești biți în procesul de executare nu
sunt disponibili, ci doar la procesul de programare.
b. Regimul ISP – regim special de programare a memorie Flash pentru
controlere. Acest regim este strâns legat de sectorul Boot Loader. În
memoria programelor este rezervată o secțiune de memorie unde se
înscrie un program pentru încărcarea codului. După înscrierea codului
în această regiune, controlerul este apt pentru a fi reprogramat la
distanță.

Configurarea Hard externă a microcontrolerelor:

1. Organizarea „RESET” prin circuit RC

2. Configurarea sincronizării – de obicei sunt 2 terminale de intrare la care se


conectează elementele externe ale generatorului

3. Fuse bit este utilizat în cazul când microcontrolerul are un număr limitat de
terminale
1 februarie 2023

Tema:

4. Configurarea Microcontrolerelor
a. Familia x51 – se configurează prin introducerea biților în registrele de
funcții speciale (SFR), adresare prin biți octet.
i. UART
ii. INTx
iii. T/Cx
iv. Power Management
b. Familia AVR – se configurează prin Fuse-bits, și se programează
separat față de memoria Flash pentru programe și pentru date.
Memoria este rezervată în 3 regiuni EEPROM (programe, boot loader,
fuse-bits, programul utilizatorului
i. UART
ii. INTx
iii. T/Cx
iv. PWM
v. I2C
vi. SPI
vii. Boot Loader
viii. Reset
ix. WDT
5. Algoritmul și specificul de elaborare a programelor pentru microcontrolere
a. Alcătuirea sarcinii tehnice
b. Schema bloc a algoritmului
c. Textul initial al programului
d. Definirea fuse-bits
e. Testarea și simularea programului
f. Înscrierea programului în EEPROM
g. Înscrierea biților de protecție
i. Faza 1 – blochează cititul programului, însă executarea este
posibilă
ii. Faza 2 – blocarea citirii
iii.

1. EEPROM:
a. Programe – 1000/10000 cicli
b. Boot loader
c. Fuse bits
d. Programe utilizate
2. Flash memorie – date 100000/106 cicluri
a. Fuse bits
3. RAMS
a. SFR – Special Function Registers
i. Indicatorul stivei
ii. Cuvântul stării procesorului
iii. Buferul pentru interfețele interne
iv. Buferul la port serial pentru înscriere și citire
b. RAM date utilizate

Programul este constituit din 3 componente:

1. Programul principal, de asemenea conține și subrutinele necesare pentru


acest program.
2. S/P pentru programul principal
3. S/P pentru deservirea întreruperilor, datorită că întreruperile apar asincron,
el au intrare și ieșire, doar că apelul la aceste programe poate fi realizat din
orice punct a programului principal
Dispozitive cu aprinderea LED-ului la intervale de 1 sec.

1. Scopul Tehnic
a. AT89C2051
b. LED – Imax = 5mA
c. Semnal de sincronizare – oscilator de cuarț
d. Reset – circuit RC extern
2 februarie 2023

Tema:

Fiecare tip de bloc de prelucrare a semnalului, oferă:

1. Bloc control al tensiunii


2. Bloc de control al curentului
3. Bloc de control a fazelor – oferă semnal digital în formă de impuls negativ
sau pozitiv

Controlerul are de obicei un număr limitat de intrări de intrări, iar în situația dată
este de dorit de folosit intrare cu întrerupere, dacă aceasta nu este posibil, este
necesar de pus mijloace hard care să se ocupe cu deservirea întreruperilor. La
partea de ieșire se conectează dispozitivele de acționare. Tradițional acesta este
un releu care cu contactele sale gestionează cu comutatorul electromagnetic
care pornește motorul, iar LED-ul și difuzorul sunt elemente care atenționează
asupra avariei curente. Este necesar un dispozitiv de afișare și un bloc de
tastatură. Aceasta este varianta pentru funcționarea autonomă a acestui
dispozitiv.
Pentru a asigura gestionarea la distanță este necesar de elemente și circuite
integrate care asigură transferul de date cu calculatorul. Controler-ul pentru
diferite echipamente, care reprezintă dispozitive de intrare.

Categoriile de dispozitive care intră în componența acestui sistem:

1. Prima categorie de dispozitive de intrare sunt senzori și traductori.


Tradițional majoritatea lor cer ca porturile lor să fie în regim de intrare, iar
când sunt senzori cu regim de intrare, necesită ca portul să fie port cu
regim bidirecțional.
2. A doua categorie necesită sa fie blocuri cu ceas de timp real, memorie
Flash și RAM suplimentară care asigură toate funcțiile necesare pentru a
prelucra datele pentru a duce evidența datelor în timp real.
3. Dispozitivele periferice prezintă amplificatoarele de curent și tensiune, ele
sunt necesare pentru a deservi elementele de executare asupra părții de
putere. Afișor prezentat ca display LCD și bloc de tastatură.

Tipuri de senzori și traductori utilizați ca dispozitive de intrare:

1. Senzori termici
a. Termocuplu – utilizate pentru diapazoane mari de temperatură
b. De cupru sau platină cu rezistența de 50 sau 100 ohmi
c. Pe bază de semiconductor – pe bază de joncțiune PN, la valoarea
curentului constant, căderea de tensiune este direct proporțională cu
temperatura
2. Senzori fotoelectrici:
a. Fotodiode
b. Foto-tranzistori
3. Senzori Hall
4. Senzori Capacitivi
5. Senzori inductivi

1. Sursele de perturbații
a. Scânteierea contactelor de putere
b. Surse de impuls
c. Balast electronic a tuburilor lumină de zi
d. Câmpul magnetic a transformatoarelor și drosel

2 februarie 2023

Tema: Modurile de acționare cu dispozitivele periferice conectate la


microcontroler. Organizarea afișării indicatorului cu 7 segmente și scanării.

Din punct vedere tehnic utilizarea diodelor și rezistorilor sunt necesare pentru
evitarea apariției tastelor fantomă și evitarea conflictului la apăsarea a 2 taste.
Esența de afișare constă în următorul lucru – pe rând se aprinde fiecare simbol
și tot acest ciclu nu trebuie să depășească 50 ms. Convențional dacă notă durata
ciclului de 16 ms, durata pentru fiecare simbol este 2 ms. Scanarea prin
decodificator pentru 3 tasate.

Distribuirea resurselor:

1. Distribuirea Porturilor:
a. Portul de afișare a datelor – P0 (8 linii)
b. Portul de scanare – P2 (3 linii)
c. Linia de citire – (P3 1 linie)
2. Distribuirea Memoriei + Rgx
a. 8 mem cell – bufferul afișorului
b. R2 – contorul poziției de afișare
c. 1 mem cell – RG de fanioane
H G F E D c b a
0 0 0 1 1 1 1 1 1 3Fh
1 0 0 0 0 0 1 1 0 06h
2 0 1 0 1 1 0 1 1 5Bh
3 0 1 0 0 1 1 1 1 4Fh
4 0 1 1 0 0 1 1 0 66h
5 0 1 1 0 1 1 0 1 6Dh
6 0 1 1 1 1 1 0 1 7Dh
7 0 0 0 0 0 1 1 1 07h
8 0 1 1 1 1 1 1 1 7Fh
9 0 1 1 0 1 1 1 1 6Fh
2 februarie 2023

Tema: Operații de comparație și salt condiționat.

6. Operații de comparare și salt condiționat


a. Operații „=”; „>”; „<”;
b. Jz, jnz
c. Jc, jnc
d. Salt condiționat + operație logică
i. djnz Rx, adresă – dacă conținutul este mai mic ca 0 se
efectuează salt pe adresa dată
ii. cjne Rx, adresă – după această instrucțiune este de dorit de
verificat starea fanionului de report
e. Se execută o oarecare operație apoi se verifică această condiție.
Dacă condiția nu se respectă, se face un salt înapoi până la această
operație. Varianta B de A se diferențiază prin următoare.

Metodele de testare și evitare a erorilor logice:

1. Afișarea de control în puncte critice


2. „Capcană” de bit ciclu
3. Formarea unui impuls de sincronizare pentru osciloscop
4. Formarea unui impuls de sincronizare pentru sondă cu extensia impulsului
5. Modificarea pe porțiuni

15 februarie 2023

Tema: Lucrul cu tabele

Distribuirea memoriei de programe pentru o aplicație la concret.


- Adresa 0 .. idk – pentru întreruperi
- Restul adreselor pentru utilizator
- Adresa 0 + 0 până la 0 + n – pentru tabele

Pentru familia x51, aceasta este indicatorul de date, un registru de x16 care
poate fi adresat în 2 variante:

- Adresare 16 bit
- Adresare 8bit (superior + inferior)

Pentru familia AVR sunt indexate registrele Y, X și Z. Dacă de transformat altfel,


aceștia sunt ultimii 6 registre din bancul de registre de uz general. Pentru a
extrage date din table, este format din adresa tabelei + deplasare. Deoarece
controlerul din familia x51 este primul, de aceea conținutul acestui indicator
rămâne neschimbat și se modifică conținutul deplasării, din aceste motive din
tabel se poate de extras de la tabela inițială până la coadă. Dacă este necesar
de operat în ambele direcții, este necesar de efectuat operații, deplasarea
lipsește sau este constantă și se operează cu conținutul indicatorului. Dacă vrem
înapoi dăm directiva decrementului. Această procedură permite de operat cu
tabel mai liber, însă este necesar de utilizat operații de verificare a hotarelor a
acestui tabel. De aceea noi avem necesitatea de a verifica hotarele acestui tabel.

În familia AVR, procedurile sunt asemănătoare, aceste registre permit de


executat acest lucru, însă setul de operațiuni permit operarea cu indicatoarele.
Instrucțiunile familiei AVR permit de operat destul de liber cu aceste operatoare.
Este necesar de controlat numărul de citiri.

În calitate de sarcină admitem următorul lucru:


- Este nevoie în memoria de programe de organizat un numărător contor,
care calculează de la 0 până la 9, la fiecare schimbare a numărătorului, de
la 0 la 1, conținutul trebuie de codat în 7 segmente și de înscris într-un port
exterior. Admitem că partea hard, la DC port se pune un amplificator, iar la
ieșirea amplificatorului se pune un indicator cu 7 segmente.
org 30H
INIT: mov R0,#0h;
mov DPTR,#200h; Tabelul va ocupa 10 celule de memorie

; Partea principală a programului


; Deoarece în situația dată, indicatorul
; n are valoare constantă, noi nu îl atingem
; conținutul numărătorului îl transferăm
; în registru de lucru
WORK: mov A,R2;
movp @A,DPTR+A;

; Aceste două linii vor reprezenta


; blocul Nr.3 de pe schemă
mov P0,A;
; În calitate de port vom alege
; Portul 10, tradițional el este conceput
; pentru un curent mai mare și aceasta va
; corespunde pentru
call Delay 1s;
; Aici punem o chemare a unui subprogram
; se consideră că el este deja gata
inc R2;
; Instrucția de mărire cu o unitate
; Acest exemplu este reprezentat în așa mod
; încât liniilie de program reprezintă
; blocurile din bloc_schemă
cjne R2,#0Ah, WORK;
; Salt condtiționat dăcă conținutul nu este
; egal cu o constantă, ia în câmpul de operanzi
; primește 3 conponenți <destinatatrul, sursa, adresa de salt>
sjump INIT;
; Dacă adresa nu coincide, facem salt la inițializarea programului
END

În acest caz a fost arătată bloc schema și instrucțiunile conform acestei bloc
scheme. Comparația poate fi făcută pe o variantă mai complicată, pentru a arăta
mai multe realiză a bloc schemei.
; Blocul Nr.7
mov A,R2;
; Conținutul de lucru se trece în registrul acumulatorului
XRL A,#0Ah;
; Mai departe conținutul regisrtului de lucru, se facem
; Adunarea după modului 2
jne WORK
sjmp INIT
În varianta propusă sunt 2 linii, în varianta suplimentară este 4 linii de cod. De
aceea preferințele sunt date variantele care asigură minimul liniilor a codului de
program, deoarece asigură o executare mai scurtă. Dacă volumul este mai mare,
programul va fi executat într-o variantă mai lungă de timp. Pentru operația
„Delay”, putem folosi procedurile din exemplele precedente, unde folosim fanion
pentru operarea cu programul și de lucrat cu timer-ul. În acest caz, dacă
executăm întreruperea, putem executat alt program, fără întrerupe mașina.
În procesul de reținere, procesorul este ocupat și nu poate executa alte
programe, de aceea nu este recomandat de utilizat în aplicații practice. În
aplicații practice, acest lucru este nerecomandat și practic interzis.

În cel mai simplu caz, noi folosim 6 registre, unde primele 2 registre le folosim
pentru afișarea orelor, următoarele 2 pentru afișarea minutelor și restul 2 pentru
afișarea secundelor. Numărul porturilor de I/O nu sunt suficiente pentru a folosi
afișarea cu 7 simboluri. Din aceste considerente se recurge la o afișarea
succesivă în toate 6 registre unde din puncte se organizează o magistrală
comună de sistem. Aici noi utilizăm porturile în modul următor:

- Portul 0 – pentru afișarea datelor, va fi comun pentru 6 registre


- Portul 1 – pentru organizarea impulsurilor de înscriere

Utilizarea porturilor:

- P1.0 – unit. sec


- P1.1 – zeci sec
- P1.2 – unit. min
- P1.3 – zeci min
- P1.4 – unit. ore
- P1.5 – zeci ore
- R2 – sec
- R3 – min
- R4 – ore
- R5 – date intrare T/C0

Aici va mai fi o mică remarcă ce nu se încadrează. Un registru auxiliar îl folosim


pentru a acumula numărul de întreruperi de la timer, până ce se acumulează o
secundă. Mai departe vom rezerva celula de memorie 20 o vom folosi ca un
registru de fanioane. Avem nevoie de 2 tabele:
- Tabelul 1 – va conține 10 celule care va fi folosit pentru codarea impulsului
de la 0 la 9
ORG 30H.
INIT: mov A,#0h;
mov R2,A;
mov R3,A;
mov R3,A;
mov R4,A;
mov R5,A;
call AFISARE
; În acest caz în numărătarele inițile se înscriu
; valorile inițiale și se afișează în exterior
WORK: nop
jnb 20,0h,WORK;
; În acest caz se organizează acest ciclu de incrementare
inc R2;
mov A,R2;
; Mai departe aici este excecutată incrementarea
; însă ea este destul de caraghioasă, deoarece este arătată
; incrementarea cu o unitate, însă aceasta este variabilă
DA;
mov R2,A;
; Aici este necesară corecția zecimală a numărătorului
; Aici este destul de comod ca în registru prmii 4 biți
; este o cifră iar următorii 4 biți altă cifră
; ceea ce este comod de operat cu aceste convertări în taber
; deoarece sistemul de comenzi permite cu acumulatorul
; toate operațiile se face prin intermediul acumulatorului
cjne R2,#60h,xxxx;
; Blocul Nr.3 este discompus în 3 linii de comandă
mov R2,#0h;
inc R3;
mov A,R3;
DA;
; Blocul Nr.5 este asemănător corecției zecimale
cjne R3,#60h,xxxx;
; Este fix aceeași structură însă figurează alt registru
mov R3,#0h;
inc R4;
mov A,R4;
DA;
mov R4,A;
cjne R4,#24,xxxx;
xxxx: ; S/P Afișare
01 martie 2023

Tema: Reprezentarea numerelor

Reprezentarea numerelor:

1. Byte (octet)
a. Fără semn (simbol)
b. Byte cu semn
2. Word (2 octeți)
a. Fără semn
b. Cu semn
3. Double Word (4 octeți) – număr cu precizie simplă
31 30 ... 24 23 22 ... ... 1 0
SE SM
Primii 8 biți - exponentă
Următorii 24 biți – mantisă
a. Nr. lung fără semn
b. Nr. lung cu semn
c. Nr cu precizie simplă
4. Qutru Word (8 octeți) – numere cu precizie dublă
63 62 ... 56 55 54 ... ... 1 0
SE SM
Primii 8 biți – exponentă
Următorii 56 biți - mantisă
5. Numere de precizie supraînaltă (10 octeți)
79 78 ... 72 71 70 ... ... 1 0
SE SM
09 martie 2023

Tema: Componența unui program

1. Porțiunea 1
a. Titlul și date
b. Despre program
2. Porțiunea 2
a. Definirea datelor
b. Definirea variabilelor pentru program
3. Porțiunea 3
a. Definirea tabelului de întreruperi
4. Porțiunea 4
a. Subprograme / programe pentru întreruperi
5. Porțiunea 5
a. Subprogram de inițiere + programul principal
6. Porțiunea 6
a. Subprograme
b. Tabele
20 martie 2023

Tema: Clasificarea programatoarelor

1. După algoritmul de programare al Chipului


a. Programarea cu metodă Paralelă – Cea mai simplă și mai ieftină. Cu
ajutorul programatorului „STK500” poate fi realizată programarea în
paralel. „AutoProg” este cu destinație profesionistă care combină
metodele de programare în Paralel și Serial.
b. Programarea cu metodă Serială – Presupune introducerea serială a
datelor (succesiv) (SPI; IPS). Interfața SPI este o realizarea specială a
chipului din procesor care permite introducerea programului în
procesor fără a fi desprins de placa de bază. După această variantă
se programează microprocesoarele din familia AVR, PIC, STM32.
Această variantă poate fi realizată de „Pony Prog”.
2. Conectarea cu PC
a. Cartelă ISA/PCI – aceasta este cea mai dintâi tehnologie utilizată
pentru programarea microprocesoarelor
b. LPT (Conectori pentru Imprimanta Paralelă) – „TurboV6” este un
programator destinat pentru a fi utilizat cu acest conector. Este mai
mult adaptat pentru circuite de memorie decât electronică.
c. COM (Conectori pentru Portul Serial)
d. USB – Prin această interfață se trec majoritatea dispozitivelor
prevăzute pentru portul Serial COM. Cea mai simplă realizare este
utilizarea chipurilor speciale care transformă protocolul portului Serial
în portul Paralel. (UART <-> USB | LPT <-> USB). Tradițional
constructoarele plachetelor Arduino sunt echipate cu o anumită
porțiune de program numită Boot Loader unde se conține acest
programator.
3. După tipul memoriei Programate
a. UV EPROM – cea mai primitivă variantă (programare cu semnal
electric și ștergere cu lumină UV). Programarea se face cu cuvinte
câte un octet (8 biți). În acest caz chipul se programează cu Uprog =
12,5V; 24V; 18V; 12.
b. EEPROM – chipuri cu înscriere și ștergere electrică. Ele utilizează
impulsuri de tensiune înaltă, de obicei în ultimele versiuni Uprog =
12,5V.
c. Flash-EEPROM – programarea și reprogramarea se face la tensiunea
de alimentarea a chipului. Datorită acestei proprietăți, accentul a fost
pus pe aceste programatoare.

Fuse-Bits pentru familiile PIC; AVR.

Acești biți sunt necesari de calculat și de înscris în mod manual. În plachetele


Arduino, acești biți sunt programați la concret. Din aceste motive când conectăm
placa Arduino la PC, ea este detectată ca un dispozitiv și Windows-ul îi atribuie
automat drivere.

La driverele USB 2.0 (2.1) au curent de alimentare cu Umax = 5V și Imax = 0,5


mA.

Conectoarele USB 3.0 Imax <= 1A. Pe lângă seria de contacte din USB 2.0, mai
are o serie de contacte pentru a asigura viteza de transmitere a datelor. Cablurile
USB de tip C ele fiind adaptate la interfața USB 3.0, ele țin cont de aceste
detalii.

Numărătorul K155UE7

- Este un numărător reversibil.


- Permite conectarea în lanț a mai multor numărătoare.
- Când trece din valorile FF în 00 la ieșirea cu „-” apare un impuls de report
cu scop de a sincroniza numărătoarele.
- Permite înscrierea paralelă a datelor, pentru asta este suficient de aplicat
datele pe intrările DX și de aplicat impuls pe intrarea C. Numărătoarele de
acest tip erau utilizate în calitatea de numărător a instrucțiunilor.

Registrul Universal K155UP13

- Poate face deplasarea în stânga și în dreapta.


- Acest registru sa utilizat în microprocesoare
Q3 Q2 Q1 Q0
Kdiv = 11 1 0 1 1
X51 / ATmega8515

(8) – reprezintă numărul de biți pe linie

„0”/„1” – memorie intern/extern

ALE – sincronizarea adresei

PME – sincronizarea memoriei pentru programe

P5 EN – selectează memoria programei interne sau externe

Rg – registru fixator

1. Modul de lucru
a. Dacă la terminale se aplică „0” logic, controlerul lucrează cu memoria
externă de programe
b. Dacă e aplicat „1” logic programul lucrează cu memoria internă de
programe.
2. Conectarea terminalelor
a. P0 și P2 – rezervate pentru conectarea circuitului de memorie
externă. Unde „0” logic servește pentru multiplexarea adresei și
programului iar P2 pentru fixarea informației.
b. P0 – ieșirea de date de la microcontroler
c. P2 – se conectează la următorii 8 biți.
d. P1 și P3 – rămân liberi
e. P3 – portul I/O – are 2 linii seriale libere (UART, ITX, CTX, RD, W0)

S-ar putea să vă placă și