XC8 step by step, chiarimenti, osservazioni ecc...
- CACCIA
- Autore della discussione
- Visitatori
8 Anni 2 Settimane fa #1
da CACCIA
XC8 step by step, chiarimenti, osservazioni ecc... è stato creato da CACCIA
Buongiorno a tutti,
studiando il libro XC8 step by Step a pg.150 troviamo il seguente esempio:
"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ì??:
Grazie della pazienza e a chi vorrà rispondermi.
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:
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
Less
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
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
7 Anni 7 Mesi fa #3
da CACCIA
Risposta da CACCIA al topic XC8 step by step, chiarimenti, osservazioni ecc...
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:
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
è 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 ();
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.
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
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
7 Anni 7 Mesi fa #5
da CACCIA
Risposta da CACCIA al topic XC8 step by step, chiarimenti, osservazioni ecc...
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
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 Laurenti, StefA
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.
Forum - Ultimi messaggi
-
- Aggiornamento sito completato
- da Mauro Laurenti
-
- registro a scorrimento PIPO in cascata
- da Mauro Laurenti
-
- FORMULA PER LINEARIZZARE TERMOCOPIA
- da Mauro Laurenti
-
- Spostamento impronte
- da Mauro Laurenti