microcontroladores da arquitetura Harvard modificada fabricados pela Microchip Technology, que processam dados de 8 bits, de 16 bits e, mais recentemente, de 32 bits. São derivados do PIC1650 originalmente desenvolvidos pela divisão de microeletrônica da General Instrument. Seu nome é oriundo de "Programmable Interface Controller" (Controlador de Interface Programável), anteriormente conhecido como "Peripheral Interface Controller" (Controlador de Interface Periférica), hoje conhecido apenas como PIC."MOS DATA 1976", General Instrument 1976 Databook"1977 Data Catalog", Micro Electronics from General Instrument Corporation http://www.rhoent.com/pic16xx.pdf Contam com extensa variedade de modelos e periféricos internos. Possuem alta velocidade de processamento devido a 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 0 kHz (ou DC) a 48 MHz 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).
Os PICs são populares, tanto industrialmente como para hobbystas graças ao seu baixo custo, ampla disponibilidade, grande base de usuários, extensa coleção de notas de aplicação, disponibilidade de ferramentas de desenvolvimento de baixo custo ou grátis, e capacidade de programação serial e reprogramação com memória flash.
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 de 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. Um exemplo deste microcontrolador é uma pequena placa chamada Basic Stamp. que consiste em 2 circuitos integrados (1 PIC 16C56 de 18 pinos, um interpretador Basic em 512 palavras de ROM e uma memória EEPROM serial de 256 bytes) com uma porta de I/O onde os programas do usuário podem ser armazenados (por volta de 80 linhas de comando de Basic).
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.
thumb|300px|PIC1655A-748
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.
Arquitetura de núcleo A arquitetura do PIC é caracterizada pelos seus múltiplos atributos: Espaços separados de instruções e dados (Arquitetura Harvard). Um pequeno número de instruções de tamanho fixo. A maioria das instruções são de execução de único ciclo (2 ciclos de clock, ou 4 ciclos de clock em modelos de 8 bits), com um ciclo de atraso em desvios (branch) e saltos. Um acumulador (W0), cuja utilização (como fonte operando) está implícita (ou seja, não é codificado no código de operação, ou opcode). Todos os locais de memória RAM funcionam como registradores como fonte e / ou destino de matemática e outras funções.http://ww1.microchip.com/downloads/en/DeviceDoc/35007b.pdf Uma pilha em hardware para armazenamento de endereços de retorno. Uma pequena quantidade de espaço de dados endereçável (32, 128, ou 256 bytes, dependendo da família), alargada através de banking. Sinalizadores de status da ULA são mapeados para o espaço de dados. O Program Counter também é mapeado no espaço de dados e é gravável (este é usado para implementar saltos indirectos). Não há distinção entre o espaço de memória e o espaço de registradores porque a RAM faz o trabalho de memória e de registradores, e a memória RAM é geralmente referida apenas como o arquivo de registro ou simplesmente como os registradores.
Espaço de Dados (RAM) PICs têm um conjunto de registradores que funcionam como uma RAM de propósito geral. Registradores de controle especiais para recursos de hardware também são mapeados para o espaço de dados. A capacidade de endereçamento de memória varia dependendo da série de dispositivo, e todos os dispositivos PIC tem algum mecanismo para estender para endereçamento de memória adicional. Séries de dispositivos mais recentes possuem instruções de transferências que podem cobrir todo o espaço endereçável, independente do banco seleccionado. Em dispositivos anteriores, qualquer movimento nos registradores tinha que ser feito através do acumulador.
Para implementar endereçamento indireto, um "file select register" (registrador de seleção de arquivo - FSR) e "indirect register" (registrador indireto - INDF) são usados. Um número de registrador é gravado no FSR, após o que lê ou escreve para INDF vai ser realmente para ou a partir do registrador apontado por FSR. Dispositivos posteriores estenderam esse conceito com pós e pré-incremento / decremento para maior eficiência no acesso aos dados armazenados sequencialmente. Isto também permite que o FSR seja tratado quase como um ponteiro de pilha (SP).
Memória de dados externa não é endereçável diretamente, exceto em alguns dispositivos PIC18 com grande quantidade de pinos.
Espaço de Instruções O espaço de instruções geralmente é implementado como ROM, EPROM ou flash ROM. Em geral, a memória de instruções externa não é endereçável directamente devido à falta de uma interface de memória externa. As exceções são PIC17 e selecione dispositivos PIC 18 com grande quantidade de pinos.http://ww1.microchip.com/downloads/en/AppNotes/00869b.pdf
Palavra de memória Todos os PICs manipulam (e endereçam) dados em blocos de 8 bits. No entanto, a unidade de endereçamento do espaço de código geralmente não é o mesmo que o espaço de dados. Por exemplo, famílias de PICs na linha de base (PIC12) e mid-range (PIC16) têm memória de instruções endereçável no mesmo tamanho como a largura de instrução, ou seja, 12 ou 14 bits, respectivamente. Em contraste, na série PIC18, a memória de instruções é dirigido em incrementos de 8 bits (bytes), que difere da largura da instrução de 16 bits.
Pilhas