Vai al contenuto
PLC Forum


Come Programmare Il Pic


Titano

Messaggi consigliati

Sono alle prime armi....ho inziato da poco!

Mi son costruito (schema elettrico e board) il programmatore....prendendo un pezzo lì e un pezzo là...comunque funziona benissimo.

Sto utilizzando un 16F877... :D

Il programma che uso per complialre è PICC LITE....quindi sto programmando in C.

Qui sorge il dubbio vedo che tutti voi compilate in assembler....sto sbagliando ad usare il c?

Un altro probllema che ho trovato è la diversità di linguaggio tra i diversi compilatori C, insomma non riesco a trovare un manuale per PICC LITE e gli altri compilatori hano una sintassi diversa rispetto al PICC LITe nonnostante sia C.

. me...che faccio passo all'assembler....ma è tosto

Alessandro :huh:

Link al commento
Condividi su altri siti


Non so se il PICC LITE sia quello che sto usando io, ma il manuale dovrebbe essere dato assieme al disco di istallazione. Comunque le differenze sintattiche dovrebbero riguardare solo le istruzioni specifiche del pic.

Si usa l'assembler perchè riesci a stressarlo meglio, in altre parole impieghi meno meomoria per fare le medesime cose; meno memoria è anche minor tempo di esecuzione.

Fai una prova: compara un valore e salta se ugoale a zero (p.e.), compila, poi vai a vedere le istruzioni assembler generate dal compilatore: sicuramente ne puoi toglere un paio! In effetti le comparazioni sono le meno ottimizzate.

Link al commento
Condividi su altri siti

ok....e fin qui cis ono non sto pedendo tempo a programamre in c :D

Sto studiando la parte dei tempi, ossia vari timer del 16f877 ed il pre e post scaller

AIUTOOOOOOOO avrei bisogno di qualche esempio in c.... ossia il valore del timer dove è registrato?

SU TMR=? lo posso usare come una variabile ossia:

IF(TMR0 < 125){ .........

Alessandro

Link al commento
Condividi su altri siti

Io ho iniziato con l'assembler perche' i compilatori validi in C sono tutti a pagamento ... e cari .

Il fatto che le sintassi sono differenti e' perche' si usano solo le basi dell'ansi C poi ogni programmatore ha addattato u comandi alle risorse dei pic come ha ritenuto piu comodo...

Io per programmare in c uso il C compiler della CCS , ottimo prg , ma non gratis....

Per esempio per leggere il valore del timer 0 nel CCS C si deve fare :


int tempo;

tempo = get_timer0();

if (tempo<125)
{
    ........ istruzioni...
}

ora dovrei vedere nel tuo compilatore , ma deve essere una cosa simile...

Link al commento
Condividi su altri siti

Il compilatore PICC in effetti non possiede delle funzioni built-in potenti come quelle ritrovabili nel compilatore CCS, e da questo punto di vista forse è un bene perchè alla fine il risultato della compilazione si avvicina molto a quanto si sarebbe potuto scrivere direttamente in assembly.

L'impostazione fatta per leggere lo stato del timer col il compilatore PICC è perfetta: è possibile proprio far riferimento direttamente al file register TMR0, naturalmente dopo aver incluso nel sorgente il file pic.h

Personalmente ho programmato per molti anni svariati microcontrollori (tra cui anche il PIC) in assembly, ma a un certo punto, visto anche le applicazioni che dovevo realizzare, dove erano richiesti calcoli su dati acquisiti abbastanza complessi, non ho potuto fare a meno di passare al C.

Attualmente sto utilizzando il PICC compiler della HT-SOFT versione 8.02 PL2, che tra l'altro si integra alla perfezione con MPLAB 6.40 consentendo di effettuare dei debugging molto avanzati (mi permetto di suggerire di non trascurare, in questo senso, le potenzialità di MPLAB nella gestione di stimoli asincroni applicabili durante il run-time).

Ciao a tutti

Claudio

Link al commento
Condividi su altri siti

Grazie claudio per la tua risposta. :D

Coem faccio a calcolarmi il clock in uscita dal tmr0 o 1 o 2?

SE x esempio voglio un clock da 1 secondo con un quarzo da 20Mhz potresti farmi un esmpio di codice con i commenti dovrebbe bastare x capitre...

non riesco ad utilizzare il OPTION_REG....il compilatore non me lo riconosce

GRazie

Alessandro

Link al commento
Condividi su altri siti

Sto utlizzando gli interrrupt del 16F877. Questo dispositivo al verificasi di un interrupt va al registro 0004h.

In assembler è semplice posizionarsi sul registro 0004h, ma con il PICC Lite come devo fare?....scrivo il codice in c ma non so dove viene registrato all'interno del PIC.

GRazie

Alessandro

P.S.

X l'option_reg ho trovato....bisognava solo scrivere OPTION

Link al commento
Condividi su altri siti

I quesiti posti sono diversi e cercherò di dare una risposta più o meno attendibile.

OPTION_REG è errato perchè bisogna utilizzare solo OPTION come hai già visto; comunque la cosa migliore per non sbagliarsi con i nomi dei file register è di andare a vedere il file .h corrispondente al PIC per il quale si

sta realizzando il progetto (si trova nella cartella include sottocartella di ht-pic, se ben ricordo)

Per quello che riguarda gli altri problemi proverei ad inviarti in qualche modo (non so come) alcuni appunti tratti dal corso di Tanzilli e da me riadattati all'utilizzo del C a proposito di queste questioni; spero siano sufficientemente chiari.

Buon lavoro

Link al commento
Condividi su altri siti

  • 8 months later...

Scusate l'intrusine ma anchio cerco manuali su picc sapete darmi delle indicazioni magari in italiano soprattutto come lo intergro con mplab!

Grazie takoda[at]interfree.it ;)

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...