Programació en C del PIC 16F690 amb PICkit 2

Referència Trucs Perifèrics   Recursos CITCEA
Tutorial Exemples Projectes   Inici

Format de les dades

Les dades s'emmagatzemen a la memòria del microcontrolador en forma binària. Però per a la majoria de les aplicacions no és pràctic representar els valors en binari a l'hora d'escriure el programa. Per això hi ha altres formats.

Decimal (base 10)

És el format que utilitzem a la nostra vida quotidiana i, per tant, és el més apropiat per als números.

L'entrada d'un valor decimal en el programa es pot indicar de dues formes. La següent instrucció carrega un valor decimal a l'acumulador:

	Valor = 214;						// Valor decimal

Binari (base 2)

Cada bit només pot valer 0 o 1. A la figura següent es representa un nombre de 8 bits amb el pes que correspon a cada bit.

Nombre binari de vuit bits

El nombre representat (10111) correspon al valor 23 en decimal, com es pot veure a continuació:

		1  x   1   =   1
		1  x   2   =   2
		1  x   4   =   4
		1  x  16   =  16
		Total         23

L'entrada d'un valor binari en el programa s'indica de la següent manera:

	TRISc = 0b00010111;     				// Valor binari

Hexadecimal (base 16)

És un format molt emprat en programació. Com necessitem xifres del 0 al 15 i només tenim símbols per a les 10 primeres, la resta es fan emprant lletres. La lletra A correspon al 10 i la lletra F al 15:

		10    A					13    D
		11    B					14    E
		12    C					15    F

Els nombres hexadecimals tenen l'avantatge que cada xifra correspon a quatre bits (el que s'anomena un nibble, mig byte). A l'exemple següent ho podem veure:

Nombre hexadecimal

El nombre representat correspon al valor 174.

		A:     10  x   16    =   160
		E:     14  x    1    =    14
		Total                    174

En un text escrit, els valors hexadecimals solen indicar-se amb una h al darrere; per exemple AEh.

L'entrada d'un valor hexadecimal en el programa es pot indicar així:

	TRISC = 0xAE;     					// Valor hexadecimal

Octal (base 8)

La base és 8, per tant les xifres van de 0 a 7 i cada xifra correspon a tres bits. Com és menys pràctic que l'hexadecimal (on cada xifra són quatre bits i un byte són dues xifres), cada cop es fa servir menys.

En un text escrit, els valors octals solen indicar-se amb Ox al davant; per exemple Ox263.

El nombre representat correspon al valor 179 en decimal, com es pot veure a continuació:

		2  x   64   =   128
		6  x    8   =    48
		3  x    1   =     3
		Total           179

L'entrada d'un valor octal en el programa es pot indicar així:

	Valor = 0214;						// Valor octal

Observem doncs que el zero a l'esquerra és important ja que converteix un nombre aparentment decimal a octal.

ASCII (lletres, números i símbols)

El codi ASCII codifica en números de 7 bits (de 0 a 127) les lletres (alfabet anglès), els números i els símbols.

Els elements del 00h al 1Fh són caràcters de control (emprats en els antics mòdems i impressores), els números van del 30h al 39h, les lletres majúscules del 41h al 5Ah i les minúscules del 61h al 7Ah

  Segon dígit
0 1 2 3 4 5 6 7 8 9 A B C D E F
P
r
i
m
e
r

d
í
g
i
t
0 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
1 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
2 espai ! " # $ % & ' ( ) * + , - . /
3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4 @ A B C D E F G H I J K L M N O
5 P Q R S T U V W X Y Z [ \ ] ^ _
6 ` a b c d e f g h i j k l m n o
7 p q r s t u v w x y z { | } ~ DEL

Com els números i les lletres estan ordenats, es pot conèixer el codi individual d'un caràcter sumant el nombre d'ordre al codi ASCII del primer. Així el codi del número 3 (33h) s'obté sumant 3 a 30h, codi del 0.

L'entrada d'un caràcter ASCII en el programa es pot indicar així:

	Lletra = "M";						// Caràcter ASCII

Decimal codificat en binari (BCD)

És un format molt útil quan es vol treure números en una pantalla o un visualitzador. Els valors BCD fan servir quatre bits però aquests bits només conteten una xifra. Així el número 13 seria: 0001 0011 en lloc de 0000 1101.

Els valors BCD es poden emmagatzemar posant un dígit en cada byte (i sabem que sempre els bits 4 a 7 seran zero) o posant dues xifres a cada byte (una xifra a cada nibble) que és una forma més compacta.

Per entrar valors en BCD a una variable, podem fer-ho igual que entrant valors hexadecimals. Per exemple entraríem el valor 13 així:

	PORTC = 0x13;     					// Valor hexadecimal, equival a 13 en BCD

 

 

Licencia de Creative Commons
Esta obra de Oriol Boix está licenciada bajo una licencia no importada Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0.