Rotazione registro PICC

Jul 11, 2006 7 Replies

Salve a tutti ho la necessita di fare una rotazione a sinistra di una variabile tipo char. Penso che esista un operatore che fa questo vero? Come si usa? Praticamente dovrei fare questo:



b7 b6 b5 b4 b3 b2 b1 b0 ruotando di una posizione verso sinistra dovrei avere: b6 b5 b4 b3 b2 b1 b0 b7



Grazie


non esiste nessun operatore specifico per le rotazioni, guarda se il tuo compilatore supporta qualche estensione o funzione specifica

altrimenti in C 'puro' puoi fare cosi:

c = (b>>7) | (b

Sul manuale del compilatore PICC tra gli operatori ho trovato ROR e ROL che sarebbero rispettivamente rotazione a destra e a sinistra ma non so come si usano...

Altra cosa dovrei leggere da una variabile tipo char un bit a mia scelta come potrei fare?

se sono quelli a pagina 86 servono solo come operazioni all'interno delle espressioni di costanti per l'assembler , totalmente inutili al tuo scopo

nel post precedente non ho menzionato la possibilita' di un breve pezzo di assembler in-line per eseguire le operazioni di rotate, non mi chiedere come si fa perche' non conosco ne il compilatore ne il linguaggio macchina dei pic.

se per eseguire test logici basta mettere in and ( bit a bit ) la variabile con una maschera adeguata.

l'espressione:

b & 0x40

e' non nulla se il settimo bit e' diverso da zero e cosi' via

l'uso dei bitfield (e delle union ) puo' permettere l'accesso diretto a bit per queste cose ti rimando ad un buon liro sul C, verifica inoltre se il compilatore ha delle estensioni non ANSI per l'accesso diretto ai bit

Io mi riferivo a quello scritto a pagina 189 sempre che abbiamo lo stesso manuale...

Come il settimo?? Non il quarto? O forse non ho capito come funziona la cosa...

di quale manuale di quale compilatore C, ho la strana sensazione che stiamo parlando di cose diverse

io mi riferivo a questo PICC

HI-TECH PICC Compiler

formatting link
passami un riferimento al tuo e vediamo di che si tratta

0x40 in binario e' 01000000 , settimo bit ( contato primo-ottavo da destra a sinistra ) & e' l'and bit a bit per il C

e si anche io l'ho preso da li...

Quindi se ho capito:

if (c & 0x04) { RA2=1; } else RA2=0;

Questa controlla il terzo bit da destra e mette a 1 RA2 se lo trova a 1 indistintamente dallo stato degli altri giusto?

cerchiamo di sincronizzarci: il mio scaricabile 'ora' dal sito e' lungo 316 pagine , prima pagina a colori e la seconda identica alla prima ma monocromatica...

HI-TECH software

PICC ansi c compiler

e poi riprendiamo il discorso sui rotate

giusto

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required