Documente Academic
Documente Profesional
Documente Cultură
1INTRODUO
Na Dcada de 70 comearam a ser utilizados microprocessadores em
microcomputadores para uma maior eficincia no processamento de dados. O
microprocessador Intel foi um dos precursores e, a partir da, houve uma preocupao
em melhorar cada vez mais o sistema de processamento de dados atravs desses
componentes. Baseado na arquitetura de um microprocessador e seus perifricos, foi
criado um componente que (fisicamente em uma unidade) comportasse todo um sistema
que equivalesse a um microprocessador e seus perifricos; assim surgiu o
microcontrolador.
Registradores e contadores
1.2Processamento
O processador ou unidade central de processamento (CPU) a parte do sistema
que faz o processamento das informaes para que as instrues sejam executadas; as
instrues devem estar armazenadas na memria de programa em seqncia, formando
assim o programa.
1.4Arquitetura
A performance do microcontrolador depende da sua arquitetura interna, ou seja,
do modo em que o microcontrolador foi projetado tanto para o hardware como para
software. No hardware apresentaremos a arquitetura Von-Neumann, na qual se refere o
software CISC.
Arquitetura Von-Neumann
Uma grande parte das instrues era pouco usada, s vezes at uma nica vez
em um longo programa, de modo que elas poderiam ser implementadas pelas instrues
bsicas mais usadas.
Da o aparecimento da nova arquitetura com o set de instrues reduzido
RISC
(caracterstico dos microcontroladores da famlia PIC).
1.5Memrias
Memrias so os dispositivos que armazenam informaes e so usadas em
todos os sistemas microcontrolados. Existem vrios tipos de memrias que podem ser
classificadas por vrios itens diferentes.
1.5.1Acesso
As memrias armazenam informaes em lugares que se denominam
localidade de memria. Cada localidade de memria guarda um conjunto de bits e
tem um endereo. No acesso desses endereos podemos analisar:
-O tempo de acesso: o tempo que a memria necessita para que sejam escritos
ou lidos os dados em suas localidades
-Acesso seqencial: nas memrias que tem acesso seqencial, para acessar um
endereo de uma certa localidade, precisa-se passar por endereos intermedirios (as
memrias mais comuns desse tipo so as que utilizam fita magntica);
-Acesso aleatrio: as memrias que utilizam esse tipo de acesso so as
memrias que permitem que seja acessado qualquer dado em qualquer endereo sem a
necessidade de ter que passar por outros endereos intermedirios.
1.5.2Volatilidade
-Memrias volteis: so aquelas que perdem as informaes quando cortada
sua alimentao. So memrias que geralmente usam como elemento de memria o
Flip-Flop.
-Memrias no volteis: so memrias que mesmo desligando-se sua
alimentao, no perdem as informaes armazenadas. Dentre essas se destacam as
magnticas e as eletrnicas ROM, PROM, EPROM, EEPROM, e outras.
1.5.4Tipos de armazenamento
-Estticas: memrias estticas so aquelas nas quais as informaes
permanecem armazenadas enquanto no houver escrita ou no faltar energia.
-Dinmicas: memrias dinmicas so memrias que perdem informaes
armazenadas mesmo com alimentao. Na RAM dinmica (ou DRAM) isso acontece
porque cada clula tem um transistor MOSFET e um capacitor que armazena um dado
(1 bit).
1.5.5Tipos de Memrias
Veremos a seguir, alguns tipos de memrias existentes no mercado e que so
muito utilizadas:
Essas memrias podem ser usadas no sistema tanto para leitura como para
escrita. Podem ser gravadas com programadores ou pelo sistema; so apagadas
eletricamente e regravadas por muitas vezes; so consideradas memrias no volteis.
Memrias FLASH
Memria FLASHFILE
Memrias Seriais
junto com outros dispositivos seriais, com muitas vantagens em relao s memrias
paralelas.
MEMBRO
TECNOLOGIA
MEM. PROGRAMA
MEM. DE
DADOS (RAM)
8051
HMOS
4K ROM
128 bytes
8031
HMOS
No tem
128 bytes
8751H
HMOS I
4K EPROM
128 bytes
80C51
CHMOS
4K ROM
128 bytes
80C31
CHMOS
No tem
128 bytes
8052
HMOS
8K ROM
256 bytes
8032
HMOS
No tem
256 bytes
AT89C2051
CMOS
2K FLASH
128 bytes
AT89C51
CMOS
4K-FLASH
128 bytes
AT89C52
CMOS
8K-FLASH
256 bytes
2.4.1Linguagem C
C uma linguagem que surgiu com o sistema operacional Unix. Ela
estruturada, produz um cdigo compacto e permite atingir alguns detalhes de controle
da mquina sem recorrer ao Assembly. H seis fabricantes que oferecem compiladores
C para microcontroladores da famlia MCS-51. Destes compiladores, o Archimedes e o
Franklin esto no topo da lista. Aps estes, vm os da BTO/Tasking e Avocet. Isto para
mencionar apenas os quatro mais conhecidos.
2.4.2Linguagem Assembly
A linguagem Assembly do 8051 semelhante a outras linguagens Assembly de
microprocessadores. O conjunto de instrues dispe de um maior nmero de operaes
para manipular bits que os microprocessadores usuais, mas o fato de ter diferentes
regies de memria torna as coisas mais complicadas. As instrues de movimentao
de dados, lgicas e desvio de execuo so geralmente similares as da maioria dos
outros microprocessadores. Desta forma, para quem j trabalhou com linguagem
Assembly de microprocessador, o processo o mesmo, com suas vantagens e
desvantagens.
2.4.3Linguagem Basic
Basic atende bem ao seu propsito: ser uma linguagem de introduo
programao. Ela muito fcil de se usar. O uso de uma nova varivel faz com que esta
varivel persista pelo resto do programa. Erros podem ser detectados ao final de cada
linha, ao invs de mostr-los somente quando o programa termina de ser traduzido.
Porm, existem duas razes pelas quais o Basic no conveniente em sistemas
dedicados. Em primeiro lugar, como ele interpretado, ele naturalmente lento. Cada
linha deve ser convertida para o cdigo de mquina toda vez que for executada. O
processo de interpretao faz com que seja perdido muito tempo de processamento, que
deveria ser usada para a aplicao propriamente dita. Existem verses do Basic
compilado (QuickBasic, por exemplo), que evitam esse problema. Entretanto, no h
nenhuma verso do Basic compilado para o 8051.
Em segundo lugar, pode-se destacar a inconveniente simplificao no uso de
variveis.Todas as variveis so, usualmente, implementadas como ponto-flutuante. Isto
resulta na necessidade de se executar rotinas complexas, mesmo para valores tipo
inteiro. Isto torna os programas lentos e grandes. Pode-se dizer que o Basic, no contexto
de sistemas dedicados, deve ser indicado para aplicaes onde a facilidade de
programao seja mais importante que a eficincia ou velocidade.
3.2Memria de Programa
A memria de programa composta por duas reas distintas: 4KB de ROM
interna e at mais 60KB externos. Entretanto, pode-se inibir os 4KB de ROM internos
atravs do pino 31 (EA - External Access), ficando a memria externa com todo o
espao de endereamento. A memria de programa pode ser apenas lida, no escrita.
Existem at 64K de memria de programa acessveis, sendo que os primeiros 4K so
disponveis internamente no 8051, e selecionveis atravs do sinal EA .
Os primeiros 4 Kbytes da memria de programas podem ser endereados interna
ou externamente. Se o pino EA estiver em nvel alto, esses bytes so acessados no chip.
Levando o pino EA a nvel baixo, o acesso a tais bytes feito na memria externa,
como mostrado na figura 3.
A Figura 3.2 mostra a configurao de hardware para a execuo de programas
externos; nesta configurao, duas das 4 portas de E/S disponveis (Portas 0 e 2) so
utilizadas com funo de barramento de endereo/dados, ou seja, essas 16 linhas de E/S
so dedicadas para desempenhar funo de bus durante buscas na memria de
programas. Isto se deve ao fato de que os endereos da memria de programa so
sempre de 16 bits, mesmo que o tamanho real desta seja menor que 64K bytes.
A porta 0 emite o byte menos significativo do contador de programas (PCL).
Nesse momento o sinal ALE (Address Latch Enable) funciona como clock para o latch,
armazenando o PCL. As linhas da Porta 0 entram em estado de alta impedncia.
Enquanto isso, a porta 2 emite o byte mais significativo do contador de programas
(PCH). O latch e a porta 2 formam portanto o endereo necessrio ao acesso da ROM
externa. O dispositivo emite o sinal PSEN (Program Store Enable) para ler a memria
de programa externa. Este sinal, em nvel baixo, habilita a ROM leitura. A porta 0
entra no modo entrada e a instruo da ROM do endereo correspondente enviada a
essa porta.
3.3Memria de Dados
A memria de dados ocupa, como j foi dito, um espao de endereamento
separado da memria de programa, e at 64K bytes de RAM externa podem ser
acessados neste espao. Os 64 Kbytes de memria de dados externa so acessados pelo
dispositivo atravs dos sinais RD/WR. Os sinais PSEN e RD podem ser injetados na
entrada de uma porta AND e a sada dessa porta utilizada como sinal de requisio de
leitura a uma memria externa de dados e programas convencional.
A memria de dados, como mostra a figura 3.4, composta por uma rea interna
formada por 128 bytes, mais os registros de funo especial, e por at 64Kb de memria
externa.
BANCO
RS1
RS0
REGISTRADORES
POSIO DE
MEMRIA
R7,R6, . . .,R0
1FH,1EH, . . .,18
H
R7,R6, . . .,R0
17H,16H, . . .,10H
R7,R6, . . .,R0
0FH,0EH, . . .,08
H
R7,R6, . . .,R0
07H,06H, . . .,00H
NOME
ENDEREO
*ACC
Accumulator
0E0H
*B
Register B
0F0H
*PSW
0D0H
SP
Stack Pointer
81H
DPTR
Data PointerRegister
DPL
82H
DPH
83H
*P0
Port 0
80H
*P1
Port 1
90H
*P2
Port 2
0A0H
*P3
Port 3
0B0H
*IP
Interrupt Priority
0B8H
*IE
Interrupt Enable
0A8H
TMOD
Timer Mode
89H
*TCON
Timer/Counter Control
88H
TH0
Timer/Counter 0 high
8CH
TL0
Timer/Counter 0 low
8AH
TH1
Timer/Counter 1 high
8DH
TL1
Timer/Counter 1 low
8BH
*SCON
Serial Control
98H
SBUF
Serial Buffer
99H
PCON
Power Control
87H
Apontador de Pilha (SP): como o prprio nome sugere, o registro que aponta
para o topo da pilha. manipulado pelas instrues de chamada e retorno de
Registros TH1, TL1, TH0 e TL0: so os registros de dados dos T/Cs. Estes 4
registros podem ser lidos ou escritos, facilitando o acesso aos T/C.
3.5Modos de Endereamento
Para acessar um dado ou operando, as instrues dos microcontroladores MCS51 contam com seis modos de endereamento:
Endereamento Direto
Endereamento Indireto
Instrues de Registradores
Endereamento Imediato
Endereamento Indexado
ADDA,7FH(direto)
ADDA,@RO(indireto)
ADDA,R7(registrador)
ADDA,#127(imediato)
4HARDWARE DO 8051
4.1Anlise externa
O aspecto externo do 8051 o da figura 4.1. Os pinos com nomes da forma
P0.0, P0.1, etc. correspondem s quatro portas de E/S (P0 a P3). Note a dupla utilidade
das portas P0 e P2, que ficam comprometidas com o uso de memria externa, assim
como os pinos P3.6 e P3.7. O sinal ALE (Address Latch Enable) permite fazer a
RST (9) - Reset. Com o oscilador funcionando, deve ser mantido um nvel alto
durante 24 perodos.
ALE/PROG (30) - Address Latch Enable. Pulso para acionar o latch que
captura o LSB do endereo (com sua borda ascendente). Ele emitido razo de 1/6 da
freqncia do oscilador e pode ser usado para acionar entradas externas. Um ALE
omitido durante o acesso Memria de Dados Externa. Tambm usada na gravao da
ROM interna.
*PSEN (29) - Program Store Enable. Pulso de leitura para a Memria de
Programa Externa. Quando o programa est sendo executado na memria de programa
externa ele aparece como 1/6 da freqncia de clock. Quando h acesso memria de
dados externa, 2 PSEN so perdidos.
4.2Oscilador do 8051
Todos os microcontroladores da familia MCS-51 possuem um oscilador interno
que pode ser utilizado, se desejado, como um gerador de clock para a CPU. Para se usar
o oscilador interno, basta conectar um cristal ou um ressonador cermico entre os pinos
XTAL1 e XTAL2 do microcontrolador, e capacitores ao terra como mostra a figura 4.2.
4.3Ciclos de Mquina
Um ciclo de mquina consiste de uma seqncia de 6 estados (S1 a S6). Cada
estado toma 2 perodos de clock e, portanto, um ciclo de mquina toma 12 perodos de
clock ou 1 s sob uma freqncia de 12MHz.
A figura 4.4 mostra a seqncia de busca/execuo para alguns tipos de
instrues. Normalmente dois ciclos de busca so executados em cada ciclo de mquina,
mesmo que a instruo sendo executada no o requeira, caso em que o byte buscado
ignorado e o PC no incrementado.
ser levado a nvel baixo e, para fazer uma escrita na RAM externa, o pino WR ser
levado a nvel baixo.
4.5Reset
A entrada de Reset o pino RST que possui um Schmitt Triger na entrada. O
Reset realizado quando este pino se mantm em nvel alto pelo menos por 2 ciclos de
mquina (24 clocks) enquanto o oscilador estiver funcionando. A RAM Interna no
afetada pelo reset. Depois do RESET, a CPU inicializada com os seguintes dados:
SP = 7
SBUF = ?
P0,P1,P2,P3 = FFH
OUTROS SFR = 0
Note que o valor dos pinos fica em estado aleatrio antes do oscilador comear a
funcionar e durante o perodo que a rotina interna de reset est em progresso.
5CONJUNTO DE INSTRUES
Todos os componentes da famlia de microcontroladores Intel MCS-51
executam o mesmo conjunto de instrues, com o auxlio de seu Macro Assembler
ASM-51. O conjunto de instrues da famlia MCS-51 direcionado para aplicaes de
controle de 8 bits. Ele permite manipulao de dados de 1 ou 2 bytes, alm de fornecer
suporte para variveis de um bit em sistemas lgicos que necessitem de processamento
booleano.
O 8051 possui 111 instrues distintas; dessas, 49 possuem cdigo de operao
de um byte apenas, 45 de dois bytes e 17 de trs bytes. Logo abaixo, ser feito um
levantamento dessas instrues agrupadas nas categorias: transferncia de dados,
aritmticas, lgicas e transferncia de controle.
Para a exposio das instrues, utilizar-se-o as seguintes abreviaturas:
Rn
direto, dir
@Ri
#data, #dt
#data16, #dt16
adr16
adr11
rel
bit
Acc.
constante de 16 bits
acumulador (registro)
endereo do acumulador
5.1Modos de Endereamento
De acordo com o "Data Sheet" do MCS-51, existem 6 modos de endereamento
com a seguinte nomenclatura :
Imediato
Direto
Indireto
Registrador
Registrador Especfico
Indexado
Imediato:O valor da constante colocado no opcode.
MOV A, #100
Carrega 100 no acumulador (Acc=100). O byte 100 um dado imediato. Devese notar a presena do sinal # que indica operao imediata.
5.2Instrues Aritmticas
As quatro operaes bsicas (soma, subtrao, multiplicao e diviso) podem
ser executadas pelo 8051, com operandos de 8 bits. Entretanto, atravs dos flags pode-se
realizar as duas primeiras operaes com nmeros com mais de 8 bits, sinalizados ou
no.
Execution
Time (s)
Operation
Dir
Ind
Reg
Imm
ADD A,<byte>
A = A + <byte>
ADDC
A,<byte>
A = A + <byte> + C
SUBB
A,<byte>
A = A + <byte> - C
INC A
A=A+ 1
INC <byte>
Accumulator only
INC DPTR
DPTR= DPTR + 1
DEC A
A=A 1
Accumulator only
DEC <byte>
MUL AB
B:A= B x A
Accumulator only
A= Int [A/B]
DIV AB
B= Mod [A/B]
DA A
Decimal Adjust
ANLA,7FH(direto)
ANLA,@RI(indireto)
ANLA,R6(porregistrador)
ANLA,#53H(imediato)
5.4.1RAM Interna
Sob um clock de 12MHz, uma operao desse tipo realizada em 1 s ou 2 s.
Esse conjunto de instrues mostrado na tabela 3, conta com a facilidade, por exemplo,
de MOV <dest>,<src> que transfere dados entre duas posies de RAM interna ou na
regio SFR, dispensando qualquer carregamento do Acumulador. PUSH e POP utilizam
endereamento direto para identificar o byte a ser salvo ou restaurado, mas usam
endereamento indireto para acessar a pilha atravs do registrador SP. Em dispositivos
que no contam com a regio Upper 128, se a pilha tenta avanar sobre ela, bytes de
PUSH so perdidos e de POP so indeterminados.
5.4.2RAM Externa
5.4.3Memria de Programa
A tabela 5.5 mostra as duas nicas instrues disponveis para ler Lookup Tables
(Tabelas de Pesquisa), localizadas na memria de programa. Uma vez que residem na
memria de programa, tais tabelas podem apenas ser lidas, nunca atualizadas por tais
instrues. Se essas tabelas se encontrarem na memria de programas externa, o sinal de
leitura PSEN .
Tabela 5.5 - Instrues para leitura de Lookup Table em memria de programa
Sub-rotina:
LOOKUP_TABLE:MOVCA,@A+PC
5.5Instrues Booleanas
Os dispositivos da famlia 8051 contam com um conjunto completo de
operaes booleanas (tabela 9) sob bits nicos. O espao Lower 128 da RAM interna
suporta 128 bits endereveis e o espao SFR pode suportar outros 128 bits
endereveis. Todas as linhas das portas so bits-endereveis e cada uma dessas linhas
pode ser tratada como uma porta de um nico bit. As instrues que acessam esses bits
no so apenas desvios condicionais mas uma completa lista de mov, set, clear,
complement, OR e AND. Esse tipo de operaes sobre bits no facilmente obtido em
outras arquiteturas sem uma razovel quantidade de cdigo.
Todos esses bits so endereados diretamente. Os bits de endereo entre 00H e
7FH acessam o espao Lower 128 enquanto entre 80H e FFH acessam o espao SFR.
Note como fcil um flag interno ser movido para um pino de uma porta:
MOVC,FLAG
MOVP1.0,C
onde FLAG o nome de qualquer bit enderevel em Lower 128 ou SFR. Nessa
seqncia, bit de FLAG movido para o bit menos significativo da Porta l. O bit Carry
do PSW utilizado como acumulador para operaes booleanas.
As operaes de jump desse conjunto testam um nico bit, que possa ser
diretamente enderevel, como condio. Uma vez que todos os bits de PSW so
endereados diretamente, pois esto no espao SFR, pode se utiliz-los como alguma
condio de jump.
Para jumps relativos, o endereo contido no cdigo somado ao PC em
complemento de dois se o jump executado. Portanto, distncia de salto pode variar
na faixa de 128 a +127 bytes a partir do endereo do byte de desvio.
Tabela 5.6 Instrues booleanas.
5.6.1Desvios Incondicionais
O conjunto de instrues de salto incondicional (tabela 5.7) possui seis
instrues em seu repertrio. JMP apenas um mnemnico genrico utilizado pelo
programador que no precisa saber como ele realmente interpretado pelo assembler.
Na realidade, JMP corresponde a trs instrues: SJMP, LJMP e AJMP, cada uma
indicada a situaes de endereo de desvio diferente.
Tabela 5.7 Instrues de desvio incondicional.
A instruo SJMP calcula o endereo destino como descrito acima, que pode
varrer uma largura de 128 a +127 bytes na memria de programa. A instruo LJMP
codifica o endereo destino como uma constante de 16 bits que pode ser qualquer
posio nos 64 Kbytes da memria de programas. A instruo AJMP codifica o
endereo destino como uma constante de 11 bits; a instruo consiste em 2 bytes: 3 bits
do endereo localizam-se no opcode enquanto os outros 8 bits localizam-se no prximo
byte. Os 11 bits assim formados simplesmente substituem os 11 bits menos
significativos do PC.
Em todos os casos, o programador especifica o endereo destino de duas
maneiras ou como um label ou como um constante de 16 bits. O assembler se encarrega
de colocar o endereo destino para o correto formato de instruo.
A instruo JMP @A + DPTR implementa o comando CASE. O endereo
destino computado em tempo de execuo como a soma do contedo do Acumulador
e o registrador DPTR. Tipicamente, DPTR carregado com o endereo de uma tabela
de jumps e, ao acumulador, dado o valor de um ndice dessa tabela.
Semelhante instruo JMP, a instruo CALL, na realidade, duas: LCALL e
ACALL, usadas para ativar uma sub-rotina, que diferem na forma como o endereo da
subrotina dado CPU. LCALL utiliza o endereo destino em 16 bits (instruo de 3
bytes) que pode ser qualquer localidade dos 64 Kbytes da memria de programas.
ACALL utiliza formatos de endereos em 11 bits (instruo de 2 bytes), o que significa
que o endereo destino deve estar no mesmo bloco de 2 Kbytes seguintes instruo. A
transparncia para o programador de CALL semelhante de JMP.
As instrues RET e RETI so as clssicas instrues de retorno de sub-rotinas.
A diferena entre elas que RETI informa ao sistema de controle de interrupes que a
5.6.2Desvios Condicionais
O conjunto de jumps condicionais s permite endereamento de destino relativo,
o que limita a distncia de salto entre 128 e + 127 bytes de distncia em relao
instruo jump. importante notar que o programador especifica o endereo como um
label ou uma constante de 16 bits.
No h flag de zero, portanto JZ e JNZ testam o dado do acumulador para tal
condio. JC, JNC, JB, JNB, e JBC so outras instrues de salto condicional, que
testam flags ou bits endereveis antes de efetuar o desvio de execuo
As instrues DJNZ (Decrementa e Salta se No Zero) e CJNE (Compara e
Salta se No Igual) so utilizadas para controle de laos. Uma aplicao de CJNE est
em comparaes "maior que, menor que". Pelo valor do bit de Carry distingue-se entre
as duas situaes. Se o primeiro menor que o segundo, o bit de carry setado. Se o
primeiro maior ou igual ao segundo, o bit de carry zerado. As duas instrues so
usadas para realizar comparao entre operandos de 8 bits e repeties iterativas de um
bloco de instrues.
Tabela 5.8 - Instrues de desvio condicional.
5.7Look-Up Tables
Quando da programao de sistemas utilizando microprocessadores surge muitas
vezes a necessidade de se utilizar as look-up tables. Um exemplo converter um
numero numa base num outro noutra base, por exemplo converter um digito no seu
correspondente ASCII
30h
31h
35
36
32h
33h
34h
37
38
39
;*****************************************************************************
;*Nome:converte_ASCII*
;*Descrio:Fazaconversodeumnumerode09paraequivalenteASCII*
;*Entradas:EmAnumeroaconverter*
;*Sadas:EmAoseuequivalenteemASCII*
;*Registosutilizados:a,dptr*
;*****************************************************************************
converte_ASCII
lcalltabela
db30h,31h,32h,33h,34h,35h,36h,37h,38h,39h;valoresparaatabela
tabela:
popdph;colocaodptraapontarparaoiniciodatabela
popdpl
movca,@a+dptr;vaitabelabuscaroseucorrespondenteemASCII
ret
6TEMPORIZADORES E
CONTADORES
6.1Introduo
O 8051 tem dois registros contadores de 16 bits, denominados TIMER0 e
TIMER1, dedicados s funes de contagem e temporizao (counter/timercontador/temporizador). H uma importante distino entre os conceitos de contador e
temporizador.
Quando opera como temporizador, o registro incrementado a cada ciclo de
mquina (usa como base o cristal da CPU). O sinal de contagem aparece com 1/12 da
freqncia do clock.
Quando opera como contador, o registro incrementado de acordo com o sinal
que se coloca nas entradas T1 e T0, ou seja, o contador opera a cada transio de 1 para
0 (borda de descida _) na entrada T0 ou T1.
Deve-se ter um cuidado quando em operaes em modo contador: j se sabe que
as entradas so amostradas durante S5P2 de cada ciclo de mquina. Quando em um
ciclo de mquina a entrada detectada em 1 e depois em 0, no prximo ciclo o contador
incrementado. O incremento acontece em S3P1 do ciclo seguinte ao que foi detectada
a transio. Para garantir que o nvel correto tenha sido amostrado, necessrio que o
sinal de entrada (o sinal que vai acionar os contadores) permanea pelo menos um ciclo
de mquina em nvel alto e pelo menos outro ciclo de mquina em nvel baixo, quer
dizer, a mxima freqncia que responder o contador de 1/24 da freqncia de clock.
O sinal de entrada pode ter qualquer "duty cycle", desde que se respeite a restrio antes
mencionada.
6.2Registros Envolvidos
Dois registros SFR so utilizados para controlar as funes e operaes do
temporizador/contador: em TMOD especifica-se o modo de operao e em TCON
controla-se a operao. A figura 6.1 ilustra o registro TMOD e a figura 6.2 ilustra o
registro TCON.
M0
M1
6.3Modos de operao
Os dois contadores/temporizadores (timer1 e timer0) podem trabalhar em 4
modos de operao que so selecionados empregando os bits M1 e M0 do registro
TMOD. Os modos 0, 1 e 2 so iguais para os 2 contadores/temporizadores mas o modo
3 diferente.
6.3.1Modo 0
Este modo idntico para os dois contadores/temporizadores. Neste modo temse um contador de 8 bits com um divisor (pre-scaler) de 5 bits. Resulta ento em um
contador/temporizador de 13 bits, compatvel com o que havia no MCS-48. Os 13 bits
so formados pelos 8 bits do registro THi e pelos 5 bits menos significativos do registro
TLi. Os outros 3 bits do TLi so indeterminados. O transbordamento (overflow)
gerador quando a contagem faz a transio de 1FFFH para 0000; neste instante ativa-se
o bit de overflow (TF1 ou TF0).
O controle da contagem simples:
6.3.2Modo 1
Este modo de operao o mais simples e por isto muito utilizado. idntico
ao modo 0, mas os contadores so de 16 bits. A figura 6.4. ilustra o diagrama em blocos
para este modo, que idntico para os dois timers.
6.3.3Modo 2
Neste modo tem-se um contador/temporizador de 8 bits (TLi) com registro de
recarga (THi) para quando ocorre o transbordamento. Neste modo os dois
contadores/temporizadores operam de forma idntica. O transbordamento (overflow)
no somente ativa TFi como tambm recarrega TLi com o valor guardado em THi (este
permanece inalterado). O valor de recarga deve ser fornecido por software.
6.3.4Modo 3
Este o nico modo onde os contadores/temporizadores tm um comportamento
diferente. Neste modo, o contador/temporizador 1 simplesmente suspende a contagem
( como se estivesse com TR1=0), enquanto o contador/temporizador 0 se divide em
dois contadores de 8 bits:
;LED_10HZ.ASM
;
DEFSEGPROG,CLASS=CODE,START=0
SEGPROG
;
DEZ_HZEQU35739
;
ORGRESET
AJMPINIC
;
ORGTIMER0
AJMPTIM0
;
ORG50H
INIC MOV TL0,#LOW DEZ_HZ
MOVTH0,#HIGHDEZ_HZ
MOVTMOD,#1;TIMER0EMMODO1
MOVIE,#82H
MOVP1,#0;APAGARTODOSOSLEDS
MOVA,#01001001B
CLRC
SETBTR0
SJMP$
;
ORG100H
TIM0 MOV TL0,#LOW DEZ_HZ ;REINICALIZAR
MOVTH0,#HIGHDEZ_HZ;OCONTADOR
RLCA
MOVP1,A
RETI
END
Notar que na rotina de interrupo est a recarga dos temporizadores que feita
feita com a instruo "MOV direto,#data" mas que consome 2 ciclos de mquina, ou
seja, que h um retardo que se acumula. Para evitar ou corrigir isso, pode-se adicionar
MOVA,#LOW(DEZ_HZ+2)
ADDA,TL0;1ciclo
MOVTL0,A;1ciclo
MOVTH0,#HIGH(DEZ_HZ+2)
7INTERRUPES
7.1Introduo
O 8051 apresenta 5 tipos de interrupes:
2 externas
2 timers
1 serial
7.2Registros Envolvidos
Os registros dedicados s interrupes permitem um controle total sobre as
mesmas. Cada interrupo pode ser habilitada ou desabilitada individualmente. Tambm
possvel desabilitar todas as interrupes de uma s vez. O registro IE (Interrupt
Enable) controla a habilitao das interrupes e ilustrado na figura 7.1.
Todos os bits que geram interrupo podem ser ativados por software com os
mesmos resultados como se tivessem sido ativados por hardware. Isto quer dizer que
uma interrupo pode ser ativada por software e tambm que as interrupes pendentes
podem ser canceladas. Cada interrupo vetorizada em um endereo pr-definido:
RESET00H
Externa0IE003H
Timer0TF00BH
Externa1IE113H
Timer1TF11BH
SerialRI+TI23H(+indicaOU)
7.3Manejo de Interrupes
Os flags das interrupes so amostrados na segunda fase do quinto estado
(S5P2) de cada ciclo de mquina. As amostras so submetidas a polling (consulta)
durante o prximo ciclo de mquina. A figura 7.5 ilustra a seqncia para atendimento
de uma interrupo.
Se um dos flags (de interrupo) est ativo durante S5P2, o prximo ciclo de
polling vai detectar e identificar a interrupo a ser atendida e ser gerada uma instruo
LCALL sempre que no seja bloqueada por:
uma interrupo de prioridade igual ou mais alta que a que est sendo atendida,
7.4Interrupes Externas
As duas interrupes externas (0 e 1) podem ser programadas para funcionar por
nvel (ITX=0) ou por borda de descida () (ITX=1). Os pinos das interrupes so
amostrados em cada ciclo de mquina (1 ciclo de mquina=12 perodos de clock);
assim, uma interrupo externa deve permanecer constante por pelo menos 12 perodos
de clock, caso contrrio ela pode ser ignorada.
Quando a interrupo opera por borda de descida (), o pino deve permanecer
em alto por pelo menos 12 perodos de clock e depois em baixo por pelo menos 12
perodos de clock; isto garante a ativao do flag de interrupo. Os flags de
interrupes externas (IEX0 ou IEX1) sero automaticamente zerados pela CPU quando
uma rotina de servio chamada.
Quando a interrupo opera por nvel, o pino deve permanecer ativado (em
baixo) at que a interrupo seja atendida; depois disso, o pedido deve ser removido
antes que a rotina de servio de interrupo termine caso contrrio uma nova
interrupo ser gerada.
O tempo de latncia de uma interrupo depende, entre outras coisas, das
condies de bloqueio j vistas. No caso destas condies de bloqueio existirem, leva-se
entre 5 a 9 ciclos de mquina.
7.5Passo A Passo
A estrutura de interrupo do MCS-51 permite, de forma muito simples, uma
implementao para a execuo de programas passo a passo (single step). Como j foi
visto, uma interrupo no ser atendida quando uma interrupo de igual prioridade
7.6Exemplo PASSO_EXE.ASM
Escrever um programa que faa acender os leds em seqncia (vermelho,
amarelo e verde). Executar esse programa com um controle passo a passo usando a
interrupo 1. A soluo muito simples. No programa principal estar somente uma
seqncia de instrues que acende os leds segundo a ordem especificada (sem retardo).
A interrupo externa 1 estar programada para operar por nvel. A rotina de interrupo
aguarda que a chave SW3 seja acionada (v a zero); quando isto ocorre, retorna-se da
rotina de interrupo. Ao regressar, a entrada INT1 estar em zero (pela chave SW3) e
uma nova interrupo gerada. Ou seja, a cada acionamento da chave SW3,
;PASSO_EXE.ASM
;
;PROGRAMAPARAILUSTRARAEXECUCAOPASSOAPASSO
;SERAUSADAACHAVESW3PARAEXECUTARPASSOAPASSOOLOOPPRINCIPAL
;CADAVEZQUESEACIONASW3,UMAINSTRUCAOEXECUTADA
;
RTDEQU100
SW3EQUP3.3
;
DEFSEGPROG,CLASS=CODE,START=0SEGPROG
;
ORGRESET
AJMPINIC
;
ORGEXTI1
AJMPEXT1
50
;
ORG50H
INICMOVA,#01001001B;CODIGOPARAACENDER
CLRC;LEDSEMSEQUENCIA
MOVP1,A
SETBEX1;HABILITARINT1
SETBEA;HABILITARGERAL
SETBIE1;PROVOCARINT1
NOP;AQUIOPROGINTERROMPE
PRINCIPAL
RLCA;RODARCODIGO
MOVP1,A;ACENDERLEDS
SJMPPRINCIPAL;RETORNAR
;
ORG100H
EXT1ACALLRBT_0_1;TRANSICAODE0A1
ACALLRBT_1_0;TRANSICAODE1A0
RETI
;
;ELIMINARBOUNCINGNASTRANSICOESDE0PARA1RBT_0_1
MOVR7,#RTD
LB1JNBSW3,RBT_0_1
DJNZR7,LB1
RET
;
;ELIMINARBOUNCINGNASTRANSICOESDE1PARA0RBT_1_0
MOVR7,#RTD
LB2JBSW3,RBT_1_0
DJNZR7,LB2
RET
END
8PORTA PARALELA
A famlia MCS-51 oferece 4 portas paralelas, denominadas P0, P1, P2 e P3 e
para cada porta existe um SFR. De acordo com a configurao do hardware, uma ou
mais portas estaro totalmente ou parcialmente disponveis.
8.1Registros Envolvidos
Os 4 registros, P0, P1, P2 e P3 so na realidade os latches das portas e no os
pinos da CPU. Algumas instrues operam com o contedo destes latches e outras com
os valores dos pinos. As portas paralelas so utilizadas pela CPU para efetuar vrias
tarefas:
P0 byte inferior de endereos e dados ==> BUS
P2 byte superior de endereos
P3 0 RXD - entrada serial
1 TXD - sada serial
2 *INT0 - interrupo externa 0
3 *INT1 - interrupo externa 1
4 T0 - entrada externa para o contador 0
5 T1 - entrada externa para o contador 1
6 *WR - strobe para escrita na memria de dados externa
7 *RD - strobe para leitura da memria de dados externa
Durante uma operao de escrita ou leitura de memria de dados, por exemplo,
os dados das portas P0 e P2 so removidos e por eles se emitem os endereos e dados.
Terminadas as operaes, o contedo do latch reaparece nos pinos da CPU. Existem
detalhes sobre a utilizao de cada porta como entrada ou sada mas, de uma
formageral, pode-se dizer que:
Sada: Basta escrever 0 ou 1 na porta que o nvel lgico aparece nos pinos
corretos.
Entrada: todos as portas (exceto P0) possuem um pull-up interno; quando se
escreve 1 em um bit da porta, diz-se que este bit est programado como entrada pois
dispositivos externos podem colocar (forar) este 1 em 0. Assim, para ter uma porta
como entrada, escreve-se 1 e depois com a leitura ser lido 1 ou 0 de acordo com o nvel
que externamente est aplicado no pino. Devido a isto, as portas so chamadas quasibidirecionais.
8.2Descrio Do Funcionamento
Cada porta paralela constituda por trs partes:
um driver de sada
um buffer de entrada
8.2.1Porta P1
A figura 8.1 ilustra o esquema eltrico da porta 1.
O latch de um bit da porta P1 (um bit do SFR P1) representado por um flipflop D, no qual se escreve um valor do bus interno atravs de um pulso Write to Latch
gerado pela CPU. A sada do latch colocada no bus interno atravs de um sinal Read
Latch gerado pela CPU. O nvel do pino da porta colocado no bus interno atravs do
sinal Read Pin, tambm gerado pela CPU.
Algumas instrues que lem o estado da porta operam com Read Latch
enquanto outras operam com Read Pin. Isto ser visto com mais detalhes.
Quando escreve na porta:
Para ser usado como entrada, o latch da porta deve estar em 1; isso desconecta o
driver FET da sada. Assim, o pino da porta vai para um nvel alto, levado pelo pull-up.
Esse pino poder serlevado para o nvel baixo por qualquer elemento externo. Devido
ao pull-up interno, essa porta denominada "quasi-bidirecional". Quando est
configurado para entrada, este vai para 1 e, se externamente levado para baixo, ento
fornece corrente. Se a porta estivesse em alta impedncia quando configurado como
entrada, ento seria classificado como "bidirecional verdadeiro".
Figura 8.2 - Pino do microcontrolador sendo levado a 0 por uma sada TTL.
8.2.2Porta P3
Na figura 8.3 est o esquema eltrico da porta P3. Pela porta P3 tm-se diversas
funes alternativas: *RD, *WR, T0, T1, TXD, RXD, *INT0, *INT1.
8.2.3Porta P2
O esquema da figura 8.4 ilustra a porta P2. Por esta porta tambm sai o byte
mais significativo dos endereos.
8.2.4Porta P0
A figura 8.5 ilustra o esquema eltrico da porta P0. Esta porta a mais complexa
pois atende a trs funes:
Figura 8.6 - O FET (depletion mode) usado como PULL-UP para as portas paralelas.
(HMOS).
Figura 8.9 - Bit 0 da porta 1 sendo usado para acender um led atravs de um
transistor.
CALLRETARD
CLRVERDE
SJMPAQUI
;
;ROTINAPARAGERARUMRETARDO
RETARD
MOVR7,#HIGHRTD
L1MOVR6,#LOWRTD
L2DJNZR6,L2
DJNZR7,L1
RET
END
Uma outra soluo, muito mais simples, pode ser utilizada. Como no so
usados os demais pinos da porta P1, pode-se escrever qualquer coisa neles. Usa-se ento
o Acc e o CY para obter um total de 9 bits e, atravs de rotaes, consegue-se gerar os
cdigos para acender os leds em seqncia. A figura 8.10 ilustra a idia.
;PISCA2.ASM
;
RTDEQU60000;65536>RTD>256
VERMELHOEQUP1.0
AMARELOEQUP1.1
VERDEEQUP1.2
;
DEFSEGPROG,CLASS=CODE,START=0
SEGPROG
ORGRESET
INICMOVA,#01001001B;01001001
CLRC
AQUIMOVP1,A
ACALLRETARD
RLCA
SJMPAQUI
;
;ROTINAPARAGERARUMRETARDO
RETARDMOVR7,#HIGHRTD
L1MOVR6,#LOWRTD
L2DJNZR6,L2
DJNZR7,L1
RET
END
No primeiro programa ser usada uma soluo simples, que tem o problema de
bouncing.
;CHAVE1.ASM
;
SW2EQUP1.3
;
DEFSEGPROG,CLASS=CODE,START=0
SEGPROG
ORGRESET
INICCLRA;ZERARCONTADOR
MOVP1,A;APAGARLEDS
SETBSW2;PROGRAMARP1.3COMOENTRADA
AQUI1JBSW2,AQUI1;AGUARDARACIONAMENTO
INCA
MOVP1,A;DARSADAAOCONTADOR
SETBSW2;GARANTIRP1.3COMOENTRADA
AQUI2JNBSW2,AQUI2;AGUARDARLIBERARCHAVE
SJMPAQUI1
END
MOVP1,A;APAGARLEDS
SETBSW2;PROGRAMARP1.3COMOENTRADA
AQUI1JBSW2,AQUI1;AGUARDARACIONAMENTO
INCA
MOVP1,A;DARSADAAOCONTADOR
SETBSW2;GARANTIRP1.3COMOENTRADA
ACALLRTD;ELIMINARBOUNCING
AQUI2JNBSW2,AQUI2;AGUARDARLIBERARCHAVE
ACALLRTD;ELIMINARBOUNCING
SJMPAQUI1
;
;ROTINAPARAGERARUMRETARDO
RETARDMOVR7,#HIGHRTD
L1MOVR6,#LOWRTD
L2DJNZR6,L2
DJNZR7,L1
RET
END
;ESTATECNICASEADAPTAMELHORASVARIACOESENTREOSCIRCUITOS
;
RTDEQU100
SW2EQUP1.3
;
DEFSEGPROG,CLASS=CODE,START=0
SEGPROG
ORGRESET
INICCLRA;ZERARCONTADOR
MOVP1,A;APAGARLEDS
SETBSW2;PROGRAMARP1.3COMOENTRADA
AQUIACALLRBT_1_0;TRANSICAOLIMPADE1PARA0
INCA
MOVP1,A;DARSADAAOCONTADOR
ACALLRBT_0_1;TRANSICAOLIMPADE0PARA
SJMPAQUI
;
;ELIMINARBOUNCINGNASTRANSIESDE0PARA1
RBT_0_1MOVR7,#RTD
LB1JNBSW2,RBT_0_1
DJNZR7,LB1
RET
;
;ELIMINARBOUNCINGNASTRANSIESDE1PARA0
RBT_1_0MOVR7,#RTD
LB2JBSW2,RBT_1_0
DJNZR7,LB2
RET
END
9PORTA SERIAL
9.1Comunicao Srie Sncrona E Assncrona
Uma comunicao srie de dados poder ser efetuada de dois modos, sncrono e
assncrono, na comunicao sncrona simples o transmissor e receptor partilham um
mesmo sinal de relgio que permite o sincronismo da transmisso com a recepo, neste
Uma comunicao srie assncrona entre dois dispositivos nunca utiliza a norma
TTL, devido sua baixa imunidade ao rudo, pois obrigaria a uma curta distncia entre
equipamentos ( um a dois metros). Devido a esse facto foram institucionalizadas vrias
normas elctricas para a transmisso tais como: RS232 ou V24, RS 422... A mais
utilizada e universalmente aceite pela esmagadora maioria dos fabricantes a RS232 ou
V24, tambm utilizada nas portas srie dos computadores pessoais PC.
9.4Registros Envolvidos
A porta serial possui um registrador chamado SBUF, o mesmo que se usa para
enviar ou receber dados pela porta serial. Na realidade, o nome SBUF se refere a dois
registros, um somente para leitura por onde se recebem os dados que chegam pela porta
serial e outro somente para escrita por onde se transmitem dados pela porta serial. O
modo de operao da porta serial controlado pelo registro SCON, que ilustrado na
figura 9.6. A tabela 9.1 apresenta um resumo dos modos de operao.
O registro PCON tambm toma parte na gerao do baud rate da porta serial.
Este registro ilustrado na figura 9.6
9.5Modos de funcionamento
A porta srie pode funcionar em 4 modos:
MODO 0
Aqui 8 bits so transmitidos atravs do registo TXD, e so recebidos atravs do
RXD: sendo 8 bits de dados (LSB primeiro). O baud rate fixo a 1/12 da frequncia do
relgio.
MODO 1
Aqui 10 bits so transmitidos atravs do registo TXD, e so recebido atravs do
RXD: sendo um start bit (nvel lgico 0), 8 bits de dados (LSB primeiro) e um stop bit
(nvel lgico 1). Na recepo, o stop bit fica no bit RB8 do registo SCON. O baud rate
varivel.
MODO 3
Aqui 11 bits so transmitidos atravs do registo TXD, e so recebidos atravs do
RXD: sendo um start bit (nvel lgico 0), 8 bits de dados (LSB primeiro), um nono bit
programvel e um stop bit (nvel lgico 1). Na transmisso o nono bit o bit TB8 do
registo SCON, este poder ser o bit de paridade. Na recepo, o nono bit fica no bit RB8
do registo SCON. O baud rate varivel. Nos quatro modo de funcionamento, a
transmisso habilitada pela escrita no registo SBUF. A recepo iniciada no modo 0,
pelas condies RI=0 e REN=1, nos outros modos a recepo iniciada por REN=1.
REGISTO SCON (Serial CONtrol : 98h enderevel bit a bit )
Este registo permite a configurao do modo de funcionamento da porta, onde se
habilita a recepo onde so configurados os nonos bits da recepo e da transmisso,
esto tambm as flags RI e TI, usadas para indicar a recepo de dado e transmisso de
um dados respectivamente, tambm usadas pela interrupes associadas porta srie.
Figura 9.12. Frame de bits e gerao do baud rate para a porta serial no
modo
Modo 0:
Velocidade de transmisso
Modo 2:
Velocidade de transmisso:
Modos 1 e 3:
O timer 1 usado para gerar o baud rate, o baud rate nos modos 1 e 3, so
determinados pelo overflow do timer 1 e pelo valor do bit SMOD.
Velocidade de transmisso:
Quando se utiliza o timer 1 para gerar o baud rate, a interrupo associada a este
timer deve ser desabilitada. O temporizador pode ser configurado como temporizador
Tabela 9.2 - REGISTO PCON (Power CONtrol: 87h no enderevel bit a bit )
;**********************************************************************
;**Nome:INIT_UARTconsidereseumcristalde11.0592MHz
;**Descrio:InicializaaUART
;**Funo:InicializaaUARTparatransmitira9600,N,8,1
;**Entradas:Nenhumas
;**Sadas:Nenhumas
;**Registosutilizados:PCON,SCON,TMOD,TH1,TCON
;**********************************************************************
INIT_UART:
movSCON,#50H;*modo1
setbTI;*inicializaTx
movTMOD,#20H;*configuratimer1emautorecarga
movTH1,#0FAH;*constantederecargaparavelocidadede9600
70
orlPCON,#80H;*colocabitSMODactivo
movTCON,#40H;*habilitaotimer1
ret;
;**********************************************************************
envia_char:
clrTI;resetflagdeTx
movSBUF,a;enviaocaracterequelhepassadoemA
jnbTI,$;esperaatacabaratransmisso
clrTI;resetflagdeTx
ret;retornadasubrotina
;*********************************************************************
;**Nome:recebe_char
;**Descrio:recebecaractereparaaUART
;**Entradas:Nenhumas
;**Sadas:devolveemA,ocaractererecebido
;**Registosutilizados:SBUF
;*********************************************************************
recebe_char:
jnbRI,$;esperaatquechegueumdado
mova,SBUF;locaracteredaUART,paraoregistoA
clrRI;resetflagdeRx
ret;retornadasubrotina
envia_string:
movdptr,#ID_string;*ponteiropararotinaatransmitir
ciclo:
clra;garanteooffsetdoA=0
movca,@a+dptr;lovalordatabela
jzemvia_string_X;sefor00h,significaqueofimda
;stringesai
incdptr;senocontinua,actualizaoponteirodptr
lcallenvia_char;chamarotinaparaenviarumcaractere
ajmpciclo;cicloatacabar
envia_string_X:
ret
ID_string:
Db'Microcontroladores'
db0DH;caracterescontrolo:carriage return
db0AH;caracterescontrolo:linefeed
db00H;valor00h,paraindicarofimdasequncia
;atransmitir
10.1PIC16
Memria de programa (ROM)
A memria de programa dos PICs bastante diferente da do 8051.
Cada endereo de memria tem 14 bits. Ex.: quando se fala que um PIC tem 1K
de memria de programa, quer dizer que ele tem 1024 endereos com 14 bits cada.
Estes 14 bits contm, alm da instruo, os dados a ela associados.
Ex.: no 8051 MOV A,#0FF (74,FF) 2 endereos de 8 bits
no PIC MOVLW 0xFF (30FF) 1 endereo de 14 bits
Em um PIC de 1K de memria poder ser colocado 1K instrues. Em um 8051
a quantidade e definida pelo nmero de posies de memria que cada instruo ocupa
(entre 1 e 3), mas certamente a quantidade de instrues ser bem menor que 1K.
O PIC no suporta memria de programa externa.
Memria RAM
Como o 8051 o PIC tambm possui memria RAM interna. Cada endereo
tambm possui 8 bits.
Geralmente os PICs tem sua memria RAM dividida em bancos. EX.: PIC16F84
com 3 bancos. PIC16C924 com 4 bancos.
Estes bancos so diferentes dos bancos de registradores do 8051. Entre eles
sempre h uma rea comum para troca de dados entre os bancos.
O PIC no suporta memria RAM externa.
I/O
Normalmente, como no 8051, os pinos dos PICs podem ser utilizados como
entrada ou sada. Porm nos PICs os pinos devem ser configurados. Esta configurao
pode ser alterada a qualquer momento de execuo do seu software, via software. Assim
como no 8051 as portas de I/0 so tratadas como endereos da memria interna.
Perifricos
Os PICs tem uma grande gama de perifricos.
Dependendo do modelo podem ter: EEPROM, interface serial SPI, I2C e CAN,
entradas analgicas, driver para LCD, contadores, timers, watchdog, etc.
Instrues
Os PICs possuem uma quantidade de instrues bem menor que o 8051. No h
instrues de multiplicao e diviso.
O PIC tem algo parecido com um cache de instrues fazendo com que a cada
ciclo de mquina seja encerrada uma instruo, apesar delas necessitarem de 2 ciclos.
Isto s no ocorre com instrues de salto, que realmente utilizam 2 ciclos de mquina.
Custo
Um PIC 16F84 U$ 7,00
Um PIC 16C924 U$ 11,00
Ferramentas de Desenvolvimento
MPLAB - Software freeware para editar, simular e compilar os programas.
GRAVADOR - Vrios modelos esto disponveis na Internet, principalmente
para o PIC 16F84, que um dos mais comuns.
MPLAB-C - Compilador C para PIC, NO freeware.
C2C - Compilador C freeware para PIC. Est na pgina:
http://www.picant.com/c2c/c.html
Outros dados
Depois do 8051 a linha PIC a mais popular, muito devido ao fato de serem os
primeiros microcontroladores a possuirem verses com memria de programa flash.
A SCENIX (http://www.scenix.com) possui micontroladores compatveis com
os PICs que rodam com at 100MHz de clock.
Na figura 10.1, segue o diagrama interno do PIC16F86
Um exemplo genrico:
0000h - 001Fh - Portas de I/O , Timers, etc.
0020h - 00BFh - No usado
00C0h - 00FFh - RAM
0300h - 0700h - ROM
Um MC68HC908QY4 U$ 1,50
Ferramentas de Desenvolvimento
A Motorola fornece um software chamado MCUez, que um ambiente de
desenvolvimento completo, contando com assemblador, simulador e programador (para
a linha HC05 necessrio comprar o hardware do programador, para a linha HC08 o
gravador simples e h esquemas para o gravador na internet). O software gratuito.
Existem vrios ambientes de desenvolvimento disponveis por terceiros. Alguns
freeware e outros comerciais.
A Motorola no fornece o protocolo de gravao dos CIs da linha HC05, assim
necessrio adquirir um programador para esta linha, seja ele da Motorola ou de
terceiros.
No existe compiladores C grtis para os microcontroladores HC05, mas para a
linha
HC08 sim.
Outros dados
Os microcontroladores Motorola so amplamente usados em equipamentos
comercias devido a seu baixo custo.
A linha HC08 no necessita nem oscilador externo, nem reset externo. Um
oscilador e o reset externo podem ser utilizados, mas se no forem seus pinos podem ser
usados com I/O.
Na Figura 10.2, segue o diagrama interno do MC68HC705J1A.
11REFERENCIAS BIBLIOGRFICAS
ZELENOVSKY, RICARDO. Micro Controladores MCS51 . Apostila do
Curso de Eletrnica da Escola Politcnica Superior do Exrcito Equatoriano.
INTEL CORPORATION. MCS 51 Microcontroller Family Users Manual.
USA. 1994.
MARINHO, JOS EDSON DOS SANTOS. MARINHO, EDNALDO DOS
SANTOS. Mini-Curso de Microcontrolador. Revista Saber Eletrnica Especial No.2.
Janeiro de 2001.
89
P rof. Ricardo Franco
www.engricardofranco.kit.net / engricardofranco@gmail.com