36
UNIVERSIDADE ANHANGUERA MICROPROCESSADORES E MICROCONTROLADORES TRABALHO-SENHA 7° SEMESTRE TURMA A ENGENHARIA DE CONTROLE E AUTOMAÇÃO SANTO ANDRÉ Senha Página 1

engcontroleautomacaouniabc.files.wordpress.com…  · Web viewUniversidade Anhanguera. MICROPROCESSADORES E MICROCONTROLADORES. TRABALHO-SENHA. 7° semestre Turma A . ENGENHARIA

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Universidade Anhanguera

MICROPROCESSADORES E MICROCONTROLADORES

TRABALHO-SENHA

7° semestre Turma A

ENGENHARIA DE CONTROLE E AUTOMAÇÃO

santo andré

1° Semestre 2012

Universidade ANHANGUERA

MICROPROCESSADORES E MICROCONTROLADORES

TRABALHO-SENHA

Alunos do 7° Semestre

eNGENHARIA DE CONTROLE E AUTOMAÇÃO

Rogério Martins Ferraz.....RA4236828867

Anderson Gomes Almeida....RA 30060176

Cleber dos A. Rossi............. RA 30060184

André Luis Meir ad Silva RA 1299930891

“Relatório apresentado à Universidade ANHANGUERA pelo aluno de Engenharia de Controle e Automação. Como parte dos requisitos exigidos para a composição da nota da matéria de “Materiais Elétricos”.

Orientador: Professor VLAMIR BELFANTE

SANTO ANDRÉ

1° Semestre 2012

SUMÁRIO

Capítulo 1) Descrição do Trabalho (Senha)

4

Capítulo 2) Algoritmo

5

Capítulo 3) Fluxograma

7

Capítulo 4) Programa C ou Assembly

8

Programa Olá Mundo

9

Capítulo 5) Editor ou compilador

15

Capítulo 6) Microcontrolador 8051

16

6.1) Pinagem do Microcontrolador

18

6.2) Características

19

6.3) Variantes

19

6.4) Processadores relacionados

20

6.5) Microcontrolador PIC

21

História

22

Do controle de portas para controlador RISC

23

Programação e Desenvolvimento

25

Referências Bibliográficas

27

Capítulo 1) Descrição do Trabalho (Senha)

A importancia de proteger um sistema com senha, as senhas existem para identificar e autenticar o acesso de um determinado usuário à alguma informação ou sistema. Portanto caso você não tenha permissão para acessar um determinado módulo do sistema da sua empresa, banco, etc. é porque você não deve ter acesso àquela informação. Logo se o seu “amigo” do seu próprio departamento não tem acesso e porque ele não deve ter conhecimento de tais informações, por isso você não deve “emprestar” sua senha para ele acessar o sistema.

Caso você informe a sua senha para outro usuário e ele tenha acesso às informações restritas (que não deveria ter), pode ocorrer o crime de falsidade

Ideológica (artigo 299 do Código Penal Brasileiro) Além do crime citado anteriormente você que “emprestou” sua senha para uma outra pessoa pode ser acusado de algo que não cometeu.

O propósito do trabalho é de criar um fluxograma capaz de reconhecer se as senhas foram digitadas corretamente senão não liberar o acesso do usuário até que seja digitada corretamente as senhas.

Para isso estaremos utilizando um fluxograma composto de 3 números de 0 a 9 ao qual o usuário deverá digitar o primeiro número, aguardar liberação de acerto ou erro e prosseguir de acordo com a informação ou seja se sim prosseguir para digitar a senha 2 senão efetuar nova tentativa até que seja concluído todo o ciclo.

Capítulo 2) Algoritmo

Um algoritmo é uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais pode ser executada mecanicamente num período de tempo finito e com uma quantidade de esforço finita.

O conceito de algoritmo é frequentemente ilustrado pelo exemplo de uma receita culinária, embora muitos algoritmos sejam mais complexos. Eles podem repetir passos (fazer iterações) ou necessitar de decisões (tais como comparações ou lógica) até que a tarefa seja completada. Um algoritmo corretamente executado não irá resolver um problema se estiver implementado incorretamente ou se não for apropriado ao problema.

