Anda di halaman 1dari 11

Programao em C para PIC I

INTRODUO

Bom dia a todos os hobbistas e tcnicos, engenheiros, eletricistas, cientistas, etc.etc..etc... (no final das contas somos somente metidos hehe). Vou comear agora uma srie com o objetivo de ensinar os princpios bsicos da programao em C, haja vista que a linguagem mais utilizada atualmente por padro para microcontroladores PIC. Pode-se dizer que esta a linguagem mais simples e cmoda para quem precisa montar circuitos que requeiram um controle mais complexo, pois, na prtica, voc no precisa preocupar-se com os dados que o ncleo do controlador ir efetuar (CPU), mas com o tratamento que dever ser dado entre a entrada e a sada, uma vez que a "traduo" para o cdigo de mquina ser feito pelo compilador. Nesta srie de postagens irei me basear no livro PIC Microcontrollers Programming in C da Mikroeletrnica.
HISTRICO

O desenvolvimento inicial de C ocorreu no AT&T Bell Labs entre 1969 e 1973. No se sabe se o nome "C" foi dado lingua gem porque muitas de suas caractersticas derivaram da linguagem B e C a letra conseguinte no alfabeto, ou porque "C" a segunda letra do nome da linguagem BCPL, da qual derivou se a linguagem B. C foi originalmente desenvolvido para a implementao do sistema Unix (originalmente escrito em PDP -7 Assembly, por Dennis Ritchie e Ken Thompson). Em 1973, com a adio do tipo struct, C tornou -se poderoso o bastante para a maioria das partes do ncleo do Unix, serem reescritas em C. Este foi um dos primeiros sistemas que foram implementados em uma linguagem que no o Assembly, sendo exemplos anteriores os sistemas: Multics (escrito em PL/I) e TRIPOS (escrito em BCPL). Segundo Ritchie, o perodo mais criativo ocorreu em 1972. fonte: C (linguagem de programao) - Wikipedia

MICROCONTROLADOR x MICROPROCESSADOR

Iniciantes em programao geralmente acham que estes dois componentes so idnticos, mas isso no verdade. A maior diferena a favor do microcontrolador a sua funcionalidade, uma vez que o microprocessador precisa de muitos componentes externos para funcionar, tais como memria RAM, EEPROM, conversores A/D, oscilador (clock) e drivers para comunicao com outros dispositivos. No microcontrolador estes componentes (chamados de perifricos), j esto todos "embutidos" na mesma pastilha, o que economiza tempo e espao na confeco de um projeto.

Exemplo de microcontrolador (ds 8051) mostrando seus perifricos.

O microcontrolador evita o excessivo trabalho manual do hobbista j que nele possvel implementar diversos tipos de lgica usando o mesmo chip e os mesmos terminais, pois praticamente todo o trabalho ser realizado no momento da programao. Isto tambm possibilita futuros aperfeioamentos, uma vez que possvel reprogramar o componente uma infinidade de vezes e depois basta reinser-lo no soquete: pronto! est feito o upgrade do firmware.
BASES NUMRICAS

Bases numricas so as diferentes notaes que podemos usar para representar quantidades. As mais comuns so a decimal, binria e hexadecimal.

1-BASE DECIMAL: A base decimal a que estamos acostumados a utilizar. Ela utiliza a base 10, tendo algarismos que vo de 0 a 9, ou seja 0,1,2,3,4,5,6,7,8,9. O nmero 10 significa que cada posio dos algarismos tem um valor 10 vezes maior que seu anterior. Veja como podemos decompor o nmero 1472 na base decimal: 1472 = 2 + 70 + 400 + 1000 = 2.10 + 7.10 + 4.10 + 1.10 2-BASE BINRIA: Assim como a base decimal aquela que ns estamos acostumados a utilizar, a base binria aquela que os sistemas digitais utilizam, pois apenas so possveis dois estados em um mesmo condutor. A base binria caracteriza-se por ter apenas 2 algarismos: 0 e 1, em que cada uma das posies dos algarismos do nmero tem um valor 2 vezes maior que o anterior. Veja como podemos ter o nmero 10111001 decomposto: 10111001 = 1.2^7 + 0.2^6 + 1.2^5 + 1.2^4 + 1.2^3 + 0.2^2 + 0.2^1 + 1.2^0 Desta forma fica bem fcil converter este nmero para um decimal. Vejamos: 10111001 = 1.2^7 + 0.2^6 + 1.2^5 + 1.2^4 + 1.2^3 + 0.2^2 + 0.2^1 + 1.2^0 = 128 + 0 + 32 + 16 + 8 + 0 + 0 + 1 = 185 Assim: 10111001b = 185d. 3-BASE HEXADECIMAL: Esta base bastante utilizada em programao por ser uma forma mais simples de escrever um nmero binrio. Ela utiliza 16 algarismos: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F, onde cada posio dos algarismos tem um valor 16 vezes maior que o anterior. Os algarismos A, B, C, D, E, F equivalem respectivamente a 10, 11, 12, 13, 14 e 15 em decimal. Vejamos como fica o nmero 25BD: 25BD = 2 . 16 + 5.16 + B.16 + D.16 = 8192 + 1280 + 176 + 13 = 9661d Agora observe o comportamento do nmero 25BD quando convertido para binrio: 25BD = 2.16 + 5.16 + B.16 + D.16 = [como 16 = 2^4] 2.(2^4)^3 + 5.(2^4)^2 + B.(2^4)^1 + D.(2^4)^0 =2.2^12 + 5.2^8 + B.2^4 + D.2^0 = (2^1).2^12 + (2^2 + 2^0).2^8 + (2^3 + 2^1 +2^0).2^4 + (2^3 + 2^2 + 2^0).2^0 =

