![]() |
numeri esadecimali x pic? ciao a tutti,vorrei incominciare a provare a imparare a programmare i pic con linguaggio c e x questo sono anche alla ricerca di un easypic5....se qualcuno la vende...........io la compro comunque.....piu o meno ho capito come fare i calcoli con i numeri esadecimali e binari....ma la mia domanda é ha cosa servono questi numeri???? servono x dare un tempo x un operazione? servono x dare un voltaggio?...del tipo....a 5 volt fai partire questo o spegni quel altro ecc??? spiegatemi x favore..... |
Citazione:
|
quelli che si scrivono x compilare il programma del pic,prima di essere trasformati in HEX |
Citazione:
Principalmente ogni numero è un codice di istruzione del programma. Poi, in certi casi, il numero che segue un'istruzione, può essere il codice di un numero puro o di un carattere alfabetico (codice Ascii). Sempre dopo una istruzione si può trovare un codice numerico che indica un salto a una riga di programma in avanti oppure indietro. Ho solo voluto indicarti la varietà di possibilità che si trova dietro a un solo codice esadecimale di un programma. Per iniziare a programmare è meglio seguire un buon manuale o un buon libro, leggerlo con pazienza e poi vedrai che il tutto non è molto complicato come sembrava dalla mia descrizione iniziale. Naraj. |
Sembra semplice, ma partendo così da zero bisognerebbe scrivere un trattato su cos'è una CPU, come funziona, sulla RAM, sulle rappresentazioni numeriche etc etc :rolleyes: Provo ad esemplificare, anche con qualche imprecisione, giusto per aggiungere qualcosa in più a quanto ti ha già correttamente detto Naraj. Intanto puoi leggerti Architettura di von Neumann - Wikipedia e CPU - Wikipedia Letto questo, avrai chiaro che la CPU legge delle celle di memoria, per semplicità supponiamo formate da 8 bit. Questi 8 bit formano un numero da 00000000 a 11111111. Lo stesso numero lo puoi scrivere in tanti modi, a seconda della base che utilizzi; la base indica il numero di simboli che utilizzi per scrivere il numero. I numeri di cui sopra, in base 10 (quella che usiamo correntemente), sono equivalenti a 0 e 255. I numeri son sempre gli stessi, cambia la maniera di scriverli. In base 16 (16 cifre, da 0 a 9 poi A, B, C, D, E ed F) si scrivono 00 e FF; in base 8 sono 000 e 377 etc etc (in base 255,se trovassi 255 cifre diverse, sarebbero 0 e 10) La CPU legge dalla memoria questo numero e a seconda del suo valore compie una ben precisa operazione (istruzione). Per esempio, incrementa il contenuto di una locazione di memoria di 1; oppure lo confronta con 0 e così via. In generale nelle architetture memory mapped I/O, dove appunto ingressi e uscite sono mappati in memoria, alcuni indirizzi di memoria corrispondono in realtà a dispositivi di ingresso /uscita. Per sempio, scriveno un valore in una locazione di memoria, si attiva o meno un certo dispositivo. Nei PIC succede una cosa del genere. Mi fermo qui, altrimenti passa la nottata... :rolleyes: |
Per fare un esempio, il Pic usa istruzioni composte da 14 bit che dicono il comando con la variabile: Per esempio: 00 0000 0xx0 0000 è il comando di Nop (esegue un ciclo senza fare nulla) 01 00bb bfff ffff è il comando BCF (Bit clear f dove le lettere bbb indicano quale bit del dato contenuto nel registro fff ffff) Tutto questo si trova nel datasheet del pic che si vuole usare!!! |
GRAZIE A TUTTI X LE RISPOSTE cavolo,pensavo che imparando una cosa..sarei riuscito ad imparare meglio le altre,ma non è cosi intanto incomincio a leggere queste Architettura di von Neumann - Wikipedia e CPU - Wikipedia mi potete consigliare anche qualche sito buono x incominciare? ricordo che sono un principiante su queste cose,grazie |
Per completare provo a descrivere cosa sono i codici esadecimali Il codice esadecimale di un programma per il microprocessore PIC (vale anche per gli altri microp.) è formato da due caratteri alfanumerici (numeri o lettere). Come già detto con questi due caratteri si possono avere 255 combinazioni e quindi tradurli in 255 istruzioni diverse per un programma. Esempio (codici di fantasia) E7 = incrementa 25 = somma 8C = confronta 0B = salta A seguito di queste istruzioni, ci possono essere altri due o quattro caratteri (sempre esadecimali) che indica dei numeri (veri). Questi numeri possono essere il valore dellincremento, il numero da sommare, da confrontare, passi di istruzione da saltare o indirizzi di memoria. A volte ci può essere solo una istruzione secca alla quale non segue nessun numero. Quando vedi un programma registrato in una memoria, vedi una sequenza di caratteri tutti uno di seguito allaltro senza spazi tra di loro Per distinguere se un byte è unistruzione oppure è un valore di unoperazione, si deve partire dallinizio del programma. Un byte codice di programma indica cosa deve fare e se deve essere seguito oppure no da un byte per loperazione che deve eseguire. Es. E7 (incrementa) non è seguito da un secondo byte in quanto incrementa sempre di 1 il valore in memoria. 0B (salta) è seguito da un byte che indica di quanti passi saltare. Poiché per il programmatore è difficile tenere a mente la funzione di 255 codici esadecimali, è stato abbinata ad ogni istruzione le iniziali dei nomi (inglesi) della funzione che esegue quella istruzione. Es. E7 (incrementa) = INC 25 (somma) = ADD 8C (confronta) = COMP 0B (salta) = JMP Di solito si scrive il programma con le istruzioni in mnemonico e poi si passa il tutto ad un programma traduttore (compilatore) che riscrive le istruzioni in esadecimale o in binario e si memorizza il tutto nel PIC. Naraj. p.s. Non spaventarti. Se sei motivato, è più semplice di quello che si crede. |
bravo,gia da questa tua informazione,mi hai tirato su di morale....... volevo chiederti oltre a queste 4 funzioni....che mi hai scritto,posso trovare qualche sito che mi elenca tutti i nomi in inglese con imparte il significato in italiano e magari anche con il numero esadecimale come hai fatto tu adesso? E7 (incrementa) = INC 25 (somma) = ADD 8C (confronta) = COMP 0B (salta) = JMP |
un altra cosa senza scrivere tutto il programma,ma cosa scriveresti x far accendere un led x 5 secondi e spegnerlo x 3 secondi e cosi via......intermittente..... mi interessa x capire dove e come si intendono i secondi di accensione e i secondi di spegnimento grazie ancora |
Tutti gli orari sono GMT +2. Adesso sono le 01:03. |
Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002