Um algoritmo não representa, necessariamente, um programa de computador, e sim os passos necessários para realizar uma tarefa. Sua implementação pode ser feita por um computador, por outro tipo de autômato ou mesmo por um ser humano. Diferentes algoritmos podem realizar a mesma tarefa usando um conjunto diferenciado de instruções em mais ou menos tempo, espaço ou esforço do que outros. Tal diferença pode ser reflexo da complexidade computacional aplicada, que depende de estruturas de dados adequadas ao algoritmo. Por exemplo, um algoritmo para se vestir pode especificar que você vista primeiro as meias e os sapatos antes de vestir a calça enquanto outro algoritmo especifica que você deve primeiro vestir a calça e depois as meias e os sapatos. Fica claro que o primeiro algoritmo é mais difícil de executar que o segundo apesar de ambos levarem ao mesmo resultado.

O conceito de um algoritmo foi formalizado em 1936 pela Máquina de Turing de Alan Turing e pelo cálculo lambda de Alonzo Church, que formaram as primeiras fundações da Ciência da computação.

Algoritmo "SomaDeDoisValores";

variável:

SOMA,A,B: inteiro;

inicio

Escreva("Digite um numero");

Leia(A);

escreva("digite outro numero");

leia(B);

SOMA ← A + B;

escreva(SOMA);

fim.

Capítulo 3) Fluxograma

Capítulo 4) Programa C ou Assembly

C é uma linguagem de programação compilada de propósito geral, estruturada, imperativa, procedural, padronizada pela ISO, criada em 1972, por Dennis Ritchie, no AT&T Bell Labs, para desenvolver o sistema operacional Unix (que foi originalmente escrito em Assembly).

C é uma das linguagens de programação mais populares e existem poucas arquiteturas para as quais não existem compiladores para C. C tem influenciado muitas outras linguagens de programação, mais notavelmente C++, que originalmente começou como uma extensão para C.

Poder-se dizer que o C é uma das maravilhas das linguagens de programação. Muitos dos programas existentes hoje foram escritos nesta linguagem.

•Portabilidade entre máquinas e sistemas operacionais

•Dados compostos em forma estruturada

•Total interação tanto com o SO como com a máquina

•Código compacto e rápido.

Nos anos 80, C era a linguagem mais utilizada por programadores, por permitir a escrita intensiva de todas as características das linguagens anteriores. O Próprio UNIX e Linux foram escritos em C, assim como o front-end do MS-DOS, Windows e as aplicações Office mais usadas no mundo (OpenOffice.org, Microsoft Office, embora cada uma delas incluísse suas próprias linguagens de script), sendo também utilizada em aplicações gráficas e criação de efeitos especiais nos filmes Strar Trek e Star Wars.

•Vantagens: programas extremamente rápidos e pequenos.

•Desvantagens: tempo de desenvolvimento lento e sujeito a erros C

C

Paradigma

Programação estruturadaProgramação imperativaProgramação procedural

Surgido em

1972

Última versão

C99 (1999)

Versão em teste

{{{versao_beta}}} ()

Criado por

Dennis Ritchie

Estilo de tipagem:

Estática, Fraco

Compiladores

Borland C, GNU GCC, Microsoft Visual Studio, Turbo C, Watcom C, Tiny C Compiler

Dialetos:

ANSI C, C99, ISO C, K&R C

Influenciada por

ALGOL 68, Assembly, B, BCPL, CPL, Fortran, PL/I

Influenciou

AWK, BitC, C++, C♯, C Shell, D, Euphoria, Go, Java, JavaScript, Limbo, Logic Basic, Objective-C, Perl, PHP

Licença:

Dependente de implementação

Programa Olá Mundo