2^13 + 2^10 + 2^8 + 2^7 + 2^5 + 2^4 + 2^3 + 2^2 + 2^0 = [binrio = 0 ou 1] 10010110111101b Observe que:

25BDh = 0010 0101 1011 1101b Isto , cada algarismo hexadecimal corresponde a 4 algarismos em binrio. Por isso usamos a base hexadecimal em programao: para evitar os "zeros" e "uns" to facilmente confundveis e para no ter o trabalho de digitar um nmero extenso. CODIFICAO BCD - Binrio Codificado em Decimal uma forma de facilitar a comunicao com perifricos que tem de receber os nmeros em binrios j divididos em potncias de 10. Assim a cada 4 algarismos binrios temos um nmero que corresponde a um algarismo decimal. Observe como fica o nmero 1340d em BCD:

1340d = 0001 0011 0100 0000 Percebeu a diferena do BCD para o binrio? No BCD podemos ter conjuntos de 4 algarismos que variam at um mximo de 0101 = 9d , enquanto no binrio o mximo de 1111 = Fh. At a prxima postagem pessoal, em que irei falar sobre a converso entre bases numricas e os conceitos bsicos da lgica digital. Que Deus abenoe vocs.

Programao em C para PIC - II

Ol amigo, nesta segunda postagem da srie sobre os fundamentos da programao em C para PIC vamos ver como se faz a converso entre as bases numricas e os primeiros conceitos de lgica digital.
CONVERSO DE BASES NUMRICAS

Agora que j aprendemos como funcionam as bases numricas precisamos descobrir como podemos converter os valores entre as bases numricas, pois um conjunto de zeros e uns pode dizer muita coisa a uma mquina, mas no nos muito significativo.

CONVERSO BINRIO - DECIMAL A converso de um nmero que est na base binria para a base decimal muito simples, basta apenas decomp -lo em potncias de base 2. Observe o exemplo: 1011 0110b = 1.2^7 + 0.2^6 + 1.2^5 + 1.2^4 + 0.2^3 + 1.2^2 +1.2^1 + 0.2^0 = (perceba que 2^2 = 2) 2^7 + 2^5 +2^4 + 2^2 + 2^1= 128 + 32 + 16 + 4 + 2 = 182d Note que a posio do algarismo binrio indica o expoente que ser atribudo ao 2.

VE S A it t i t l ,

E I A t i i i li

BI I i i i t . l i i t i i t l

l lti .

i i

t i

l f

t i

i i i

, j

VE S P tif i l lt t

EXA E I A i , l i i , j l j :

E I A i lti li l i it i fi l i l i l

l A B E ; ; ; ; ; ;

l t

VE S P i i t i f t .E

E I A it l : t i

EXA E I A i t l i i l i ,

VE S

EXA E I A

BI I

BI I

EXA E I A

A l i i

t l l i ,

i .A i i l i j ^ t ,

l l

i t i :

i f l i

t f i ilit i

i i

l it l

P i :

tit i

EP ESE tili i i i P l, l

AS BASES i i t t

I AS t t i ti l. tili l i t f . t B: tili $ , t i , , t

l i t t t

t i l i %

Hexadecimal -> $16FA ou 0x16FA ou 16FAh Binrio --------> %1001 ou 0b1001 ou 1001B S i BI E BYTE At it it BI S , i : Bi l i i I it l i t t f i t , i i , t f j , t i it ti t i . l t i . i i t i it l. i l. ti fi fi t

t t t t t i ti l i

t f it t i , l it it i

it . . tili i l i . l i

it t f t l i , if t t l, it i i t . i l

l , i l ,

l i if t : i it . E t t ti t l t f t , j ,

i i SB SB, ifi ti . E t

i i ifi ti f t it .

t A i t

l t i

i i l

IBB E. t , i

l i i

t l l

t . i l .

P t l

t i

i . t i .

l,

Anda mungkin juga menyukai