Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila Elet. Digital
Apostila Elet. Digital
8051
INDICE
1) SISTEMAS DE NUMERAO................................................................................................................................................... 3
1.1) SISTEMA BINRIO (BASE 2) ............................................................................................................................................ 3
1.2) SISTEMA HEXADECIMAL (BASE 16)................................................................................................................................ 4
1.3) FORMAS DE APRESENTAO ........................................................................................................................................ 4
1.4) CONVERSO DO SISTEMA BINRIO PARA O SISTEMA DECIMAL ............................................................................... 5
1.5) CONVERSO DO SISTEMA HEXADECIMAL PARA O SISTEMA DECIMAL .................................................................... 5
1.6) CONVERSO DO SISTEMA DECIMAL PARA O SISTEMA BINRIO ............................................................................... 5
1.7) CONVERSO DE DECIMAL PARA UMA BASE QUALQUER............................................................................................ 6
1.8) CONVERSO ENTRE AS BASES 2 E 16 .......................................................................................................................... 6
2) OPERAES ARITMTICAS NO SISTEMA BINRIO ............................................................................................................. 8
2.1) ADIO.............................................................................................................................................................................. 8
2.2) SUBTRAO ..................................................................................................................................................................... 8
2.3) COMPLEMENTO DE 2 ....................................................................................................................................................... 9
2.4) DESLOCAMENTO............................................................................................................................................................ 11
3) OPERAES LGICAS ......................................................................................................................................................... 12
3.1) AND.................................................................................................................................................................................. 12
3.2) OR .................................................................................................................................................................................... 13
3.3) NOT.................................................................................................................................................................................. 13
3.4) XOR.................................................................................................................................................................................. 14
4) TERMOS IMPORTANTES ....................................................................................................................................................... 16
5) MICROCONTROLADORES..................................................................................................................................................... 21
5.1) MICROPROCESSADOR: ................................................................................................................................................. 21
5.2) BARRAMENTOS DE UM MICROCONTROLADOR.......................................................................................................... 23
5.3) MODOS DE ATENDIMENTO DE I/O................................................................................................................................ 24
6) MICROCONTROLADOR 8031/8051........................................................................................................................................ 25
6.1) PINAGEM:........................................................................................................................................................................... 25
6.2) BARRAMENTO MULTIPLEXADO:............................................................................................................................................. 26
6.3) CLOCK NO 80C51............................................................................................................................................................ 27
................................................................................................................................................................................................ 28
6.4) RESET DO MICROCONTROLADOR ............................................................................................................................... 28
6.5) INTERRUPOES ............................................................................................................................................................. 30
................................................................................................................................................................................................ 33
6.6) INTERRUPO EXTERNA .............................................................................................................................................. 34
6.7) TEMPORIZADOR E CONTADOR .................................................................................................................................... 35
6.8) COMUNICAO SERIAL ................................................................................................................................................. 37
6.9) INTERFACE SERIAL NO 8051......................................................................................................................................... 38
6.10) TAXA DE TRANSMISSO PARA OS MODOS 1 E 3 .................................................................................................... 39
6.11) TABELA PRTICA COM TAXAS PARA O CRISTAL DE 11,0592 MHZ .......................................................................... 39
7) PROGRAMAO C PARA O MICROCONTROLADOR 8051.............................................................................................. 40
7.1) TIPOS DE VARIVEIS EM C ........................................................................................................................................... 41
7.2) OPERADORES ARITMTICOS ....................................................................................................................................... 41
7.3) OPERADORES LGICOS E RELACIONAIS ................................................................................................................... 42
7.4) OPERADORES DE MANIPULAO DE BIT ................................................................................................................... 42
7.5) DIRETIVAS FUNDAMENTAIS DO PR COMPILADOR................................................................................................ 43
7.6) CONTROLE DE FLUXO ................................................................................................................................................... 44
7.7) MAPA DE ALOCAO DE VARIVEIS NO 8051 ............................................................................................................ 50
1) SISTEMAS DE NUMERAO
Existem vrios sistemas de numricos, dentre os quais se destacam o decimal, o
binrio, o octal e o hexadecimal.
O sistema decimal utilizado por ns no dia a dia, e sem dvida o mais
importante dos sistemas numricos, com os quais podemos formar qualquer nmero
atravs da lei de formao.
An = Algarismo
B = Base do nmero
n = quantidade de algarismos - 1
Ex: 25934
n = 5 -1 = 4
B = 10
A0 = 4; A1 = 3; A2= 9; A3 = 5; e A4 = 2
2.104 + 5.103 + 9.102 + 3.101 + 4.100
2.10000 + 5.1000 + 9.100 + 3.10 + 4.1 = 25934
1.1) SISTEMA BINRIO (BASE 2)
um.
Pgina
Rev. E
1234d ou (1234)10
BINRIO:
0101b ou (0101)2
HEXADECIMAL:
9CF7h ou (9CF7)16
CONVERSO ENTRE BASES
DECIMAL
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
BINRIO
0
1
10
11
100
101
110
111
1000
1001
1010
1011
1100
1101
1110
1111
10000
Pgina
HEXADECIMAL
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
10
Rev. E
Pgina
Rev. E
129d = 10000001b
3882d = F2Ah
1.8) CONVERSO ENTRE AS BASES 2 E 16
Existe uma relao estreita entre os sistemas binrio e hexadecimal. Esta
relao vem do fato de que o nmero 16 pode ser escrito como 24. Os nmeros
hexadecimais podem ser vistos como uma forma compacta de representar os
nmeros binrios.
Para converter de binrio para hexadecimal devemos seguir os seguintes passos:
1) Divide-se o nmero em grupos de 4 algarismos da direita para a esquerda.
2) Converte-se cada grupo no seu equivalente em hexadecimal, conforme a tabela
dada anteriormente.
Ex: 1001 1010 0010 1110b
9
A
2
E h
A converso de hexadecimal para binrio realizada na seqncia inversa.
Pgina
Rev. E
Pgina
Rev. E
2.2) SUBTRAO
O mtodo de resoluo anlogo a uma subtrao no sistema decimal.
importante observar o caso 0 - 1, onde o resultado ser igual a 1 porm
haver um transporte para a coluna da esquerda que deve ser acumulado (somado)
no subtraindo e, obviamente subtrado do minuendo.
A este estouro d-se o nome de borrow.
Pgina
Rev. E
2.3) COMPLEMENTO DE 2
Uma forma para representar nmeros binrios negativos bastante utilizada nos
sistemas j citados a notao de complemento de 2 (C2), mas para obt-la,
devemos primeiramente converter o nmero na notao de complemento de 1.
A obteno do complemento de um ( C1) de um nmero binrio se d pela
troca de cada bit do nmero pelo seu inverso ou complemento.
Binrio:
1011
Complemento 1: 0 1 0 0
A notao de complemento de 2 utilizada para representar nmeros binrios
negativos. Para obter basta somar 1 ao complemento de 1 do nmero binrio inicial.
Decimal
Binrio
Comp. 2
-1
- 0001
1111
-2
- 0010
1110
Pgina
-4
- 0100
1100
-8
- 1000
1000
Rev. E
Pgina
10
Rev. E
O nmero que inicialmente era 0010 ( 2d) foi multiplicado pela sua base (2), que
resultou no binrio 0100 (4d).
De forma anloga se deslocarmos os algarismos de um nmero para a direita,
o resultado ser a diviso do nmero pela sua base.
Ex:
O binrio 1000 que representa 8d como foi deslocado para a direita resultou em 0100
que representa 4d, portanto podemos verificar que o nmero foi dividido pela base 2.
Pgina
11
Rev. E
3.1) AND
Esta funo executa a multiplicao de duas ou mais variveis booleanas. Sua
representao algbrica para duas variveis S = A.B, onde se l S = A e B.
A
0
0
1
1
B
0
1
0
1
S
0
0
0
1
Pgina
12
Rev. E
A
0
0
1
1
B
0
1
0
1
S
0
1
1
1
3.3) NOT
A funo not inverte ou complementa o estado da varivel, ou seja, se a
varivel estiver em zero, a sada vai para 1, e se estiver em 1, a sada vai a zero.
representada algebricamente da seguinte forma S = /A, onde se l no A.
A
0
1
S
1
0
Pgina
13
Rev. E
A
0
0
1
1
B
0
1
0
1
S
0
1
1
0
A funo xor utilizada para gerar PARIDADE PAR, onde este um dos
mtodos para deteco de erro em comunicao digital.
Pgina
14
Rev. E
Pgina
15
Rev. E
Pgina
16
Rev. E
B
0
1
0
1
Y0
0
1
1
1
Y1
1
0
1
1
Y2
1
1
0
1
Y3
1
1
1
0
Pgina
17
Rev. E
Pgina
18
Rev. E
C) 32K RAM, 32K para I/O com mapeamento no redundante nos endereos 8000H
e 8001H
Pgina
19
Rev. E
Pgina
20
Rev. E
Pgina
21
Rev. E
A CPU do tipo CISC possui um conjunto muito grande de instrues (8051, Z80).
VANTAGENS: Possibilita a confeco de programas enxutos. Grande nmero de
modos de endereamento. Uma instruo executa muitas tarefas.
DESVANTAGEM: Difcil memorizao dos comandos. Instrues com diferentes
tamanhos de ciclos de mquina. Subutilizao da CPU. Difcil depurao.
A CPU do tipo RISC possui um conjunto de instrues reduzido.
VANTAGEM: Fcil memorizao, rapidez, fcil depurao.
DESVANTAGEM: Programa muito extenso. Nmero reduzido de registradores e
modos de endereamento. Muitas instrues para realizar uma tarefa simples.
Pgina
22
Rev. E
Barramento de controle:
dispositivos externos.
Pgina
23
Rev. E
Pgina
24
Rev. E
6.1) Pinagem:
Pgina
25
Rev. E
Pgina
26
Rev. E
Pgina
27
Rev. E
Pgina
28
Rev. E
Pgina
29
Rev. E
Pgina
30
Rev. E
Pgina
31
Rev. E
Pgina
32
Rev. E
Onde,
PS - Localizado no bit 4, seleciona prioridade da serial. Quanto em 1 define como alta
a prioridade da serial.
PT1 - Localizado no bit 3, seleciona prioridade do timer1. Quanto em 1 define como
alta a prioridade do timer 1.
Pgina
33
Rev. E
Onde,
IT0 - Localizado no bit 0 de TCON. Quando em nvel lgico 0 a interrupo Externa0
ser aceita simplesmente pela presena do nvel zero no pino. Quando em nvel
lgico 1 a interrupo ser aceita quanto ocorrer uma transio de 1 para 0 e o sinal
permanecer em zero por pelo menos 1ciclo de mquina.
IE0 - Localizado no bit 1 de TCON. setado pelo hardware interno quando for
detectado um pedido de interrupo. resetado quando a interrupo for atendida.
IT1 - Localizado no bit 2 de TCON. Quando em nvel lgico 0 a interrupo Externa1
ser aceita simplesmente pela presena do nvel zero no pino. Quando em nvel
lgico 1 a interrupo ser aceita quanto ocorrer uma transio de 1 para 0 e o sinal
permanecer em zero por pelo menos 1ciclo de mquina.
IE1 - Localizado no bit 3 de TCON. setado pelo hardware interno quando for
detectado um pedido de interrupo. resetado quando a interrupo for atendida.
Pgina
34
Rev. E
Onde,
TF1 - setado pelo hardware sempre que ocorrer um overflow (estouro no contador)
no T/C1. resetado ao final da rotina de interrupo de T/C1.
TR1 - Quando em nvel lgico 1 ir ligar o T/C1, e quando em zero o mesmo ser
desligado.
TF0 - setado pelo hardware sempre que ocorrer um overflow (estouro no contador)
no T/C0. resetado ao final da rotina de interrupo de T/C0.
TR0 - Quando em nvel lgico 1 ir ligar o T/C0, e quando em zero o mesmo ser
desligado.
Para realizar a configurao do modo de funcionamento do temporizador/contador
devemos manipular os bit`s de TMOD.
Onde,
Gate0; Gate1 Definem como o timer/contador ir funcionar. Quando este bit estiver
em nvel lgico 1 o timer/contador ser ativado se TRn e o pino INTn forem 1. Esta
configurao bastante til quando queremos medir largura de pulso externo.
Quando este bit estiver em nvel lgico 0 o timer/contador ser ativado simplesmente
colocando TRn em 1.
Pgina
35
Rev. E
Pgina
36
Rev. E
Pgina
37
Rev. E
Onde,
RI - setado pelo hardware ao receber o oitavo bit no modo sncrono ou no meio do
stop bit no modo assncrono. Deve ser zerado para permitir que sejam geradas novas
interrupes.
TI - setado pelo hardware ao transmitir o oitavo bit no modo sncrono ou no incio
do stop bit no modo assncrono. Permite que a transmisso dos dados seja
independente do fluxo principal do programa. Deve ser zerado para permitir que
sejam geradas novas interrupes.
RB8 - No modo 0 indica o estado do stop bit Nos modos 2 e 3 indica o estado do
nono bit recebido.
TB8 - Nos modos 2 e 3 usado para transmitir o nono bit.
REN - Habilita a recepo serial. Se estiver zerado a recepo estar desabilitada e o
pino RXD pode ser usado como pino de I/O
SM2 - No modo 0 deve permanecer zerado. No modo 1 no gera pedido de
interrupo se estiver setado e o stop bit for invlido. Nos modos 2 e 3 permite a
interligao entre vrios 8051
Pgina
38
Rev. E
SM1
0
1
0
1
MODO
0
1
2
3
Taxa de comunicao
Fclock / 12
Varivel (Conforme Timer1)
Fclock / 32 ou Fclock / 64
Varivel (Conforme Timer1)
Frequncia( Mhz).106
TH 1 = 256
384.Taxa( BPS )
2 SMOD .Frequncia
TAXA =
384 ( 256 THI )
6.11) TABELA PRTICA COM TAXAS PARA O CRISTAL DE 11,0592 Mhz
TAXA (BPS)
300
1200
2400
4800
9600
VALOR RECARGA(TH1)
160
232
244
250
253
Pgina
39
Rev. E
Pgina
40
Rev. E
NUMERO DE BITS
8 bits
8 bits
16 bits
16 bits
32 bits
32 bits
0
ALCANCE
-128 a + 127
0 a 255
-32768 a 32767
0 a 65535
-2147483648 a +2147483647
3.4e-38 a 3.4e38
Sem valor
ucLLeitura++;
Pgina
41
Rev. E
Maior que
Menor que
Maior ou igual que
Menor ou igual que
igual
Diferente
Relacional e
Relacional ou
Relacional no
Pgina
42
Rev. E
1
50
B) #INCLUDE <ARQUIVO>
Informa ao que dever ser includo o ARQUIVO antes de realizar a compilao do
programa.
Exemplo:
#include <8051.h>
#include 8051.h
Pgina
43
Rev. E
Pgina
44
Rev. E
#include <pwlib.h>
unsigned char ucGLeitura;
void main (void)
{
ucGLeitura = P1;
if(!ucGLeitura)
{
P3_0 = 1;
P3_1 = 0;
}
else
{
P3_0 = 0;
P3_1 = 1:
}
}
Pgina
45
Rev. E
BREAK;
A palavra chave DEFAULT, tem por objetivo especificar um enunciado para ser
executado caso o valor de entrada no seja encontrado em nenhum valor de
comparao do CASE. Se no for necessrio executar um enunciado quando o valor
no for encontrado a palavra chave DEFAULT no ser necessria.
Exemplo: Se o valor da varivel for 00h o microcontrolador dever mostrar desligado
se for FFh dever mostrar maximo valor seno a mensagem intermediario
Pgina
46
Rev. E
break;
",2,1);
",2,1);
PWDisplayEscreveString("Intermediario ",2,1);
C) WHILE
A instruo WHILE possibilita a repetida execuo de um enunciado simples ou
composto, enquanto uma determinada condio for satisfeita. Esta instruo
bastante verstil. A sintaxe a seguinte:
WHILE(condio)
{
Enunciado1;
}
Pgina
47
Rev. E
D) DO WHILE
A instruo DO WHILE permite que o enunciado1, que pode ser simples ou
composto, seja executado enquanto a condio for verdadeira.
A diferena entre a instruo DO-WHILE e a WHILE resume-se no fato de que,
enquanto a instruo WHILE testa a condio antes da execuo do enunciado1,
esta testa a condio aps a execuo do enunciado1, isto , o enunciado1 ser
executado pelo menos uma vez.
Veja que neste exemplo no necessrio a primeira leitura da tecla
#include <pwlib.h>
#include <8051.h>
unsigned char ucGLeitura;
void main (void)
{
ucGLeitura = P1;
PWDisplayEscreveString (Selecione tecla:,1,1);
do
{
ucGLeitura = PWLeTeclado ( );
}
Pgina
48
Rev. E
F) RETURN
A instruo RETURN possibilita que se retorne da execuo de uma funo. Quando
retorna, podemos passar um valor para a funo que originou a chamada. Caso seja
retornado um valor, necessrio que o tipo seja o mesmo especificado na declarao
da funo.
Pgina
49
Rev. E
Pgina
50
Rev. E
Pgina
51
Rev. E
Pgina
52
Rev. E
Pgina
53
Rev. E
Pgina
54
Rev. E
PATH
c:\mide\sdcc
Pgina
55
Rev. E
Aps clicar no icone para fazer a carga do firmware ( 8.1.2 ) o boto de GRAVAR no
aplicativo dever estar habilitado se o programa for compilado e carregado com
sucesso, isto , o texto Gravar dever estar na cor verde. Caso o boto esteja com
o texto em cinza existem duas possibilidades:
1) O arquivo HEX no foi gerado devido a algum erro no programa.
2) O arquivo gerado no pode ser aberto pelo aplicativo.
3) O aplicativo no conectou com a placa porque no estava em modo carga.
Se o boto estiver habilitado, voc poder ver na parte de baixo do aplicativo o nome
do arquivo HEX que foi carregado pelo WinLoader51 e o Checksum do firmware
selecionando a opo FERRAMENTAS / STATUS.
NOTA: O checksum a soma de todos os bytes do arquivo HEX gerado pelo
compilador.
Para gravar o programa na placa didtica devemos seguir os seguintes passos:
Pressione o boto de CARGA na placa didtica de forma que o LED da placa fique na
cor vermelha. Se o aplicativo estiver sendo executado, o LED de STATUS dever
ficar na mesma cor da placa, informando que existe comunicao entre eles.
Pgina
56
Rev. E
Neste momento, o usurio deve clicar no boto Gravar. Aps alguns segundos o
aplicativo deve mostrar uma barra com o andamento da carga do firmware na placa.
Pgina
57
Rev. E
Pgina
58
Rev. E
Pgina
59
Rev. E
PWDisplayLimpa();
PWDisplayEscreveString ("Velocidade =" 1,1);
uiGVelocidade = PWEntraIntxxxxx ();
PWDisplayEscreveString ("Digitado= "2,1);
PWMostraIntxxxxx (uiGVelocidade);
// Limpa display
// Mostra mensagem na linha 1
// Aguarda usurio digitar valor
// Coloca mensagem na posio
// Mostra varivel inteiro no display
Pgina
60
Rev. E
Pgina
61
Rev. E
ucLRetorno = PWLeTeclado();
switch(ucLRetorno)
{
case '1':
ucLCanal = 1;
break;
case '2':
ucLCanal = 2;
break;
}
}while(ucLCanal == 0);
break;
case '2':
PWDisplayEscreveString("Selecionado: ",1,1);
PWDisplayEscreveString("Conversor D/A 0 ",2,1);
break;
}
PWDelay1Segundo(1);
break;
}
else
{
PWDisplayEscreveString("Selecao invalida",1,1);
PWDisplayEscreveString("Tente novamente.",2,1);
PWDelay1Segundo(1);
}
ucLByte = 0;
PWDisplayLimpa();
Pgina
62
Rev. E
if(ucLOpcao == '2')
{
PWDisplayEscreveString("Fechar jump. JP1",1,1);
PWDisplayEscreveString("pres. tecla test",2,1);
do
{
ucLRetorno = PWLeTeclado();
}
}while(ucLRetorno == 0);
while(1)
{
if(ucLOpcao == '1')
{
if(ucLCanal == 1)
{
ucLByte = PWLeituraAD(0);
}
else
{
ucLByte = PWLeituraAD(1);
}
PWBinToASCII(2,1,ucLByte );
PWDelay1Segundo(1);
if(ucLOpcao == '2')
{
PWDisplayEscreveString("WR
",1,1);
PWDisplayEscreveString("RD
PWEscreveDA(0,ucLByte);
PWDelayms(50);
PWBinToASCII(1,4,ucLByte );
ucLByte++;
do
{
ucLRetorno = PWLeituraAD(0);
PWDelay1Segundo(1);
PWBinToASCII(2,4,ucLRetorno );
ucLRetorno = PWLeTeclado();
}
while(ucLRetorno == 0);
}
}
void InicializaRegistradores(void)
{
IP = 0x00;
TMOD = 0x00;
IE = 0x00;
TMOD = 0x01;
TR0 = 1;
Pgina
63
Rev. E
void InicializaRegistradores(void)
{
IP = 0x00;
// Configura prioridade padrao para interrupcoes
TMOD = 0x00;
// Configura modo do TIMER
IE = 0x00;
// Desabilita interrupes
}
void MostraValor(unsigned char Valor)
{
unsigned char ucLTecla;
Pgina
64
Rev. E
Pgina
65
Rev. E
}
if(ucGTecla == '1')
{
if(ucGDutyCicle > 0)
ucGDutyCicle--;
PWDisplayLimpa();
PWDisplayEscreveString("Diminui PWM ",1,1);
PWMostraCharxxx(ucGDutyCicle);
PWEscreveCaractere('%');
PWDelayms(100);
ucAtualiza = 1;
}
if((ucAtualiza)&&(ucGTecla == 0))
// Se nenhuma tecla pressionada e alterou Duty Cicle
{
PWDisplayLimpa();
PWDisplayEscreveString ("GERANDO PWM ",1,1);
PWMostraCharxxx(ucGDutyCicle);
PWEscreveCaractere('%');
ucAtualiza = 0;
}
}
}
void InicializaRegistradores(void)
{
IP = 0x00;
// Configura prioridade padrao para interrupcoes
IE = 0x82;
// Habilita interrupo timer 0
TMOD = 0x01;
// Timer zero no modo 1
TR0 = 1;
TH0 = CONTAGEMH;
TL0 = CONTAGEML;
Pgina
66
Rev. E
TH1 = 0;
TL1 = 0;
EX1 = 1;
ucGFlag = 0;
TR1 = 1;
Pgina
67
Rev. E
Pgina
68
Rev. E
// Delay de 45 ms
// Delay de 4 segundos
// Delay
// Inicializa o display
Pgina
69
Rev. E
// Limpa do display
Pgina
70
Rev. E
Pgina
71
Rev. E
Exemplo:
PWDisplayPosicionaCursor (2,4);
Pgina
72
Rev. E
Pgina
73
Rev. E
Pgina
74
Rev. E
Pgina
75
Rev. E
Pgina
76
Rev. E
Pgina
77
Rev. E
Pgina
78
Rev. E