A seguinte aplicação foi publicada na primeira edição de C de K&R, e tornou-se no programa de introdução padrão da maior parte dos livros sobre C. O programa envia o texto "Olá, Mundo!" para a saída padrão, que é normalmente o console, mas que também pode ser um ficheiro (ou arquivo), um outro dispositivo qualquer, ou até mesmo um bit bucket, dependendo de como a saída-padrão é mapeada na altura em que o programa é executado.

int main()

{

printf("Olá, Mundo!\n");

}

Apesar do programa acima correr corretamente, atualmente origina algumas mensagens de aviso quando compilado com C ANSI. Essas mensagens podem ser eliminadas efectuando umas pequenas alterações no programa original:

#include /* Pacotes com funções de entrada e saída */

int main(void)

{

printf("Olá, Mundo!\n");

return 0; /* Retorna 0, pois main retorna um int */

}

/* Nova linha após fechar a chave principal */

A primeira linha do programa é uma diretiva de pré-processamento #include, que causa com que o pré-processador substitua aquela linha pela totalidade do conteúdo do arquivo qual diretiva se refere. Neste caso o arquivo padrão stdio.h (que contém protótipos de funções para trabalho com entrada e saída) irá substituir a linha. Os caracteres < e > indicam que o arquivo stdio.h encontra-se no local em que, quando da configuração do compilador, se definiu como padrão para localização dos ficheiros de inclusão (header files, geralmente com a extensão .h).

A linha (não-vazia) seguinte indica que uma função denominada main será definida. A função main tem um significado especial nos programas de C, pois é a função que é inicialmente executada ou em inglês entry point. Os caracteres { e } delimitam a extensão da função. O termo int define a função main como sendo uma função que retorna um número inteiro. O termo void indica que a função não aceita parâmetros. A função main, normalmente aceita parâmetros, que são passado pela linha de comando. Os compiladores e sistemas operacionais atuais reconhecem as seguintes declarações de main:

int main(int argc, char ** argv)

int main(int argc, char * argv[])

A linha seguinte "chama", ou executa uma função chamada printf; o arquivo incluído, stdio.h, contém a informação que descreve a forma como a função printf deve ser chamada. Nesta chamada, é passado à função printf um único argumento, a linha de texto constante "Olá, Mundo!\n". A função printf retorna um valor, um int, mas como não é usado ela é descartada pelo compilador. O comando return retorna o valor 0 para o sistema, que é interpretado pelo mesmo como que a função main() foi executada e encerrada com sucesso (sem erros). Por fim, o caracter } indica o fim da função main. Note-se que texto rodeado por /* e */ (comentários de texto) é ignorado pelo compilador. Os compiladores que obedecem à norma C99 também aceitam como comentários as linhas de texto que são precedidos por //.

Matemática

O seguinte código realiza seis operações matemáticas, adição, subtração, multiplicação, divisão, exponenciação e radiciação, e em seguida envia os seus respectivos resultados para a saída padrão (normalmente o console).

#include // necessária para pow() e sqrt()

#include // necessária para printf() e getchar()

int main()

{

int a = 2, b = 3;

printf("%d + %d = %d\n", a, b, a + b);

printf("%d - %d = %d\n", a, b, a - b);

printf("%d x %d = %d\n", a, b, a * b);

printf("%d / %d = %0.1f\n", a, b, (float) a / b); // resultado fracionário

printf("%d elevado a %d = %0.1f\n", a, b, pow(a, b)); // pow(base, expoente)

printf("raiz quadrada de %d = %0.1f\n", a, sqrt(a));

getchar(); //O uso dessa função é necessária apenas nos sistemas Windows, para manter o terminal (Prompt de comando) aberto

return 0;

}

Estruturas de dados

No exemplo seguinte, é criada uma estrutura composta por 3 elementos de tipos diferentes. Após ser declarada uma variável "x" do tipo struct "y", onde "y" é o nome da estrutura, para se acessar os elementos usa-se a seguinte sintaxe: x.elemento.

#include

struct Pessoa

