Creeaza.com - informatii profesionale despre


Simplitatea lucrurilor complicate - Referate profesionale unice
Acasa » scoala » informatica » calculatoare
Realizarea programului de comanda pentru PIC-ul folosit

Realizarea programului de comanda pentru PIC-ul folosit


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 MAIN

; 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

START

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


creeaza logo.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.