Академический Документы
Профессиональный Документы
Культура Документы
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.
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.
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,