{

char nome[64]; // vetor de 64 chars para o nome

unsigned short int idade;

char rg[13];

};

int main()

{

struct Pessoa exemplo = {"Fulano", 16, "00.000.000-00"}; // declaração da variável "exemplo"

printf("Nome: %s\n", exemplo.nome);

printf("Idade: %hu\n", exemplo.idade);

printf("RG: %s\n", exemplo.rg);

getchar(); // desnecessário, mas comumente utilizado em ambientes windows para "segurar" o terminal aberto

return 0;

}

Ou, equivalente:

#include

typedef struct Pessoa

{

char nome[64]; // vetor de 64 chars para o nome

unsigned short int idade;

char rg[13];

} Pessoa;

int main()

{

Pessoa exemplo = {"Fulano", 16, "00.000.000-00"}; // declaração da variável "exemplo"

printf("Nome: %s\n", exemplo.nome);

printf("Idade: %hu\n", exemplo.idade);

printf("RG: %s\n", exemplo.rg);

getchar();

return 0;

Capítulo 5) Editor ou compilador

Lista de Compiladores de C e C++

Nome

Gratuito

Descrição

Dev-C++

sim

Criado pela Bloodshed, o melhor para quem é iniciante tanto na linguagem quanto na programação. Tem suporte a projeto e boa interface com o usuário. A desvantagem é a impossibilidade de se criar projetos muito extensos. Apesar de compilar a linguagem C, seu código é escrito em um código totalmente diferente - o Delphi!

GCC

sim

Compilador utilizado pelo projeto GNU. É padrão ANSI C e nativo do sistema Linux, facilitando muito a vida de usuários Linux, pois não é preciso instalar compiladores de terceiros. Seu único problema é a falta de uma interface, que prejudica quem é principiante na linguaguem.

C++ Builder

não

O C++ Builder é um dos melhores compiladores que tem, com possibilidade de criação de projetos extensos. A Borland mantém no site da Code Gear duas versões: uma demo e outra paga. Ele segue o padrão ISO ou ANSI C, mas também tem muitas bibliotecas não padrão, fazendo muitas vezes com que o programa perca a portabilidade e o código escrito no C++ Builder não rode em outros compiladores, mesmo que a linguagem C seja a mesma.

Visual C++

não

O visual C++ é um compilador profissional da Microsoft que compõe o pacote Visual Studio, com vários recursos, como incremento de código, depurador de erros avançado e outras ferramentas que aumentam a produtividade do programador. O problema é que por ser da Microsoft tem o preço elevado e só compensará se você for usar esta linguagem para desenvolvimento profissional em aplicações Windows. Tem uma versão trial no site oficial.

Capítulo 6) Microcontrolador 8051

Intel P8051

O Intel 8051 faz parte de uma popular família de microcontroladores de 8 bits lançada pela Intel em 1977. É conhecido por sua facilidade de programação, em linguagem assembly graças ao seu poderoso conjunto de instruções. É tido como o microcontrolador mais popular do mundo, pois existem milhares de aplicações para o mesmo, e existem pelo menos dois mil fabricantes produzindo variantes e clones do modelo. Atualmente possui diversos modelos clones sendo produzidos por empresas diversas à Intel. Por ser um microcontrolador CISC, oferece um conjunto de instruções muito vasto que permite executar desde um simples programa que faz piscar um LED até um programa de controle de acesso controlado por rede

O 8051 possui uma memória ROM que faz parte da arquitetura interna do chip, na qual será armazenado exclusivamente o programa que a CPU executará, não os dados, pois esses serão gravados em outra memória (RAM), que pode ser interna ou externa. A memória ROM tem a característica de poder ser gravada apenas uma vez, em geral, na fábrica. Este fato inviabiliza que os projetistas utilizem o 8051 em sua bancada. Para realizar projetos, normalmente utiliza-se o 8031 que não possui esta memória interna de programa (ROM), somente a de dados (RAM). Neste caso o programa é gravado numa memória externa muito conhecida e barata chamada EPROM e a gravação é feita por um equipamento também popular, chamado gravador de EPROM. Além disso, pode-se utilizar, uma RAM estática com excelente resultado, pois com ela, é possível criar o programa num computador pessoal e enviá-lo ao microcontrolador através de um cabo serial, sem a necessidade de qualquer outro equipamento auxiliar.

