Professional Documents
Culture Documents
1. Microcontrolador PIC
Este captulo descreve a arquitectura dos microcontroladores da famlia PIC. Estes microcontroladores so bastante versteis e esto presentes numa grande gama de sistemas embebidos de pequena dimenso. dada nfase gama PIC16C5X [1]. Ao longo do captulo so explicadas a arquitectura interna, o conjunto de instrues, e as operaes mais relevantes destes microcontroladores.
1.1 Introduo
Os microcontroladores tm um conjunto de instrues especfico, incorporam uma soluo num nico circuito integrado, tm facilidades de manipulao de bits, de portos de E/S, etc. A maioria dos microcontroladores so do tipo CISC1, que tem a propriedade de possuir um conjunto alargado de instrues. No entanto, graas ao reduzido conjunto de instrues, elevados desempenhos, menor complexidade do integrado, menor rea de silcio, e menor potncia dissipada, a arquitectura RISC2 tem tendncia a ser utilizada no projecto de microcontroladores. Os PIC so um exemplo de microcontroladores com uma arquitectura prxima dos RISC. Os microcontroladores PIC cobrem um hiato entre a lgica discreta e os restantes Micros mais poderosos (ex. 68xx ou 80xx). Pela arquitectura simples, pela existncia de elementos da famlia com poucos pinos (reduzidas dimenses), pelo desempenho, pelo reduzido conjunto de instrues (facilmente memorizvel), e pelo preo reduzido, este tipo de microcontrolador de 8 bits excelente soluo para aplicaes embebidas de pequeno/mdio porte ou para substituio de um conjunto de lgica discreta. Ultimamente tm surgido inmeras aplicaes para os microcontroladores PIC que ilustram a popularidade e o interesse dos projectistas por este tipo de soluo. Este facto deve-se ptima relao preo/desempenho e existncia de vrias ferramentas de baixo custo disponveis para o
Do Ingls: Complex Instruction-Set Computer. Em portugus computador com conjunto complexo de instrues. Do Ingls: Reduced Instruction-Set Computer. Em portugus computador com conjunto reduzido de instrues.
1. MICROCONTROLADOR PIC
desenvolvimento de aplicaes. Como exemplo de utilizao acadmica salienta-se o estudo deste microcontrolador nas disciplinas relacionadas com arquitectura de microprocessadores do Instituto Superior Tcnico. A famlia PIC divide-se em trs gamas de microcontroladores: PIC17, PIC18, PIC16, e PIC12. As gamas existentes oferecem diversas opes: o tamanho da memria de programa e comprimento de instruo; o nmero de registos do ficheiro de registos; o nmero de portos de entrada/sada (E/S); o encapsulamento; a existncia de linhas de interrupo, a existncia de memria Flash, etc.
1.2 Arquitectura
A famlia de microcontroladores PIC tem como caractersticas gerais: Arquitectura baseada nos RISC. Reduzido conjunto de instrues ortogonal, no havendo discriminao no acesso a um registo genrico do ficheiro de registos. Arquitectura Harvard (barramento de dados independente do barramento de instrues), que possibilita o pipeline entre a procura3 e a execuo da instruo. Todas as instrues de igual tamanho, com tempo de execuo igual (1 ciclo) excepo de instrues de salto incondicional, instrues que afectam o PC4, chamadas a sub-rotinas, ou instrues de salto condicional quando a condio verdadeira (2 ciclos). Ficheiro de registos constitudo por 32 ou mais registos de 8 bits. Memria de programa interna (Flash, EPROM ou ROM). Temporizador do "co de guarda" e contador/relgio de tempo-real internos. Modo de endereamento directo, indirecto e relativo. Pinos de E/S oriundos de registos especficos do ficheiro de registos controlados bit a bit ou inteiramente. Instruo que coloca o microcontrolador em modo de adormecimento e que desactiva parte do integrado (economia no consumo de potncia). O elemento mais simples da gama de microcontroladores PIC16C5X, designado por PIC16C54 e arquitectura apresentada na Figura 1-1, possui 33 instrues (12 bits de comprimento), 512 palavras de 12 bits como limite mximo de memria de programa, pilha5 com 2 nveis, 32 registos de 8 bits, frequncia de relgio permitida de DC a 40 MHz, 12 linhas de E/S (8 bits para o porto B e 4 bits para
3 4 5
Em Ingls designada por fetch. Do Ingls Program Counter. Em Portugus contador de programa. Em Ingls stack.
1. MICROCONTROLADOR PIC
8 bits
TMR0 (F1) Status (F3) 8 bits Porto B (F6) MUX Descodificao da Instruo e Controlo MCLR ALU OST (Oscillator Start-up Timer) Reset de ligao do micro VDD, VSS Contador de Co de Guarda & Temporizador W Porto A (F5)
RTCC
8 bits
1.2.1 Instrues
Nas tabelas seguintes (referentes aos diversos formatos de instrues) apresentam-se: o cdigo para cada instruo, a mnemnica utilizada pelos assembladores da Microchip, a operao realizada, as flags afectadas por cada uma das instrues, e a descrio textual. A Figura 1-2 ilustra o formato das instrues que operam sobre o byte de um registo do ficheiro de registos, e a Tabela 1.1 descreve as instrues com este formato.
1. MICROCONTROLADOR PIC
11 opcode 6 5 d 4 f (FILE #) 0 d = 0, destino em W d = 1, destino em f
Figura 1-2. Formato de cada instruo sobre o ficheiro de registos orientada ao byte. opcode (Bin) Mnemnica Operao Registo de Status C, DC, Z Z Z Z Z Z Z Z Z C Descrio
0001 11df ffff 0001 01df ffff 0000 011f ffff 0000 0100 0000 0010 01df ffff 0000 11df ffff 0010 11df ffff 0001 00df ffff 0010 10df ffff 0011 11df ffff 0010 00df ffff 0000 001f ffff 0000 0000 0000 0011 01df ffff
ADDWF ANDWF CLRF CLRW COMF DECF DECFSZ IORWF INCF INCFSZ MOVF MOVWF NOP RLF
f,d f, d F f, d f, d f, d f, d f, d f, d f, d F f, d
W + f d|f W & f d|f 0f 0W ~f d|f f - 1 d|f f - 1 d|f W || f d|f f + 1 d|f f + 1 d|f f d|f Wf f(n) [d|f](n+1), C [d|f](0), f(7) C f(n) [d|f](n-1), C [d|f](7), f(0) C W f d|f f - W d|f f(0-3) f(4-7) d|f
Soma o contedo de W com o registo f (um registo do ficheiro de registos). "AND" de W com o registo f. Coloca a zero o registo f. Coloca a zero o registo W. Complementa o registo f. Decrementa o registo f. Decrementa o registo f. Se o resultado for zero salta a prxima instruo. OR do registo W com o registo f. Incrementa o registo f. Incrementa o registo f. Se o resultado for zero salta a prxima instruo. O contedo do registo f movido. Move o contedo de W para o registo f. Nenhuma operao. Rotao de um bit para a esquerda do contedo do registo f. O bit de transporte envolvido na rotao.
RRF
f, d
Rotao de um bit para a direita do contedo do registo f. O bit de transporte envolvido na rotao.
f, d f, d f, d
Z C, DC, Z -
XOR de W com o registo f. Subtrai W ao registo f em complemento para dois. Troca no registo f os 4 bms com os 4 bMs.
Tabela 1.1. Instrues sobre o ficheiro de registos orientadas ao byte. A Figura 1-3 ilustra o formato das instrues que operam sobre o imediato representado pelos 8 bits menos significativos das instrues deste tipo. A Tabela 1.2 descreve as instrues com este formato.
11 opcode 8 7 k (LITERAL) 0
1. MICROCONTROLADOR PIC
opcode (Bin) Mnemnica Operao Registo de Status Z Descrio
ANDLW CALL
k k
k&WW PC + 1 Pilha (PC + 1 Topo da pilha), k PC<7:0>, '0' PC<8> 00h WDT, 0 WDT k PC<8:0> k || W W kW k OPTION k W, Pilha PC (TOS PC) 0 PD, 1 TO; 00h WDT, 0 WDT W TRIS do porto f kWW
AND de W com o imediato de 8 bits, k. O resultado colocado no registo W. Chamada a uma sub-rotina. Primeiro, o endereo de retorno (PC+1) colocado na Pilha. O valor de 8 bits, k, carregado no PC<7:0>. O bit 8 do PC colocado a zero.
CLRWDT
TO, PD
Reset do WDT e tambm reset do prescalar do WDT se estiver atribudo. Os bits de status, TO e PD, so colocados a um.
101k kkkk kkkk 1101 kkkk kkkk 1100 kkkk kkkk 0000 0000 0010 1000 kkkk kkkk
k k k k
Z -
Coloca no PC o contedo de k. OR de W com os 8 bits do imediato k. O resultado colocado no registo W. Os 8 bits do imediato k so colocados no registo W. Os 6 bms do registo W so carregados no registo OPTION. O registo W carregado com os 8 bits do imediato k. O PC carregado do topo da Pilha (o endereo de retorno). Esta instruo demora 2 ciclos.
SLEEP
TO, PD
O bit de status PD (power down) colocado a zero. O bit de status TO (time-out) colocado a um. O WDT e o pr-escalar se lhe estiver atribudo so colocados a zero. Desliga os relgios internos (modo de adormecimento).
TRIS XORLW
f k
O registo TRIS de f (f = 5, 6, ou 7) carregado com o contedo do registo W. XOR de W com os 8 bits do imediato k. O resultado colocado no registo W.
Tabela 1.2. Instrues com imediatos e de instrues de controlo. A Figura 1-4 ilustra o formato das instrues que operam sobre um dos bits de um registo do ficheiro de registos. A Tabela 3.3 descreve as instrues com este formato.
11 8 opcode 7 5 4 f (FILE #) 0
b (BIT #)
Figura 1-4. Formato de cada instruo sobre o ficheiro de registos orientada ao bit.
1. MICROCONTROLADOR PIC
opcode (Bin) Mnemnica Operao Registo de Status Descrio
f, b f, b f, b
BTFSS
f, b
0 f(b) 1 f(b) Testa bit ficheiro f: se zero. Testa bit ficheiro f: se um.
O bit b do registo f colocado a zero. O bit b do registo f colocado a um. Se o bit b do registo f igual a zero, ento salta a prxima instruo.
b do Salta b do Salta
1. MICROCONTROLADOR PIC
8 7 0
f0 f1 f2 f3 f4 f5 f6 f7
f31
f0 f1 f2 f3 f4 f5 f6 f7 f8
f32
1. MICROCONTROLADOR PIC
prprio f0, na leitura lido zero e a escrita corresponde execuo de um NOP (no efectuada qualquer operao).
TMR0 f(1)
PSA
PS2-PS0
Figura 1-7. Diagrama de blocos do circuito que faz a atribuio do pr-escalar ao Timer0/WDT.
1. MICROCONTROLADOR PIC
1. A instruo GOTO modifica os 9 bits do PC, com os 9 bits do endereo especificado pela instruo. 2. A instruo CALL coloca a zero o nono bit do PC e carrega directamente os restantes com o endereo especificado pela instruo. colocado na pilha o valor de PC+1. 3. A instruo RETLW carrega o PC com o valor de topo da pilha. 4. Quando a instruo enderea o PC como registo destino (ex. MOVWF 2) os 8 bits so carregados com o contedo do registo W, o nono bit colocado a zero, e executado um NOP no ciclo de instruo imediatamente a seguir.
DC
PD
TO
5 6 7
1. MICROCONTROLADOR PIC 1.3.5 Registo de seleco indirecta f4 (FSR: File Select Register)
10
Este registo permite o endereamento indirecto de um registo. Os 5 bms seleccionam um dos 32 registos do ficheiro de registos no modo de endereamento indirecto (endereando o registo f0 em qualquer instruo que manipule registos). Os 3 bMs tm o valor lgico 1. Caso no seja usado o modo de endereamento indirecto este registo pode ser usado como um registo de propsito geral com 5 bits.
10
1. MICROCONTROLADOR PIC
bit PS0 PS1 PS2 PSA Descrio da funcionalidade
11
0 1 2 3
{PS2, PS1, PS0} valor do pr-escalar. bit de atribuio do pr-escalar (atribuio mutualmente exclusiva):
(1) '0' (2) '1' Timer0 WDT incrementa na transio ascendente do pino T0CKI. incrementa na transio descendente do pino T0CKI. relgio interno de instruo (CLKOUT) sinal no pino T0CKI
TOSE
TOCS
Tabela 1.5. Descrio de cada bit do registo OPTION. Os estados possveis do pr-escalar, formado pelos bits {PS2, PS1, PS0}, e o perodo do ciclo de relgio, em relao ao ciclo de instruo esto representados na Tabela 1.6. PS2 0 0 0 0 1 1 1 1 PS1 0 0 1 1 0 0 1 1 PS0 0 1 0 1 0 1 0 1 Timer0 1:2 1:4 1:8 1 : 16 1 : 32 1 : 64 1 : 128 1 : 256 WDT 1:1 1:2 1:4 1:8 1 : 16 1 : 32 1 : 64 1 : 128
Tabela 1.6. Pr-escalares possveis para o temporizador do co de guarda e para o contador/relgio em tempo-real.
1.4.3 Registo W
Registo utilizado pelas instrues como segundo operando ou de suporte de transferncias internas de dados e equivalente ao acumulador de algumas arquitecturas. Todas as intrues lgicas, aritmticas e de movimento de dados usam este registo. As instrues que acabam em WF, usam, como um dos operandos de entrada o valor de W, e colocam o resultado em W ou no registo que identificou o segundo operando de entrada (Exemplo 1.1). ADDWF 6, W ADDWF 6 ; W = W + F6 ; F6 = W + F6
11
12
A Figura 1-8 ilustra a memria de programa para o PIC16C54. Na figura tambm apresentada a ligao do registo de PC e da pilha. Com um registo PC de 9 bits possvel enderear um espao de endereamento de 512 x 12 bits (000h at 1FFh). Uma instruo de NOP no vector de RESET (posio 1FFh) causa o recomeo da execuo do microcontrolador a partir da posio 000h.
Figura 1-8. Memria de programa, ligao com o registo PC e com os 2 nveis da pilha.
Instruo 1 Instruo 2
FETCH1
Figura 1.9. Diagrama temporal da execuo de uma instruo. A procura da prxima instruo realizada em paralelo com a descodificao e execuo da instruo actual. Devido ao pipelining dos dois estgios (busca e execuo) pode-se dizer que cada instruo executa num nico ciclo de relgio (sinal CLKOUT no pino OSC2) que equivale a 4 ciclos do relgio externo (pino OSC1) excepo das instrues de salto e instrues que mudem o valor do PC. Estas ltimas demoram 8 ciclos de OSC1 (2 ciclos de CLKOUT).
1.5.3 Imediatos
O microcontrolador possui instrues equivalentes s instrues com endereamentos de valores imediatos da maioria dos processadores. Estas instrues, que envolvem imediatos, com mnemnica
12
1. MICROCONTROLADOR PIC
13
acabada em LW, permitem a manipulao de constantes codificadas nos 8 bms da prpria instruo.
13
14
As tabelas de constantes (lookup tables) so implementadas atravs da modificao do PC pelo software (ver Exemplo 1.2). No existe outra forma de aceder a uma posio especfica da memria do programa. tabela andlw addwf retlw retlw retlw retlw 0x03 PC 0x01 0x02 0x03 0x04 ; Limita a tabela a 4 valores
Exemplo 1.2. Uso da instruo RETLW para a implementao de tabelas de valores: Neste exemplo retornado para o registo W o valor indexado pelos trs bms deste registo. A indexao de valores deve ser feita convenientemente, pois uma indexao fora dos limites das instrues RETLW provoca a execuo de instrues arbitrrias.
14
15
Para esta famlia de microcontroladores existe um vasto suporte de software para PC, desde assembladores cruzados9, simuladores, compiladores de C, etc. Da Microchip existe um pacote para DOS constitudo pelo MPALC [4] (assemblador) e MPSIM [5] (simulador). O MPALC gera o cdigo objecto no formato INHX8M (Merged 8-bit Intellec Hex Format). Alm do conjunto de instrues intrnsecas, o assemblador permite a utilizao de 27 mnemnicas extra [4] (pseudo-operaes) constitudas por uma ou mais instrues intrnsecas e que por vezes permitem maior clarividncia de programao. Para o programador aceder-lhes s necessita de colocar no ficheiro de programa a directiva: include Pseudoin.mac. O MPSIM simula por discretizao de eventos. A simulao pode ser feita passo-a-passo, ou estabelecendo pontos de paragem, que facilitam a depurao (debug) do cdigo. Aps a execuo de cada instruo pode ser visualizado o contedo dos registos internos do microcontrolador nesse instante. O simulador permite a edio de um ficheiro de estmulos (vectores de teste a aplicar aos pinos do microcontrolador). Uma nova verso das ferramentas para Windows tambm disponibilizada gratuitamente [6][7]. A Parallax tambm apresenta vrios produtos entre os quais um assemblador cruzado (PASM) e um simulador (PSIM) ilustrado na Figura 1-10. Estas ferramentas suportam as mnemnicas da Microchip ou pseudo-instrues. Esta redefinio da sintaxe de cada instruo permite instrues ou macro-instrues que, respectivamente, correspondem a mltiplas instrues ou a algumas instrues da Microchip, tornando menor o conjunto de instrues (ex. a Parallax empacota 10 instrues em uma instruo genrica MOV).
Em Ingls: cross-assemblers.
15
1. MICROCONTROLADOR PIC
16
Figura 1-10. Simulador PSIM da Parallax . Existem vrios compiladores de C para a famlia PIC. Estes permitem o desenvolvimento de software mais rapidamente, por se tratar de uma linguagem de alto nvel. Ao C so adicionadas construes que permitem o acesso s portas de entrada/sada, manipulao de dados do tipo bit, configurao dos temporizadores, etc., cruciais na maioria das aplicaes.
1.7 Sumrio
Conforme descrito neste captulo, os microcontroladores PIC so um exemplo de um microprocessador com diversas caractersticas para fazer face a uma gama variada de sistemas embebidos de pequena dimenso, o cdigo extremamente compacto, as aplicaes so inmeras, e nos ltimos anos tm tido taxas de popularidade elevadas, a que no so alheios os vrios artigos de aplicaes com este integrado em muitas revistas da especialidade.
1.8 Referncias [1] [2] [3] Microchip Data Book, Microchip Technology Inc., 2003. Embedded Control Handbook, Microchip Technology Inc., 2003. Tom A. Kellett, "Microcontroler FAQ/PIC: A collection of Information on the PIC Micro", 1995, newsgroups: sci.electronics. [4] MPCALC Assembler users guide, Microchip Technology Inc., 120 pp., 1994. 16
1. MICROCONTROLADOR PIC [5] [6] MPSIM users guide, Microchip Technology Inc., 120 pp., 1993.
17
MPASM Users Guide with MPLINK and MPLIB, Microchip Technology Inc., 1999.
[7]
MPLAB
IDE
v6.30,
http://www.microchip.com/1010/pline/tools/picmicro/devenv/mplabi/mplab6/ind ex.htm
17