Realizarea programului de comanda pentru PIC-ul folosit
Exista mai multe variante de realizarea a programului utilizand anumite softuri care genereaza numai fisierul sursa hex, neavand posibilitatea de depanare integrata a programului.
In acest caz se poate folosi orice procesor de texte recomandabil unul nu prea evoluat, care sa poata salva fisierul scris in format txt. Exemple de astefl de programe sunt:
write
notepad
Dupa ce se scrie fisierul sursa, trebuie acordata marea atentie in vederea greselilor 'inteligente', greseli care nu ar produce eroare la compilare dar care ar duce la functionarea defectuasa a programului putand duce chiar la distrugerea microcontrolerului (in functie de schema).
Odata realizat si verificat programul se poate trece la compilarea programului cu ajutorul unui compilor. In functie de limbajul in care a fost realizat programul compilorul poate fi:
compilator "clasic", pentru programe scrise in assambler.
compilator de C (foarte asemanator cu limbajul C)
In primul caz compilarea programelor se face cu ajutorul programului MPASM program oferit in mod gratuit de catre firma MICROCHIP.
Dezavantajele acestei variante sunt:
utilizarea in mod continu a mai multor programe
greutaea de a tine evidenta fisierelor create
necesitatea de a deschide fiecare fisier separat
Pentru a combate toate aceste probleme se poate folosi programul MPLAB oferit tot de firma MICROCHIP (program gratuit) care poate programa orice tip de microcontroler produs de firma Microchip.
Avantajele acestui program sunt:
poate face sinulari
poate lucra cu o varietate mare de limbaje de programare
poate programa direct microcontrolerul
Interfata standard a programului MPLAB arata ca in figura urmatoare:
Pentru a se realiza un nou proiect se urmeaza pasii urmatori:
se face clic pe meniul PROJECT
se selecteaza submeniul NEW PROJECT
in fereastra care s-a deschis trebuie sa se aleaga numelel noului proiect, calea unde acesta va fi salvat, dupa care se apasa butonul OK
in fereastra care apare se pot alege tipul microcontrolerului in cazul de fata PIC16F84
se pot alege librariile si fisierele care se doresc a fi introduse in noul proiect se apasa butonul OK
din meniul PROJECT se alege comanda BUILD ALL (care are ca rezultat crearea intregului proiect)
Dupa crearea proiectului se incepe construirea programului. Programul este realizat in assambler.
Familia de microcontrolere de tip 16x8x produse de firma MICROCIP sunt microcontrolere pe 8 biti, iar setul complet de instructiuni necesare programarii lor este de 35 de instructiuni care sunt prezentate in continuare:
Comanda |
Descrierea |
Nr de cicluri |
ADDWF |
Aduna W si F | |
ANDWF |
Si W cu F | |
CLRF |
Goleste F | |
CLRW |
Goleste W | |
COMF |
Complement F | |
DECF |
Decrementeaza F | |
DECFSZ |
Decrementeaza F, sare daca este 0 | |
INCF |
Incrementeaza F | |
INCFSZ |
Incrementeaza F, sare daca este 0 | |
IORWF |
Inclusiv W cu F | |
MOVF |
Muta in F | |
MOVWF |
Muta W in F | |
NOP |
Nici o operatie | |
RLF |
Roteste spre stanga F | |
RRF |
Roteste spre dreapta F |
|
SUBWF |
Extrage W din F | |
SWAPF |
Swap nibles in F | |
XORWF |
OR exculsiv W cu F | |
BCF |
Sterge bitul F | |
BSF |
Seteaza bitul F | |
BTFSC |
Testeaza bitul F, sare daca este zero | |
BTFSS |
Testeaza bitul F, sare daca este unu | |
ADDLW |
Aduna literal cu W | |
ANDLW |
Si literal cu W | |
CALL |
Chiama o subrutina | |
CLRWDT |
Sterde WDT | |
GOTO |
Se duce la adresa | |
IORLW |
OR inclusiv cu literal | |
MOVLW |
Muta literalul in W | |
RETFIE |
Se intoarce din intrerupere | |
RETLW |
Se intoarce cu literalul in W | |
RETURN |
Se intoarce din subrutina | |
SLEEP |
Intra in modul STABD-BY | |
SUBLW |
Extrage W din literal | |
XORLW |
OR exculsiv literal cu W |
In momentul in care creaza un proiect nou programul MPASM creaza urmatoarele fisiere:
masina de spalat.asm
masina de spalat.cod
masina de spalat.err
masina de spalat.hex
masina de spalat.bkx
masina de spalat.lst
masina de spalat.pjt
Explicarea continutului fiecarui fisier creat:
Masina de spalat.asm contine fisierul sursa al programului:
;se seteaza bitul de comanda
LIST P=16F84
ERRORLEVEL -302
__CONFIG 3FF5H
__IDLOCS 1234
;se declara variabilele
PORTA EQU 5
TRISA EQU 85H
PORTB EQU 6
TRISB EQU 86H
OPTREG EQU 81H
STATUS EQU 3
CARRY EQU 0
RP0 EQU 5
TEMPV EQU 10
PROGV EQU 8
C EQU 0
N1 EQU 11
N2 EQU 12
;se initializeaza sistemul
CLRF TEMPV
CLRF PORTA
CLRF PORTB
BSF STATUS,RP0
CLRF TRISA
MOVLW 80H
MOVWF TRISB
BCF STATUS,RP0
MOVLW 4
MOVWF OPTREG
BCF STATUS,CARRY
CLRF N1
CLRF N2
INCF PROGV,F
INCF TEMPV,F
; INITIAL VOR LICARI TOATE LEDURILE
INIT CLRF PORTB
MOVLW B'00001' ;TEMPERATURA
MOVWF PORTA
MOVLW B'1111111' ;AFISARE TEMPERATURA
MOVWF PORTB
CALL PAUZA.5 ;executa o pauza de 0.5s
CLRF PORTB
MOVLW B'00010' ;PROGRAM
MOVWF PORTA
MOVLW B'1111111' ;AFISARE PROGRAM
MOVWF PORTB
CALL PAUZA.5 ;executa o pauza de 0.5s
;rutina principala
MAIN CALL AFISARE
; VERIFICARE BUTON SELECTIE
CLRF PORTB ;se sterge portul b
MOVLW B'00100' ;BUTOANE
MOVWF PORTA
MOVLW B'00001000' ;BUTON SELECTIE
MOVWF PORTB
BTFSC PORTB ;se citeste butonul
CALL APASAT1 ;daca butonul este apasat se ruleaza rutina 1
CALL AFISARE ;se ruleaza rutina de afisare
; VERIFICARE BUTON START
CLRF PORTB ;se sterge portul b
MOVLW B'00100' ;BUTOANE
MOVWF PORTA
MOVLW B'00010000' ;BUTON START
MOVWF PORTB
BTFSC PORTB daca butonul este apasat se ruleaza rutina start
CALL START
GOTO
; ASTEAPTA RIDICAREA BUTONULUI SELECTIE
APASAT1 CALL AFISARE
CLRF PORTB
MOVLW B'00100' ;BUTOANE
MOVWF PORTA
MOVLW B'00001000' ;BUTON SELECTIE
MOVWF PORTB
BTFSC PORTB
CALL APASAT1
CALL TEMP
APASAT2 CALL AFISARE
CLRF PORTB
MOVLW B'00100' ;BUTOANE
MOVWF PORTA
MOVLW B'00001000' ;BUTON SELECTIE
MOVWF PORTB
BTFSC PORTB
CALL APASAT2
CALL PROG
;ASTEAPTA SETAREA TEMPERATURII DE LUCRU
TEMP CLRF PORTB
MOVLW B'00001' ;TEMPERATURA
MOVWF PORTA
MOVLW B'1111111' ;AFISARE TEMPERATURA
MOVWF PORTB
CALL PAUZA.5
CALL AFISARE
; VERIFICA BUTONUL DE TEMPERATURA
CLRF PORTB
MOVLW B'00001' ;TEMPERATURA
MOVWF PORTA
BTFSC PORTB ;BUTON APASAT?
RLF TEMPV,F
CALL AFISARE
; VERIFICA BUTONUL DE SELECTIE
CLRF PORTB
MOVLW B'00100' ;BUTOANE
MOVWF PORTA
MOVLW B'00001000' ;BUTON SELECTIE
MOVWF PORTB
BTFSC PORTB
CALL APASAT2
CALL AFISARE
;VERIFICARE BUTON START
CLRF PORTB
MOVLW B'00100' ;BUTOANE
MOVWF PORTA
MOVLW B'00010000' ;BUTON START
MOVWF PORTB
BTFSC PORTB
CALL START
RETURN
;ASTEAPTA ALEGEREA PROGRAMULUI DE LUCRU
PROG CLRF PORTB
MOVLW B'00010' ;PROGRAMUL
MOVWF PORTA
MOVLW B'1111111' ;AFISARE PROGRAM
MOVWF PORTB
CALL PAUZA.5
CALL AFISARE
CLRF PORTB
MOVLW B'00100' ;BUTOANE
MOVWF PORTA
MOVLW B'00001000' ;BUTON SELECTIE
MOVWF PORTB
BTFSC PORTB
CALL APASAT1
CALL AFISARE
CLRF PORTB
MOVLW B'00010' ;PROGRAMUL
MOVWF PORTA
BTFSC PORTB ;VERIFICA BUTONUL
RLF PROGV,F
CALL AFISARE
CLRF PORTB
MOVLW B'00100' ;BUTOANE
MOVWF PORTA
MOVLW B'00010000' ;BUTON START
MOVWF PORTB
BTFSC PORTB
CALL START
RETURN
; PAUZA 500 MS
PAUZA.5 NOP
NOP
NOP
NOP
INCF N1,F
MOVF N1,W
SUBLW D'249'
BTFSC STATUS,C
GOTO PAUZA.5
CLRF N1
INCF N2,F
INCF N1,F
NOP
NOP
NOP
MOVF N2,W
SUBLW D'199'
BTFSC STATUS,C
GOTO PAUZA.5
CLRF N2
CLRF N1
RETURN
AFISARE CLRF PORTB
MOVLW B'00001' ;TEMPERATURA
MOVWF PORTA
MOVF TEMPV,W ;AFISARE TEMPERATURA
MOVWF PORTB
NOP
NOP
CLRF PORTB
MOVLW B'00010' ;PROGRAMUL
MOVWF PORTA
MOVF PROGV,W ;AFISARE RROGRAM
MOVWF PORTB
RETURN
END
Dupa cum se observa rutina start nu este completa, pentru a se vedea programul complet a se observa anexa 1.
Fisierul masina de spalat.hex contine toate informatiil utile care trebuiesc scrise in microcontroler, pentru programul de mai sus fisierul contine:
:1000100004308100031091019201880A900A860140
:10002000013085007F30860078208601023085000F
:100030007F30860078208E208601043085000830CD
:100040008600861B2C208E2086010430850010300F
:100050008600861B9B201B288E208601043085008D
:1000600008308600861B2C203E208E20860104301E
:10007000850008308600861B35205B208601013014
:1000800085007F30860078208E2086010130850033
:10009000861B900D8E208601043085000830860076
:1000A000861B35208E2086010430850010308600A6
:1000B000861B9B2008008601023085007F30860069
:1000C00078208E2086010430850008308600861B4B
:1000D0002C208E20860102308500861B880D8E2004
:1000E00086010430850010308600861B9B200800A6
:1000F0000000000000000000910A1108F93C0318FC
:1001000078289101920A910A00000000000012086C
:10011000C73C03187828920191010800860101303C
:10012000850010088600000000008601023085006E
:084000000100020003000400AE
:02400E00F53F7C
:00000001FF
Acest cod trebuie incarcat in microcontroler cu ajutorul unui program special si al unui programator.
Pentru a putea verifica un program inainte de a a fi scris in microcontroler evitanduse astfel scrierile inutile se poate folosi comanda RUN care se gaseste in meniul DEBUD-> RUN ->RUN
Alta varianta de a se vedea buna functionarea a programului este sa se execute comanda animate DEBUG-> RUN-> ANIMATE care are ca efect rularea pas cu pas a programului si afisarea informatiilor utile.
Daca se doreste se poate urmari valoarea unei anumite variabile cu ajutorul comenzii Watch Windows care permite afisarea unei variabile pe ecran in unul din formatele de mai jos:
hexazecimal
binar
decimal
ascii
Pentru a verifica buna functionare a intrarilor se foloseste comanda: Asyncronus Stimulus care deschide fereastra de comanda de mai jos:
Aceasta permite pana la 12 stimuli avand fiecare una din doua variante:
low
high
Politica de confidentialitate |
.com | Copyright ©
2024 - Toate drepturile rezervate. Toate documentele au caracter informativ cu scop educational. |
Personaje din literatura |
Baltagul – caracterizarea personajelor |
Caracterizare Alexandru Lapusneanul |
Caracterizarea lui Gavilescu |
Caracterizarea personajelor negative din basmul |
Tehnica si mecanica |
Cuplaje - definitii. notatii. exemple. repere istorice. |
Actionare macara |
Reprezentarea si cotarea filetelor |
Geografie |
Turismul pe terra |
Vulcanii Și mediul |
Padurile pe terra si industrializarea lemnului |
Termeni si conditii |
Contact |
Creeaza si tu |