Uma outra versão (8751) também pode ser utilizada para desenvolvimento de projetos por apresentar uma EPROM como memória de programa integrada ao chip. Atualmente esta versão ja está praticamente preterida por versões que apresentam memória FLASH, por exemplo o 8252. Mas enfim, se o leitor compreender o funcionamento básico do 8031, estará formando conhecimento didático para operar todos os membros desta família, sejam do fabricante original ou dos clones.

8051

O 8051 é o microcontrolador mais usado atualmente. É um dispositivo simples, mas de grande aplicação. Podemos encontrá-lo em circuitos lógicos que atuam na área da automação industrial, rádios, telefones celulares, microondas e etc. Fabricado pela Intel, o 8051 mostra-se como uma solução de baixo custo e facilidade de uso. Sua programação é feita em Assembly, e tem dois modos de funcionamento: 1) Modo Mínimo: onde são usados somente os recursos internos, não havendo a necessidade de outros componentes externos, possibilitando o uso das quatro portas para controle de I/O. 2) Modo Expandido: onde as memórias ROM e RAM são expandidas usando-se CIs externos. Mas tem a desvantagem de perder duas de suas portas para comunicação com as memórias externas.

6.1) Pinagem do Microcontrolador

6.2) Características

· 20 Portas de I/O bidirecionais endereçáveis por bit

· 1 Canal serial UART com interrupção e 3 modos de operação

· 2 Timers/Contadores de 8/16 bit com 4 modos de operação cada um

· 5 Entradas de interrupção com arquitetura nesting

· 128+128 bytes de memória RAM interna, sendo apenas 128 bytes de uso geral

· 8 Kbytes de memória PROM interna (desabilitáveis)

· Até 64Kbytes de memória RAM externa (não compartilhada)

· Até 64Kbytes de memória ROM externa (não compartilhada)

· Pino de saída de oscilador de meia onda (1/4 do clock)

· Clock de 1 a 120Mhz

· 8 bancos de registradores

· Arquitetura CISC

6.3) Variantes

Existem versões que incorporam funções diversas como:

· Portas I/OU

· geradores [PWM]

· portas seriais [USART]

· portas seriais de alta velocidade [SPI]

· memória [flash] interna de 8 a 64Kbytes, memoria RAM interna de 1 a 4Kbytes

· memoria interna regravavel em sistema ([ISP])

· sistemas de alta velocidade (x2 e 1-Clock Cycle)

· chip interno para a reprodução de sons em formato MP3 (Vide: [Atmel] [8952SND1A])

· conversores A/D e D/A

Como ilustração, é interessante conhecer mais três membros desta família:

· O 8751, que tem a mesma arquitetura do 8051, porém a sua memória interna de programa é uma EPROM, que pode ser regravada através de um equipamento construído especificamente para esta finalidade. Isto o torna um chip passível de ser utilizado em bancada de projetos.

· O 8052, que pertence a uma classe mais recente e possui 8 KB de memória de programa que utiliza a tecnologia flash para armazenamento. Ele vem com 256 bytes de memória RAM livres, além dos registradores. Sua arquitetura comporta também três temporizadores ao invés de dois.

· O 80550 utiliza a memória interna de programa fabricada com a tecnologia EPROM e vem agregado com um conversor analógico/digital (A/D) de 8 canais além de outras funcionalidades.

6.4) Processadores relacionados

O predecessor do 8051, o 8048, foi utilizado no teclado do primeiro IBM PC, onde convertia o sinal das teclas em um sinal serial que era enviado a unidade principal do computador. O 8048 e derivados ainda são utilizados hoje em dia (2007) para modelos básicos de teclados.

