Professional Documents
Culture Documents
Aplicatii de Baza Rulate in Simulator PDF
Aplicatii de Baza Rulate in Simulator PDF
Lecţia nr. 4
4.1. INTRODUCERE
Reamintim că dezvoltarea unei aplicaţii utilizând mediul de programare MPLAB, se
face în două etape distincte, şi anume:
• Într-o primă etapă trebuie construit un proiect al aplicaţiei, pe baza unei
organigrame elaborate în prealabil şi cu includerea fişierului sursă scris în limbaj
de asamblare. Proiectul trebuie să aibă un nume şi un folder propriu, în care se
vor găsi toate fişierele proiectului.
• În etapa a doua se va rula programul într-unul din cele două moduri:
1. Rulare în simulator, folosind comenzile de simulare/depanare ale
simulatorului MPLAB SIM, pentru verificarea corectitudinii logicii de
programare şi efectuarea unor eventuale corecţii. În acest mod se vor selecta,
desigur, doar acele comenzi a căror execuţie satisface cerinţele aplicaţiei.
2. Rularea programului aplicaţiei pe un suport hardware (de exemplu PICkit 1
FLASH Starter Kit).
Observaţie: Aplicaţiile din această lucrare vor fi rulate în regim de simulare, pentru
verificarea corectitudinii şi depanării lor, dacă este cazul.
35
Aplicaţii hardware şi software cu microcontrolerul PIC 12F675 Lecţia nr. 4
Exemplu numeric
Pentru obţinerea unui rezultat numeric concret, se vor încărca în locaţiile de memorie
de la adresele 30H şi 31H constantele: 20H şi 26H. Cu aceste valori rezultatul operaţiei va
fi:
20H – ((20H + 26H) – 52H) = 20H – (46H – 52H) = 2CH
W <0x30> + <0x31>
W W – 0x52
<0x40> 0x20-W
End
36
Aplicaţii hardware şi software cu microcontrolerul PIC 12F675 Lecţia nr. 4
37
Aplicaţii hardware şi software cu microcontrolerul PIC 12F675 Lecţia nr. 4
• Introducerea unui nume şi a unei locaţii pentru proiect, în fereastra Name your
Project. În exemplul nostru folderul de proiect este Aritm, iar numele proiectului să
fie Apl_1.
• Includerea în proiect a fişierului sursă, în fereastra Add any existing files your
project, se realizează astfel:
o Se va selecta numele şi locaţia fişierului sursă scris în limbaj de asamblare, în
exemplul nostru op_aritm.asm din folderul Aritm,
o Se apasă butonul Add pentru includerea acestuia în proiect.
3. Se va construi proiectul, cu comanda Build All din meniul Project sau cu butonul .
4. Se rulează programul aplicaţiei în simulator. Vom utiliza programul de simulare
MPLAB SIM care se lansează în execuţie cu comanda: Debugger → Select Tool →
MPLAB SIM. Pentru verificarea execuţiei corecte a operaţiilor aritmetice din exemplul
numeric, se vor executa următoarele comenzi de simulare:
• Se deschide fereastra File Registers din meniul View în care se va seta conţinutul
locaţiilor de memorie de la adresele 30H şi 31H cu valorile din exemplul numeric,
adică 20H respectiv 26H, astfel:
o Se marchează valoarea 00 de la adresa 0x30,
o Se scrie noua valoare, în exemplul nostru 20,
o Se validează înscrierea cu tasta ENTER.
o Se procedează similar pentru încărcarea valorii 26H la adresa următoare (0x31).
• Se deschide fereastra Watch din meniul View în care se selectează pentru afişare
registrele PCL, WREG, CT1, CT2, REZ_FINAL, REZ_INTERM.
• Se deschide fereastra Disassemby Listing din meniul View, pentru urmărirea
execuţiei liniilor de program.
• Se resetează PC cu comanda Reset sau cu butonul .
• Se rulează programul. Recomandăm pentru această aplicaţie rularea programului cu
întrerupere controlată, după executarea fiecăreia din cele trei etape. Pentru aceasta, se
vor defini trei breakpoint-turi la adresele 0x0B, 0x0E şi 0x10, în fereastra de
dezasamblare, Disassembly Window. Această operaţie se realizează astfel:
o Se selectează comanda Breakpoints din meniul Dedugger,
o În fereastra deschisă de comandă, se tastează în câmpul Break at adresele
respective,
o Se validează cu tasta ENTER.
Ca urmare, în Disassembly Window apare semnul breakpoint-ului (litera B pe o
bulină roşie) în dreptul liniilor de program având adresele respective.
Observaţie: Există şi o comandă scurtă pentru definirea unor puncte de întrerupere,
mai uşor de folosit, şi anume dublu click cu butonul mouse-ului în dreptul liniei
respective.
Acum, pentru rularea programului se vor executa succesiv comenzile:
• Se apasă butonul (Run). Execuţia programului se va opri la adresa 0x0B;
• Se apasă din nou butonul . Execuţia programului se va opri la adresa 0x0E;
38
Aplicaţii hardware şi software cu microcontrolerul PIC 12F675 Lecţia nr. 4
• Se apasă pentru ultima oară butonul Run pentru execuţia ultimei etape a
programului.
• Se apasă butonul (Step Into) pentru execuţia ultimei instrucţiuni.
Observaţie: La fiecare etapă de execuţie a programului se va urmări modificarea
conţinutului registrelor în Watch Window conform cu acţiunea instrucţiunilor
executate.
39
Aplicaţii hardware şi software cu microcontrolerul PIC 12F675 Lecţia nr. 4
Aplicaţia 2
Se execută
(Op1 OR OP2) W
Se execută
(W XNOR OP3) REZ
End
40
Aplicaţii hardware şi software cu microcontrolerul PIC 12F675 Lecţia nr. 4
Exerciţiu individual
Refaceţi simularea programului şi pentru alte valori ale biţilor implicaţi în operaţie
urmărind dacă rezultatul este cel corect.
41
Aplicaţii hardware şi software cu microcontrolerul PIC 12F675 Lecţia nr. 4
Instrucţiunile specifice unui microprocesor se execută în unul sau mai multe cicluri
maşină. Un ciclu maşină reprezintă intervalul de timp (măsurat în perioade ale generatorului
de tact) în care se execută o operaţie elementară. În cazul microcontrolerului PIC 12F675,
un ciclu maşină cuprinde 4 impulsuri de tact, astfel încât rezultă că durata ciclului maşină
este de 1 μs (la frecvenţa oscilatorului de 4 MHz).
Din Datasheet-ul circuitului rezultă că instrucţiunile utilizate în secvenţa de program
de mai sus se execută într-un ciclu maşină, mai puţin instrucţiunea de salt goto Decr care se
execută în două cicluri maşină. Instrucţiunea decfsz TEMP,f se execută în 2 μs doar când se
execută saltul (conţinutul registrului TEMP este 0), altfel şi aceasta se execută tot în 1 μs.
Având în vedere cele de mai sus, putem calcula durata de execuţie a programului,
astfel:
[2 + (2 + 1 + 2) ⋅ 31 + (2 + 2)] ⋅ 1 μs = 161
Pentru o tratare sistematizată a modului cum se calculează durata unui program,
introducem următoarele notaţii:
NB – numărul care indică de câte ori este parcursă bucla,
NIB – numărul de cicluri maşină în care sunt executate instrucţiunile cuprinse în buclă
NEB – numărul de cicluri maşină în care se execută instrucţiunile din afara buclei
TM – durata unui ciclu maşină
N – numărul total de cicluri maşină în care se execută programul
Cu aceste notaţii, durata programului se calculează cu formula:
T = N · TM = (NEB + NB · NIB) · TM.
În cazul exemplului de mai sus, avem:
NEB = 6; NIB = 5; NB = 31 şi TM = 1 μs.
Rezultă că timpul în care se execută programul este:
42
Aplicaţii hardware şi software cu microcontrolerul PIC 12F675 Lecţia nr. 4
T = (6 + 31 · 5) · 1 μs = 161 μs.
Aplicaţie practică
Să se scrie un program care să asigure o temporizare de 1 ms.
O variantă de rezolvare după exemplu de mai sus ar fi:
NIB = 4; NEB = 4; NB = 249D.
Cu aceste date calculăm durata programului:
T= (4 + 249 · 4) · 1 μs = 1000 μs.
Programul sursă este următorul:
;Program de exemplificare pentru obţinerea unei temporizări
list p=12f675
#include <p12f675.inc>
errorlevel -302
__CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF &
_PWRTE_ON & _INTRC_OSC_NOCLKOUT
#define Bank0 0x00
#define Bank1 0x80
cblock 0x20
TEMP
endc
ORG 0x005
Initialize
; call 0x3FF ;Restabilirea factorului de calibrare – instrucţiune comentariu
; necesară în cazul utilizării simulatorului.
BANKSEL Bank1 ;Selectare BANK1
movwf OSCCAL ;Actualizare factor de calibrare oscilator
movlw 0x0F9
movwf TEMP ;Se încarcă TEMP cu constanta 0F9h (249D)
Bucla
nop ;Instrucţiune de pauză (inoperantă)
decfsz TEMP,f ;Decrementează registrul TEMP şi sari instrucţiunea
; următoare dacă conţinutul lui este 0
goto Bucla ;Dacă nu, salt la Bucla
nop
end
43
Aplicaţii hardware şi software cu microcontrolerul PIC 12F675 Lecţia nr. 4
Exerciţiu individual
Realizaţi un proiect similar pentru întârzieri de 50 ms, respectiv 100 ms.
44
Aplicaţii hardware şi software cu microcontrolerul PIC 12F675 Lecţia nr. 4
45
Aplicaţii hardware şi software cu microcontrolerul PIC 12F675 Lecţia nr. 4
Exerciţiu individual
Rulaţi programul aplicaţiei 3 în regim Animate.
46