XC8 step by step, chiarimenti, osservazioni ecc...

  • CACCIA
  • Autore della discussione
  • Visitatori
  • Visitatori
8 Anni 2 Settimane fa #1 da CACCIA
Buongiorno a tutti,
studiando il libro XC8 step by Step a pg.150 troviamo il seguente esempio:
Code:
35: // Esempio inizializzazione di variabili bit 36: flagA = 0; 7FEE 0100 MOVLB 0x0 7FF0 900C BCF flagA, 0, ACCESS 37: flagB = 1; 7FF2 0100 MOVLB 0x0 7FF4 800B BSF flagB, 0, ACCESS 38: flagC = 1; 7FF6 0100 MOVLB 0x0 7FF8 820B BSF flagB, 1, ACCESS 39: flagC = 0; 7FFA 0100 MOVLB 0x0 7FFC 920B BCF flagB, 1, ACCESS

"Si può notare come lo scrivere una variabile bit ad 1 o 0 non richieda l'Accumulatore ma le istruzioni BCF e BSF.
Si noti come per impostare ad 1 il flagB si scriva:
BSF flagB, 0, ACCESS
mentre per scrivere 1 nella variabile flagC si scriva:
BCF flagB, 1, ACCESS"

Ho due domande, scusate la banalità ma è per capire:
  • i registri hanno tutti lunghezza 8 bit? Quindi anche il registro flagA è lungo 8 bit?
  • avrei potuto scrivere così??:
    Code:
    35: // Esempio inizializzazione di variabili bit 36: flagA = 0; MOVLB 0x0 BCF flagA, 0, ACCESS 37: flagB = 1; MOVLB 0x0 BSF flagA, 1, ACCESS 38: flagC = 1; MOVLB 0x0 BSF flagA, 2, ACCESS 39: flagC = 0; MOVLB 0x0 BCF flagA, 2, ACCESS

  • Grazie della pazienza e a chi vorrà rispondermi.

    Si prega Accesso o Crea un account a partecipare alla conversazione.

    • Mauro Laurenti
    • Moderatore
    • Moderatore
    Di più
    8 Anni 2 Settimane fa #2 da Mauro Laurenti
    Risposta da Mauro Laurenti al topic XC8 step by step, chiarimenti, osservazioni ecc...
    Salve Caccia,

    in un'architettura a 8 bit i registri sono in generale tutti a 8 bit salvo quelli speciali come il program counter o altro che sono comunque composti da più byte.

    In architetture a 16bit la memoria, sebbene organizzata a 16bit la puoi ancora una volta considerare composta da più byte.

    Relativamente alla tua osservazione per la variabile di tipo bit è corretta, ma dovresti scrivere in assembly o avere una variabile char e accedere i singoli bit per memorizzare le singole variabili.
    Il codice mostrato in assembly sul testo è quello generato in automatico dal compilatore per cui non è modificabile.

    Personalmente non ho mai fatto uso di variabili bit visto che il codice non sarebbe portabile.

    Normalmente uso al minimo variabili char. In alcuni casi assegno un significato diverso ad ogni bit ma non uso variabili bit.

    Nel testo ho riportato la variabile bit solo per completezza ma se non ricordo male credo di aver fornito una osservazione simile...o forse sono rimasto imparziale.

    Saluti,

    Mauro

    Si prega Accesso o Crea un account a partecipare alla conversazione.

    • CACCIA
    • Autore della discussione
    • Visitatori
    • Visitatori
    7 Anni 7 Mesi fa #3 da CACCIA
    Buongiorno a tutti,
    è molto tempo che non scrivo qui... forse perchè Mauro ha fatto un ottimo lavoro con questo bel testo!
    Non ho avuto molto tempo per lo studio ma ora ho un commento sul capitolo XV modulo PWM...

    Nell'esempio PWM che Mauro propone riporto il testo:
    Code:
    int main (void){ // Periodo del segnale PWM unsigned char period; unsigned int duty_cycle = 0; board_initialization (); // Avvio il TMR2 per il PWM T2CONbits.TMR2ON = 0x01; // Imposto una frequenza di 20KHz period = 249; // Apro il modulo PWM turn_on_PWM2 ();
    Il period 249 (calcolo corretto :-)) non dovrebbe essere PR2 = 249 ????
    Anche percheè il Timer 2 con cosa si confronta? Quindi il periodo non è gestito o sbaglio????
    Non ho modo di provare perchè non ho PC con MPLAB (non posso scaricarlo)....

    Grazie a tutti per l'attenzione.
    Saluti.
    Massimiliano

    Si prega Accesso o Crea un account a partecipare alla conversazione.

    • Mauro Laurenti
    • Moderatore
    • Moderatore
    Di più
    7 Anni 7 Mesi fa #4 da Mauro Laurenti
    Risposta da Mauro Laurenti al topic XC8 step by step, chiarimenti, osservazioni ecc...
    Salve Massimiliano,

    stavo rivedendo il testo online.

    e ho cercato turn_on_PWM2 ();

    A quale esempio del capitolo XV fai riferimento?

    Negli esempi che fanno uso della variabile period poi la uso con la funzione sotto

    // Apro il modulo PWM
    OpenPWM2(period);

    Saluti,

    Mauro

    Si prega Accesso o Crea un account a partecipare alla conversazione.

    • CACCIA
    • Autore della discussione
    • Visitatori
    • Visitatori
    7 Anni 7 Mesi fa #5 da CACCIA
    Buongiorno Mauro,
    scusa ho sbagliato ad esprimermi....
    Nell'esempio del capitolo XV scaricabile dal sito nella categoria Esempi di Porgrammazione XC8 Step by Step vi è il codice riportato sopra!

    Grazie dell'attenzione.
    Un saluto a tutti.
    Massimiliano

    Si prega Accesso o Crea un account a partecipare alla conversazione.

    Moderatori: Mauro LaurentiStefA

    Registrati al sito

    Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

    Registrati al sito LaurTec.