O 8031 foi uma versão de custo reduzido do original Intel 8051 que não possui nenhuma memoria interna para programação (ROM). Este fato o torna o microcontrolador mais barato para implementação de projetos. A grande maioria dos kits didáticos são baseados no 8031. A facilidade de encontrar memórias EPROM e RAM de baixo custo o tornaram o microcontrolador mais utilizado nas universidades e cursos técnicos.

O 8052 foi uma versão melhorada da versão original Intel 8051 que dispõe de 256 bytes de memória RAM interna ao invés dos 128 bytes, 8 kB de ROM ao invés dos 4 kB, e um terceiro timer de 16-bit. O 8032 possui as mesmas características exceto pela memória interna de programa .

6.5) Microcontrolador PIC

Os PIC (PICmicro): são uma família de microcontroladores fabricados pela Microchip Technology, que processam dados de 8 bits, de 16 bits e, mais recentemente, de 32 bits. Seu nome é oriundo de "Programmable Interface Controller" (Controlador de Interface Programável). Contam com extensa variedade de modelos e periféricos internos. Possuem alta velocidade de processamento devido a sua arquitetura Harvard e conjunto de instruções RISC (conjuntos de 35 instruções e de 76 instruções), com recursos de programação por Memória flash, EEPROM e OTP. Os microcontroladores PIC têm famílias com núcleos de processamento de 12 bits, 14 bits e 16 bits e trabalham em velocidades de 0kHz (ou DC) a 48MHz e velocidades de 16 MIPS em alguns modelos. Há o reconhecimento de interrupções tanto externas como de periféricos internos. Funcionam com tensões de alimentação de 1.8 a 6V e os modelos possuem encapsulamento de 6 a 100 pinos em diversos formatos (SOT23, DIP, SOIC, TQFP, etc).

História

As raízes dos PICs se originaram na universidade de Harvard com um projeto para o Departamento de Defesa, mas este foi vencido por um projeto de memória mais simples (e mais confiável na época) da Universidade de Princeton. A arquitetura Harvard foi primeiramente usada no 8x300 da Signetics, e foi adotada pela General Instruments para uso como interface controladora de periféricos (PIC) que foi projetada para compensar o fraco barramento de I/O da sua CPU CP1600 de 16 bits. A divisão de microeletrônica foi depois transformada na Arizona Microchip Technology (por volta de 1985), com os PICs como seu produto principal. Os PICs tinham um grande conjunto de registradores (de 25 a 192 registradores de 8 bits, comparado com os 144 do Z8). Existem até 31 registradores diretos, mais um acumulador W, embora R1 a R8 também tenham funções especiais - R2 é o PC (com uma pilha implicita de 2 a 16 níveis), e R5 a R8 controlam as portas de I/O. R0 é mapeado no registrador R4 (FSR) e serve como apontador (semelhante ao ISR no F8, ele é o único meio de se acessar o registrador R32 ou acima).

O PIC16x é muito simples, tem somente 33 instruções de 12 bits de largura fixa, incluindo diversas instruções de salto condicional a flags para a próxima instrução (para loops e rotinas condicionais), produzindo um código enxuto importante para aplicações em sistemas embarcados. Ele tem pipelines marginais (2 estágios, 1 de busca e 1 de execução), combinados com execução em um ciclo (exceto para saltos, com 2 ciclos), tendo um desempenho muito bom para a sua categoria.

O PIC 17x tem mais modos de endereçamento (direto, indireto, e relativo; as instruções de modo indireto gastam 2 ciclos para execução), mais instruções (58 de 16 bits), mais registradores (232 a 454), mais até 64k palavras de espaço de programa (2k a 8k no chip). As versões top de linha também possuem instruções de multiplicação de 8 bits sem sinal de 1 ciclo. Esse modelo está obsoleto, não sendo mais recomendado para novos projetos de acordo com a Microchip.

