![](http://1.bp.blogspot.com/--KGoF-JdKZ4/TZXeRcAjCsI/AAAAAAAAADQ/-o1vxxpacSg/s1600/apostila%252Bde%252Bc%252Bmikroc%252Bpara%252Bpic18f4550%252Brio%252Bde%252Bjaneiro%252Brj%252Bbrasil__23987C_2.jpg)
INTRODUÇÃO
Bom dia a todos os hobbistas e técnicos, engenheiros, eletricistas, cientistas, etc.etc..etc... (no final das contas somos somente metidos hehe).
Vou começar agora uma série com o objetivo de ensinar os princípios básicos da programação em C, haja vista que é a linguagem mais utilizada atualmente por padrão para microcontroladores PIC.
Pode-se dizer que esta é a linguagem mais simples e cômoda para quem precisa montar circuitos que requeiram um controle mais complexo, pois, na prática, você não precisa preocupar-se com os dados que o núcleo do controlador irá efetuar (CPU), mas com o tratamento que deverá ser dado entre a entrada e a saída, uma vez que a "tradução" para o código de máquina será feito pelo compilador.
Nesta série de postagens irei me basear no livro PIC Microcontrollers - Programming in C da Mikroeletrônica.
HISTÓRICO
O desenvolvimento inicial de C ocorreu no AT&T Bell Labs entre 1969 e 1973. Não se sabe se o nome "C" foi dado à linguagem porque muitas de suas características 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 implementação do sistema Unix (originalmente escrito em PDP-7 Assembly, por Dennis Ritchie e Ken Thompson). Em 1973, com a adição do tipo struct, C tornou-se poderoso o bastante para a maioria das partes do núcleo do Unix, serem reescritas em C. Este foi um dos primeiros sistemas que foram implementados em uma linguagem que não o Assembly, sendo exemplos anteriores os sistemas: Multics (escrito em PL/I) e TRIPOS (escrito em BCPL). Segundo Ritchie, o período mais criativo ocorreu em 1972.
MICROCONTROLADOR x MICROPROCESSADOR
Iniciantes em programação geralmente acham que estes dois componentes são idênticos, mas isso não é verdade. A maior diferença a favor do microcontrolador é a sua funcionalidade, uma vez que o microprocessador precisa de muitos componentes externos para funcionar, tais como memória RAM, EEPROM, conversores A/D, oscilador (clock) e drivers para comunicação com outros dispositivos. No microcontrolador estes componentes (chamados de periféricos), já estão todos "embutidos" na mesma pastilha, o que economiza tempo e espaço na confecção de um projeto.
![](http://2.bp.blogspot.com/-MlTB129hnY0/TZXjdBEnRDI/AAAAAAAAADU/FE4YsHJdNWk/s640/db8051.jpg)
Exemplo de microcontrolador (ds 8051) mostrando seus periféricos.
O microcontrolador evita o excessivo trabalho manual do hobbista já que nele é possível implementar diversos tipos de lógica usando o mesmo chip e os mesmos terminais, pois praticamente todo o trabalho será realizado no momento da programação. Isto também possibilita futuros aperfeiçoamentos, uma vez que é possível reprogramar o componente uma infinidade de vezes e depois basta reinserí-lo no soquete: pronto! está feito o upgrade do firmware.
BASES NUMÉRICAS
Bases numéricas são as diferentes notações que podemos usar para representar quantidades. As mais comuns são a decimal, binária e hexadecimal.
1-BASE DECIMAL: A base decimal é a que estamos acostumados a utilizar. Ela utiliza a base 10, tendo algarismos que vão de 0 a 9, ou seja 0,1,2,3,4,5,6,7,8,9. O número 10 significa que cada posição dos algarismos tem um valor 10 vezes maior que seu anterior. Veja como podemos decompor o número 1472 na base decimal:
1472 =
2 + 70 + 400 + 1000 =
2.10º + 7.10¹ + 4.10² + 1.10³
2-BASE BINÁRIA: Assim como a base decimal é aquela que nós estamos acostumados a utilizar, a base binária é aquela que os sistemas digitais utilizam, pois apenas são possíveis dois estados em um mesmo condutor. A base binária caracteriza-se por ter apenas 2 algarismos: 0 e 1, em que cada uma das posições dos algarismos do número tem um valor 2 vezes maior que o anterior. Veja como podemos ter o número 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 fácil converter este número 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 programação por ser uma forma mais simples de escrever um número binário. Ela utiliza 16 algarismos: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F, onde cada posição 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 número 25BD:
25BD =
2 . 16³ + 5.16² + B.16¹ + D.16º =
8192 + 1280 + 176 + 13 =
9661d
Agora observe o comportamento do número 25BD quando convertido para binário:
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 = [binário = 0 ou 1]
10010110111101b
Observe que:
25BDh = 0010 0101 1011 1101b
Isto é, cada algarismo hexadecimal corresponde a 4 algarismos em binário. Por isso usamos a base hexadecimal em programação: para evitar os "zeros" e "uns" tão facilmente confundíveis e para não ter o trabalho de digitar um número extenso.
CODIFICAÇÃO BCD - Binário Codificado em Decimal
É uma forma de facilitar a comunicação com periféricos que tem de receber os números em binários já divididos em potências de 10.
Assim a cada 4 algarismos binários temos um número que corresponde a um algarismo decimal.
Observe como fica o número 1340d em BCD:
1340d = 0001 0011 0100 0000
Percebeu a diferença do BCD para o binário? No BCD podemos ter conjuntos de 4 algarismos que variam até um máximo de 0101 = 9d , enquanto no binário o máximo é de 1111 = Fh.
Até a próxima postagem pessoal, em que irei falar sobre a conversão entre bases numéricas e os conceitos básicos da lógica digital.
Que Deus abençõe vocês.
Nenhum comentário:
Postar um comentário