O PIC 16x é uma variante interessante do projeto de 8 bits feita por volta de 1985 pela General Instruments com técnicas de projeto mais inovadoras do que a de outras CPUs da lista (o 1650, o sucessor do 1600 mais comum). Ela perdeu para outras CPUs mais populares e foi posteriormente vendida para a Microchip Technology, que ainda o vende para pequenas aplicações em sistemas embarcados.

Do controle de portas para controlador RISC

Em 1965 a General Instruments criou a divisão de microeletrônica, e sem dúvida usou esta divisão para gerar algumas das primeiras arquiteturas de memórias EPROM e EEPROM viáveis. A Divisão de Microeletrônica da General Instrumens foi responsável também por uma grande variedade de funções digitais e analógicas, com as famílias AY3-xxxx e AY5-xxxx.

A General Instruments também criou um microprocessador de 16 bits chamado CP1600, no começo dos anos 70. Era um microprocessador razoável, mas especialmente era pobre em portas de entrada e saída. Para algumas aplicações muito específicas onde as portas de I/O eram necessárias, a General Instruments projetou uma interface controladora de periféricos (ou PIC abreviadamente, de Peripherical Interface Controller em inglês), por volta de 1975. Ele era projetado para ser muito rápido, dado que era para ser portas de I/O de uma máquina de 16 bits, mas não tinha uma grande capacidade de funcionalidade, tendo um conjunto de instruções microcodificadas pequeno. A arquitetura projetada em 1975 é substanciamente a arquitetura de hoje do PIC16C5x. A versão de 1975 foi fabricada em NMOS, e era somente disponível em versões ROM mascaradas. O mercado, contudo, não pensava particularmente assim, e os PICs permaneceram projetados somente para um punhado de grandes clientes.

No final dos anos 80, a General Instruments fez uma grande revisão no seu negócio e se restruturou, deixando para se concentrar nas suas atividades principais, que eram essencialmente semicondutores de potência. A Divisão de Microeletrônica da General Instruments se tornou a General Instruments Microelectronics Inc. (subsidiária integral), da qual 85% foi finalmente vendida para alguns investidores, incluindo a fábrica em Chandler, no Arizona. O pessoal desses investidores analisou profundamente a linha de produtos e fez uma limpeza na maioria deles, como a linha AY3 e AY5 e outros produtos, restando como negócio principal os PICs e as EEPROMs paralelas. Houve uma decisão de reiniciar uma nova empresa, chamada Arizona Microchip Technology.

Câmera digital Olympus C-150 vista através de lentes macro

Como parte da estratégia, a família NMOS PIC165X foi reprojetada para usar um recurso em que a empresa era muito, o EPROM, o conceito de ser baseado em CMOS, one-time-programmable e assim a família PIC16C5X de memória de programa EPROM apagável tinha nascido.

PIC é uma família de microcontroladores RISC fabricada pela Microchip, derivada do PIC1650 originalmente desenvolvida pela divisão de microeletrônica da General Instruments. A Microchip não usa PIC como um acrônimo, na realidade a marca é PICmicro. Geralmente é conhecido que PIC significa Peripherical Interface Controller, embora o acrônimo original para o PIC1650 era Programmable Intelligent Computer.

O PIC original foi fabricado para ser usado com a nova CPU de 16 bits da General Instruments, o CP1600. Apesar de ser uma boa CPU, o CP1600 tinha fraco desempenho de portas de I/O, e o PIC de 8 bits foi desenvolvido em 1975 para melhorar o desempenho do sistema em geral liberando as tarefas de I/O da CPU. O PIC usava simples microcódigos armazenados na ROM para desempenhar suas tarefas, e e embora o termo não tenha sido usado na época, ele tinha um projeto RISC que executava uma instrução por ciclo (4 ciclos de clock).

Em 1985, a General Instruments vendeu a divisão de microeletrônica, e os novos donos cancelaram quase tudo, o que na época era obsoleto. Os PICs contudo, foram atualizados com EPROM para produzir um controlador programável, e hoje uma grande variedade de PICs é disponível com vários periféricos internos (módulos de comunicação serial, UARTS, núcleos de controle de motores, etc.) e memória de programa de 512 a 32k palavras.

Programação e Desenvolvimento

Como qualquer arquitetura os processadores PIC apenas aceitam linguagem de máquina (assembly). No entanto a programação pode ser feita em linguagens de alto nível utilizando-se compiladores. Existem várias alternativas pagas de compiladores. Em geral é possivel utilizá-los de modo gratuito com algumas restrições. Para as famílias PIC16 e PIC18 existe uma alternativa opensource o SDCC, que pode ser configurado para operar com o MPLAB.

Existem ainda diversas IDE's disponíveis para a programação, entre elas a mais utilizada é o MPLAB, disponibilizado de modo gratuíto pela própria Microchip. Há atualmente uma versão beta de IDE baseada no Netbeans sendo desenvolvida pela Microchip: MPLABX. Esta IDE já vem com suporte para qualquer Windows, Mac e Linux.

Para gravar o programa no microcontrolador é utilizado um dispositivo dedicado. É comum que tais dispositivos também possuam capacidade de debuggar o programa, que auxilia muito na fase de testes dos sistemas. É possivel ainda encontrar diversas placas de desenvolvimento que já possuem um hardware pré-montado de modo a agilizar o projeto de um produto, permitindo que se comece a desenvolver o software em paralelo com o hardware.

Periféricos internos

Câmera digital Olympus C-150 vista através de lentes macro

Seus principais periféricos internos (a disponibilidade varia conforme o modelo):

· USARTs

· Controladores de comunicação I2C, SPI, USB e Paralelo

· Controladores PWM

· Controladores de LCD

· Controladores de motores

· Gerador de energia de alta potência

· Periféricos para LIN, CAN

· Controladores Ethernet

· Periféricos IRDA

· Codificadores para criptografia Keeloq

· Watchdog timer

· Detetores de falha na alimentação

· Portas digitais com capacidade de 25mA (fornecer ou drenar) para acionar circuitos externos

· Osciladores internos

· RTCC - Real Time Clock and Calendar (Relógio de tempo real e calendário)

· Tecnologia Deep Sleep - consumo de nano Watt

· CRC - Cyclic Redundancy Check programável

Modelos comuns de PICs

· PIC16F84/PIC16F84A

· PIC16F628/PIC16F628A

· PIC16F877/PIC16F877A

· PIC18F452/PIC18F4520

· PIC16F876

· PIC24F/PIC24H

Referências Bibliográficas

Referências

1. ↑ Cruz, Adriano Joaquim de Oliveira (1 de janeiro de 1997). Algoritmos. Núcleo de Computação Eletrônica da Universidade Federal do Rio de Janeiro. Página visitada em 12 de janeiro de 2012.

2. ↑ Linder, Marcelo Santos. Programação para Computação. Universidade Federal do Vale de São Francisco. Página visitada em 12 de janeiro de 2012.

3. ↑ Introdução à programação científica. Grupo de Estudos sobre Movimento Humano (20 de abril de 2011). Página visitada em 12 de janeiro de 2012.

4. ↑ Loureiro, Antônio Alfredo Ferreira (1 de janeiro de 2010). Análise de complexidade. Departamento de Computação da Universidade Federal de Ouro Preto. Página visitada em 12 de janeiro de 2012.

↑ TAVARES, P. de Campos; Algoritmo, in "Enciclopédia Verbo Luso-Brasileira da Cultura, Edição Século XXI", Volume II, Editorial Verbo, Braga, Janeiro de 1998 ISBN 972-22-1864-6

Bibliografia

Algoritmos e Programação - Teoria e Prática: para universitários e profissionais de informática: Novatec Editora. ISBN 85-7522-073-X

SICA, Carlos. Sistemas Automáticos com Microcontroladores 8031/8051. 1 ed. São Paulo - SP: Novatec, 2006. 192 p. 1 vol. vol. 1. ISBN 85-7522-083-7

SenhaPágina 4