8051
ESCOLA
TÉCNICA Microcontrolador 8051
MONTEIRO Aplicações Básicas
LOBATO com a Linguagem C
CIMOL
curso
Acionamento de Relés
Programação Linguagem C
Tópicos
Compilador C
Exemplos Resolvidos,
Simulações em Software, Experiências Práticas
Editora Independente.
2018 – 1ª Edição
Capa:
Editoração e desenhos: Cristian Machado Goularte
Revisão Gramatical: Rosane Bourscheidt Kunkel
Revisão Técnica:
2
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Mensagem do Autor
Este livro foi escrito no intuito de preencher uma lacuna existente no
estudo prático dos microcontroladores da família 8051, mais
especificamente o modelo AT89S52. Propõe-se uma base sólida de
conhecimentos e habilidades para o desenvolvimento de pequenos
projetos em laboratório para atender a expectativa de estudantes,
entusiastas e profissionais que desejam adentrar o mundo dos
microcontroladores sem prévio conhecimento, ou que simplesmente
desejam recordar este fantástico universo moderno capaz de fazer
frente aos desafios do presente e do futuro da eletrônica.
3
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
4
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Agradecimentos
Primeiramente a Deus por nos dar os meios para que possamos
cumprir tudo o que um dia prometemos.
“Informar é transformar”
“... Cada linha ou palavra pode mudar uma vida, alterar um ponto de vista,
transformar uma realidade. Informar nunca será apenas informar. É fazer pensar,
inspirar, evoluir. Informar é transformar ..., o mundo, a vida.
(2015 Grupo RBS TV)
5
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
INDICE
1. O Microcontrolador 8051.............08 3.6. Programa Liga/Desliga LED Por
1.1. O Microcontrolador AT89S52..........11 Pulso......................................................49
1.1.1. Utilizando um pino como saída..12 3.7. Eliminando o Falso Pulso..................50
1.1.2. Nível lógico....................................13 3.8. Botão com Segunda Função..............53
1.1.3. Forma de Onda (Representação 3.9. Comandos da Linguagem C...............55
Gráfica)......................................................13
4. Temporizadores...........................56
1.1.4. Utilizando um pino como
entrada.......................................................16 4.1. O Timer do 8051.................................57
1.2. Características dos Ports.....................16 4.2. Programa LED Temporizado 1........59
1.2.1. Port P0..........................................16 4.3. Programa LED Temporizado 2........60
1.2.2. Port P1, P2 e P3...........................16 4.4. Jumper de Configuração....................64
4.5. Executando Comandos Somente Uma
1.3. Circuito Mínimo...................................17
Vez.........................................................68
1.4. Montagem em Protoboard.................18
1.5. Simulação em Software.......................19
5. Display 7-Segmentos...................69
1.5.1. Simulador Proteus: Isis...............19
5.1. Funcionamento do Display ...............70
1.6. Variações do 8051...............................21
5.2. Formando os Dígitos Decimais........72
5.3. Programa Contador Digital de
2. Software de Desenvolvimento......22 Segundos...............................................73
2.1. JFE Editor............................................23 5.3.1. Controlando os 8 I/O’s com
2.2. Programa Mínimo...............................25 Comando Único .........................76
2.3. Compilando um Programa.................26 5.3.2. Formando Dígitos Decimais.....77
2.4. Etapas no Desenvolvimento de 5.4. Programa Contador Digital de
Projetos.................................................27 Minutos.................................................78
2.5. Estrutura de um Programa em C......28 5.5. Programa Contador Digital de
2.6. Exemplo de Acionamento de LED..29 Pulsos.....................................................80
2.7. Modificando o Nível Lógico dos 5.5.1. Montagem em Protoboard.........82
I/O’s do 8051......................................30 5.6. Programa Mostrador Digital de 2
2.7.1. Definindo um I/O em Nível Dígitos...................................................84
Baixo..............................................32 5.7. Contagem Dividida por x...................88
2.7.2. Definindo um I/O em Nível 5.8. Relógio Digital.....................................89
Alto................................................32 5.9. Tópico Especial: Contador
2.8. Programa Pisca-LED ........................ 35 Programável..........................................94
2.9. Cristal Oscilador..................................36 5.9.1. Parte 1: Mostrador de 0 a 9........94
5.9.2. Parte 2: Simulação.......................99
3. Linguagem C...............................38
3.1. Estrutura de Controle if-else..............40
6. Display LCD...............................100
3.1.1. Comando if (se)...........................40
6.1 Características do Display LCD......101
3.1.2. Comando if-else ...senão)...........40
6.2 Conexões entre o LCD e o 8051....101
3.1.3. Exemplo de circuito com
estrutura if-else ............................41 6.3 A Biblioteca LCD.H.........................103
3.2. Operadores Relacionais......................43 6.3.1 Exemplo 1: Exibindo Mensagens
3.3. Tipos de Dados....................................44 no LCD.......................................104
3.4. Operadores Lógicos e Booleanos.....49 6.3.2 Simulação em Software............105
3.5. Memória ROM.....................................49 6.3.3 Projeto 1: Contador de 4 dígitos
com LCD...................................107
6
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
8. Comunicação Serial.......................154
8.1. Introdução.......................................155
8.2. A Porta Serial do 8051...................158
8.3. Interligação de Dispositivos
Seriais...............................................159
8.4. O Dado Serial.................................161
8.5. A Biblioteca
#include<SERIAL232.H>..........163
8.5.1. Exemplo 1: Recebendo dados
Seriais (getchar).........................164
8.5.2. Simulação no Software ISIS..166
7
1 O Microcontrolador 8051
O que é um microcontrolador
Visão geral do microcontrolador AT89S52
Utilizando um pino como saída
Nível Lógico
Utilizando um pino como entrada
Características dos Ports P0, P1, P2 e P3
Circuito Mínimo para o funcionamento
Simulação no Software ISIS
1. O que é um Microcontrolador?
O microcontrolador é um circuito integrado que pode
desempenhar qualquer tarefa. É o projetista que especifica o
comportamento do circuito empregando uma linguagem de
programação.
Para realizar essa programação no 8051, é necessário conhecer
uma linguagem de programação e saber aplicar seus
comandos corretamente. O DEV C++, o Delphi, o Visual
Basic são linguagens que permitem a criação de programas
para serem executados em computadores, por exemplo. Já o
SDCC é programa utilizado para programar
microcontroladores na linguagem C. Depois que escrevemos
o programa ele pode ser enviado para o microcontrolador
através da porta USB do computador.
Este livro faz a abordagem da linguagem C no contexto do
8051 que pode servir de base para o aprendizado de qualquer
outro microcontrolador.
Os comandos de programação criados na linguagem C
(denominado de código fonte) devem ser digitados dentro do
ambiente de desenvolvimento (IDE) específico para o 8051.
Depois de digita-lo, o ambiente traduz as instruções do C para
a linguagem do 8051 através de um processo denominado
compilação. A partir daí é gerado um arquivo binário específico
que através de um dispositivo gravador USB, é enviado até a
memória do microcontrolador. Então, o 8051 passa a ter o
comportamento estabelecido no programa (ver figura 1.1).
9
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Gravador Software de
USB gravação
Microcontrolador
(Circuito real) Simulador (ISIS)
10
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
P1
8 pinos de Entrada
P0
e Saída 8 pinos de Saída
(Sugestão do autor)
P3
8 pinos de Entrada
(Sugestão do autor)
P2
8 pinos de Entrada
ou Saída
11
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Transistor PNP
Ex: BC327, BC328,
BC557, BC558
12
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
13
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Sensores
Central
com 8051
14
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Fig.1.6: utilizando o Port P3.0 (pino 10) como entrada para leitura
de botões ou sensores de contato
15
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
16
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
17
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
1K
18
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
2 Software de Desenvolvimento
19
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
20
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
3: Depois de
digitar o
2: No campo nome clique
nome digite no botão
prog1.c salvar
21
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Mensagem de sucesso
na compilação
22
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Tarefas do microcontrolador
(código fonte - arquivo.C)
(Código fonte) Etapa de compilação
Gerado
arquivo.hex
Editor JFE e
COMPILADOR SDCC
Gerado
arquivo.bin
Arquivos do
arquivos.h compilador
23
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
24
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Instruções do programa
(Tarefas do microcontrolador)
25
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Ausência de
junção: não estão
interligados
Com Junção: 1K
estão conectados
26
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
void main()
{
27
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
28
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
29
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
3 A Linguagem C
Comando if - else
Leitura de Pulsos
Operadores Relacionais
Memória de variáveis (RAM)
Tipos de Dados (bit, char, int, long, float)
Operadores Lógicos e Booleanos
Programa Liga/Desliga LED por Pulso
Eliminando o Falso Pulso (debounce)
Comandos da Linguagem C (essenciais)
30
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
3 A Linguagem C
3.1.1 Comando if (se)
O comando if é um dos mais importantes da linguagem C,
pois permite à máquina tomar decisões. Por isso mesmo,
dizemos que esse comando é que dá inteligência ao 8051 para
executar esta ou aquela ação.
Exemplo:
if (P3_0 = = 0) {
P0_0=0;
}
31
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
if(condição necessária){
comando 1...;
comando 2...;
......
}
else{
comando 1...;
comando 2...;
......
}
Exemplo:
se(P3_0==0){
Liga LED;
}
else{
Desliga LED;
}
32
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
33
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
P3.0 que está recebendo sinal do botão, dizemos que P3.0 está
sendo utilizado como entrada (Input).
Nível lógico
na Entrada
P3.0
1 #include<at89x52.h>
2
3 void main(){
4 while(1){
5 if(P3_0==0){ //se receber 0
6 P0_0=0; //Liga LED
7 }
8 else{ //se não
9 P0_0=1; //Desliga LED
10 }
11 }
12 }
34
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Tipos de Dados
O 8051 dispõe 256 Bytes de memória RAM (Random Access
Memory) para a criação de variáveis no programa, e 128 Bytes
de uso interno do próprio chip.
Memória
ROM (8Kbytes) Programa compilado
Microcontrolador
AT89S52 128 Bytes para
variáveis do programa
Memória
RAM 128 Bytes reservados
para o próprio 8051
35
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
36
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
37
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
#include<at89x52.h>
bit x=0;
void main(){
while(1){
if(P3_0==0 & x==0){ //Se P3.0 estiver em
P0_0=!P0_0; //0V (botão pressionado)
x=1;
}
if(P3_0==1){ //Se P3.0 estiver em
x=0; //5V (botão solto)
}
}
}
38
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
A leitura de sinais por pulso (ou por borda de subida) é uma técnica essencial
para o desenvolvimento de projetos com microcontroladores, pois em grande parte
deles é necessário contar pulsos de botões (cliques) ou de sensores.
39
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Memória ROM
O 8051 dispõe de 8KBytes de memória ROM (Read-Only Memory)
onde fica armazenado o programa .HEX gerado pelo compilador e
que é enviado ao 8051 através de um circuito gravador (exemplo:
USBasp). A memória ROM pode ser protegida contra leituras
durante a gravação do chip a fim de evitar cópia de projetos. Ao
tentar ler essa memória o 8051 entrega as informações
embaralhadas que não funcionarão num projeto copiado.
1K
Isto por que com esse conhecimento você já pode dar o passo que moldará
a sua trajetória na criação de projetos.
40
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
#include<at89x52.h>
bit x=0;
unsigned int tempo=0;
void main(){
while(1) {
if(P3_0==0 & x==0){
tempo++;
if(tempo==20000){
P0_0=!P0_0;
x=1;
}
}
if(P3_0==1){
tempo=0;
x=0;
}
}
} Fig.3.7: Eliminando os pulsos falsos do efeito debouncing.
O evento clique somente é processado mantendo-se o botão pressionado
41
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Comandos da Linguagem C
A linguagem C pura, em conformidade com o Instituto norte-
americano de padrões C (ANSI-C), é composta pelos 35 comandos
da tabela 3.4 escritos sempre em letras minúsculas.
auto break case char const
continue default do double else
enum extern float for goto
if int long register return
short signed sizeof static struct
switch typedef union unsigned void
volatile while main
42
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
4 Temporizadores
43
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
4 Temporizadores
Com o uso da biblioteca clock.h é possível implementar aplicações
baseadas em contagem de tempo (temporizações) de forma simples
e eficiente. A biblioteca clock.h está localizada na pasta
C:\8051\SDCC\INCLUDE e oferece as seguintes instruções:
Instrução Efeito
clockStart(); Ativa o Timer
clockStop(); Desliga o Timer
#include<at89x52.h>
#include<clock.h>
bit x=0;
void main(){
while(1){
//****LE PULSO******************
if(P3_0==0 & x==0){
P0_0=0; //Liga LED
clockStart(); //Liga relógio
x=1;
}
if(P3_0==1) x=0;
//****COMPARA TEMPO*************
if(CLOCK==5 || P3_1==0){
P0_0=1; //Desliga LED
clockStop();
}
} //Fig.4.1: Temporizador de 5 segundos
} //disparado por P3.0, cancelado em P3.1
44
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Jumper de Configuração
Um recurso frequentemente empregado na construção de circuitos
é a possibilidade selecionar características pré-determinadas no
projeto.
Fonte: http://e.cdn-hardware.com.br/static/c/m/384cf338013db3dad12935c4dec5c9e1
Fonte: http://www.socialbits.com.br/wp-content/uploads/album_photo/e7/14/14d3_6911.png
45
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Componente JUMPER2
(no simulador ISIS 7)
46
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Na próxima
página temos o
código fonte
para este
circuito.
Observe que o
Tempo –
circuito mínimo
Tempo +
foi omitido nesta start
ilustração.
Fig. 4.7: Temporizador com LCD
47
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
#include<at89x52.h>
#include<clock.h> //Comandos do Timer
#include<LCD.H> //Comandos do LCD
bit x=0;
char tempoProg=10;
void main(){
char i=0;
LCD_init();
while(1){
//****LE PULSO******************
if(P3_0==0 & x==0){ //Se clicar P3.0
LCD_init(); //Limpa LCD
P0_0=0; //Liga LED
clockStart(); //Liga Timer
x=1; //bloqueia bloco if
}
if(P3_0==1){
x=0; //libera o bloco if anterior
}
//****COMPARA TEMPO*************
if(CLOCK==tempoProg){ //Se Timer alcançou tempo
P0_0=1; //Desl. LED
clockStop(); //desliga Timer
}
//******************************
LCD_row1(); //Posiciona na 1ª. linha
LCD_puts("TEMPO:"); //escreve texto
LCD_putint(CLOCK,0,2); //Escreve a variável CLOCK
//****AJUSTE DO TEMPO***********
if(P3_1==0){ //Se pressionar P3.1
tempoProg++; //Ajusta Tempo para mais
}
if(P3_2==0){ //Se pressionar P3.2
tempoProg--; //Ajusta Tempo para menos
}
//******************************
LCD_row2(); //Posiciona Escrita 2ª linha
//****Desenha barra de progresso proporcional à 16 traços
for(i=0;i<((CLOCK*16)/tempoProg);i++){
LCD_putchar(219); //Imprime o caractere ASCII
}
} //fim do while
} //fim do main
48
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
5 Display 7-segmentos
49
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
5 Display 7-Segmentos
segmentos
50
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
a
b
c
d
e
f
g
64 32 16 8 4 2 1
g f e d c b a
1 1 1 1 0 0 1
51
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
11110012=12110
52
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
#include<at89x52.h>
bit x=0;
signed int contagem=0;
void main(){
while(1){
//*******************************
if(P3_0==0 & x==0){
contagem++;
x=1;
if(contagem>9){
contagem=0;
}
}
if(P3_0==1 & x==1){
x=0;
}
//*******************************
if(contagem==0) P0=64; Cadê o abre e fecha
if(contagem==1) P0=121; chaves de cada if ?
if(contagem==2) P0=36;
if(contagem==3) P0=48;
if(contagem==4) P0=25; É permitido omitir as chaves
if(contagem==5) P0=18; somente quando temos um
if(contagem==6) P0=2; único comando a ser
if(contagem==7) P0=120; executado no if. Se houver
if(contagem==8) P0=0; mais de um comando dentro
if(contagem==9) P0=16; do if, o uso das chaves é
} obrigatório.
}
53
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
O C reduzido permite omitir o abre e fecha chaves somente quando temos um único
comando a ser executado no teste, que neste caso é P0=64; se houver mais de um
comando, o uso das chaves é obrigatório. A programação em C reduzido somente é
recomendada para programadores experientes.
54
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Os transistores PNP
(ex.: BC327, BC557)
são acionados em
nível lógico 0, isto
significa que o 8051
deverá enviar nível 0
para que o display
seja acionado.
Fig.5.10: Transistor como Driver do Display
55
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Px.0
Px.1
Px.2
Px.3
Px.4
Px.5
MILHAR CENTENA DEZENA UNIDADE
Px.6
56
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
#include<at89x52.h>
#define SEGMENTOS P0
#define MILHAR P2_3
#define CENTENA P2_2
#define DEZENA P2_1
#define UNIDADE P2_0
#include<display.h>
void main(){
bit x=0;
int valor=0;
while(1){
display(valor,0);
}
}
if(milimetros==10){
centimetros++;
milimetros=0;
}
57
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
MILHAR
CENTENA
Defina a tensão
DEZENA do Buzzer em 5V
UNIDADE
Função displayTime
Esta função é implementada pela biblioteca display.h e destina-se
a exibir duas variáveis no display multiplexado da figura 5.13. As
variáveis ficam assim dispostas:
variavel1=0; 0=normal
variavel2=17; 1=piscante
displayTime(variável1,variável2, 0);
58
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
#include<at89x52.h>
#include<clock.h>
#define SEGMENTOS P0
#define MILHAR P2_3
#define CENTENA P2_2
#define DEZENA P2_1
#define UNIDADE P2_0
#include<display.h>
void main(){
bit x=0;
int minutos=55;
clockStart();
while(1){
if(CLOCK==60){
CLOCK=0;
minutos++;
}
if(minutos==60) minutos=0;
displayTime(minutos,CLOCK,0);
}
} //Fig.5.14: Relógio com ajuste de minutos
59
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
6 Display LCD
60
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
6. Display LCD
6.2. Características do Display LCD
O Display de Cristal Líquido (LCD) apresenta uma vantagem
sobre os displays 7-segmentos (estudados no capítulo
anterior) no que tange a exibição de letras e mensagens, além
disso não necessita da técnica da multiplexação. Os displays
LCD estão disponíveis com a luz de fundo (backlight) nas cores
verde, azul, vermelho, amarelo e também há uma versão sem
luz de fundo. Entretanto, no LCD o operador não tem tanto
alcance de visibilidade em razão do tamanho reduzido das
letras como os dígitos luminosos dos displays 7-segmentos.
Existe o LCD Big Number que consiste numa versão com o dobro
do tamanho dos LCD’s convencionais.
61
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
13 12 11 10 9 8 7 6 5 4 3 2
Ajuste do contraste
Ajuste do contraste
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
62
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Comando Efeito
Inicializa o LCD
LCD_init(); Limpa a tela
LCD_row1(); Posiciona a escrita na 1ª. linha
LCD_row2(); Posiciona a escrita na 2ª. linha
Posiciona a escrita na 3ª. linha
LCD_row3(); (somente nos displays 16x4)
Posiciona a escrita na 4ª. Linha
LCD_row4(); (somente nos displays 16x4)
Escreve uma mensagem na
LCD_puts(“Ano: 2016”); linha escolhida
Escreve uma variável do tipo
LCD_putchar(variavel+48);
char na linha escolhida
Escreve uma variável int
LCD_putint(variável, ponto, Ponto: onde será a posição o
largura) ponto decimal (0 a 4)
Largura: 1 a 5 digitos
63
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
#include<AT89X52.H>
#include<LCD.h>
//****************************************************
void main(){
Descrição de funcionamento:
Na função principal (main) temos a inicialização do LCD. O comando LCD_init( )
também limpa a tela do display. Em seguida temos o posicionamento da escrita na
primeira linha do LCD com o emprego do comando LCD_row1( ) seguido do comando
LCD_puts que escreve uma mensagem ou texto na linha escolhida. Por fim temos o
posicionamento na segunda linha LCD_row2( ) e então a escrita do texto.
64
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
A Tabela ASCII
A tabela ASCII é a padronização da representação dos dados
nos sistemas computacionais e foi instituída no intuito de
tornar possível a troca de dados entre dispositivos. Em termos
gerais, o padrão ASCII viabiliza aos microcontroladores
comunicarem com um computador, impressora, teclado, etc.
Na tabela ASCII (pronuncia-se ásqui) cada caractere
alfanumérico, símbolos e sinais têm uma representação
padronizada.
Como o LCD se vale do padrão ASCII, precisamos converter
as variáveis (que são números) para este padrão. Um modo
simples de transformar um número de 1 digito e torna-lo um
caractere ASCII é somando 48, conforme o exemplo a seguir:
int unidade=0;
LCD_row1(); //posiciona na 1ª. linha
LCD_putchar(unidade+48); //converte unidade para ASCII
65
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
#include<at89x52.h>
#include<lcd.h>
bit x=0;
int contagem=0;
//*****************************************************
void main(){
LCD_init();
Descrição de funcionamento:
66
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
67
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
putTime();
Imprime a hora no LCD. Exemplo: 23:59:59
putDate();
Imprime a data no LCD. Exemplo: 25/12/18
putDow();
Imprime o dia da semana no LCD. Exemplo: TER
Algumas características importantes do DS1307:
68
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Aplicações:
Relógios em geral; Relógio do computador; Relógio de ponto
eletrônico; Sirene de troca de períodos em escolas e empresas;
Para a comunicação do 8051 com o RTC é utilizado o
protocolo I2C implementando na biblioteca i2c.h (o protocolo
I2C é abordado no Capítulo 11). Os I/O’s da comunicação
I2C são especificados em sda (tráfego de dados ou serial data)
e sck (sincronismo ou serial clock).
Veja o exemplo para funcionar com o circuito da figura 6.9:
#define sck P2_6 //define P2.6 como sincronismo
#define sda P2_7 //define P2.7 para os dados I2C
#include<i2c.h> //Implementa o protocolo I2C no 8051
setRTC(valor, RTC_registrador);
Comando Efeito Faixa
setRTC(valor, RTC_HOUR); Define as horas do relógio 0 a 23
setRTC(valor, RTC_MIN); Define os minutos do relógio 0 a 59
setRTC(valor, RTC_SEC); Define os segundos do relógio 0 a 59
69
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
#include<AT89X52.h>
#include<lcd.h>
#include<delay.h>
#define sck P2_6 // Use P1_0 no KIT didático
#define sda P2_7 // Use P1_1 no KIT didático
#include<i2c.h>
#include<ds1307.h>
//********************************************************
void main(){
char dado=0;
LCD_init();
while(1){
//Ajuste do Relógio:
if(P3_2==0){ //Ajusta Hora
setRTC(rtc.hour+1,RTC_HOUR);
if(rtc.hour>23) setRTC(0,RTC_HOUR);
}
if(P3_1==0) setRTC(rtc.min+1,RTC_MIN); //Ajusta min
if(P3_0==0) setRTC(rtc.year+1,RTC_YEAR); // Aj. ano
delay_ms(200);
LCD_row1();
}
}
70
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
7 Interrupções Externas
71
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
7. Interrupções
72
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
73
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Sensor Finalidade
Fluxo: Medir quantidade consumida, vazão, custo
Efeito Hall em tempo real
Chave ótica / Contar voltas, velocidade média, RPM (rotações
Encoder por minuto), distância
Ultrassom Medir distância, altura, profundidade
--- Frequencímetro
74
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Tensão do
Pulso
Forma de
onda
Pulsos por
segundo
Concluir
75
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Defina Count
para contar pulsos
ou
time(secs) para
cronometrar tempo
76
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Amostragem
desatualizada porque
o LCD não a
prioridade no sistema.
Timer
Gerador de
sinais 20Hz
Counter
77
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
78
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Frequencímetro, Velocímetro,
Odômetro (medidor de velocidade;
velocímetro), Medidor de rotações
por minuto (medidor de RPM ou
Fig.7.14: Encoder de Posição
taquímetro), Sensor de ultrassom,
Hidrômetro (sensor de efeito Encoder utilizado para obter a
Hall), Decodificadores de controle posição de deslocamento.
remoto por infravermelho e por Seu funcionamento é baseado no
rádio frequência, Medidor de corte do feixe infravermelho que
gera um pulso de onda quadrada
batimentos cardíacos, etc.
em cada deslocamento.
Neste tipo de equipamento a leitura
de pulsos não pode escapar ao uso das interrupções para que a
contagem seja consistente. Para ilustrar essa necessidade
utilizaremos o exemplo do frequencímetro digital, no qual a cada
segundo ocorre a atualização no LCD da frequência lida em P3.2,
mas para que a mensagem chegue integralmente, isto é, sem pausas,
devemos informar ao 8051 que esses comandos também são
importantes.
79
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
#include<at89x52.h>
#include<lcd.h>
#include<clock.h>
int contagem=0;
80
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Você pode voltar ao tópico 7.1 para ver como inserir e configurar o gerador
de sinais no ISIS.
Configuração do gerador
de sinais
(simulando sensor hall)
81
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
if(pulsosSensor==PULSOSPORLITRO){
mlitros++; Se o sensor enviou a quantidade
custoEmlitros=(mlitros*custoLitro);de pulsos por 100mL então soma
pulsosSensor=0;
}
mL.
if(CLOCK==1){
CLOCK=0;
critical{
LCD_row1(); Atualiza LCD a cada 1
LCD_puts("Consumo R$ "); segundo
LCD_row2();
LCD_putint(mlitros,4,5);
LCD_puts("L ");
LCD_putint(custoEmlitros,2,5);
}
}
}
}
//************************************************
void interrupcao() interrupt 0{
pulsosSensor++;
}
82
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
8 Comunicação Serial
83
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
8. Comunicação Serial
8.1. Introdução
O 8051 oferece uma porta de comunicação serial que permite
a troca de informações entre outros dispositivos que também
utilizam a comunicação serial. Entre tais dispositivos verifica-
se diversos elementos computacionais:
Computadores; Impressoras fiscais;
Scanner de código de barras;
Leitor de cartão magnético;
Bluetooth; Wireless;
Módulo GPS (Sistema de Posicionamento Global);
Módulo GSM (Global System for Mobile – Rede de dados
móveis ex.: SIM800L); Balanças eletrônicas
84
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
85
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
86
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
8051
recebendo e
enviando
dados seriais
+-
87
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
8 bits transmitidos/recebidos
88
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Dado serial D0 D1 D2 D3 D4 D5 D6 D7
1 0 0 0 0 0 1 0
Valor 1 64
Decimal
Valor
1 + 64 = 65 que equivale à “A” (letra maiúscula)
ASCII
89
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
void serial();
//*********************************
void main(){
init_sio_poll(9600);
//Velocidade da
while(1){ //comunicação serial
if(RI==1) serial(); //(baudrate)
}
} // RI significa receive
//*************************** // interrupt
void serial(){
char dado=0;
dado=getchar();
if(dado=='1'){
P2_0=1; //Caracteres esperados na
} //comunicação serial
if(dado=='2'){
P2_0=0;
}
}
//Fig. 8.7: Programa que recebe dados pela porta serial
90
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Funcionamento do programa:
Inicialmente deve ser definido no programa a velocidade do cristal
utilizado na comunicação serial. Alguns periféricos, como o
bluetooth operam na velocidade de comunicação (baudrate) de
9.600bp/s (bits por segundo). Isto requer um cristal de
11059200Hz invés de 12000000Hz no circuito mínimo. Esta
alteração permite ao 8051 gerar o baudrate exato de 9.600bp/s
requerido por esses periféricos externos. Na tabela 8.4 temos os
baudrates gerados por esses dois cristais:
91
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
VIRTUAL TERMINAL
AT89C52
LED-RED
RES (470R)
92
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Dê um duplo clique no
microcontrolador e defina
o Clock Frequency em
11059200Hz
Depois
clique em
“OK”
93
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Execute a
simulação e
assinale essa opção
para visualizar os
dados transmitidos
94
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Figura 8.12:
Exibindo a tela do Virtual Terminal
95
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
#include<AT89X52.H>
#define XTAL 11059200
#include<SERIAL232.H>
void serial();
//**********************************
void main(){ Velocidade da
comunicação serial
init_sio_poll(9600);
(baudrate)
while(1){
if(RI==1) serial();
}
}
//**********************************
void serial(){
char dado=0;
dado=getchar(); Armazena caractere
recebido na variável dado
if(dado=='1'){
P2_0=1;
putchar(dado);
}
Envia de volva o caractere
if(dado=='2'){ armazenado em dado
P2_0=0;
putchar(dado);
}
}
Fig. 8.13: Uso do comando putchar para enviar dados via comunicação serial
96
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
97
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
#include<AT89X52.H>
#define XTAL 11059200
#include<SERIAL232.H>
void serial();
//**********************************
void main(){
init_sio_poll(9600);
while(1){
if(RI==1) serial();
}
}
//**********************************
void serial(){
char dado=0;
dado=getchar();
if(dado=='1'){
P2_0=1;
putText("P2.0 ligado ");
}
if(dado=='2'){
P2_0=0;
putText("P2.0 desligado ");
}
}
98
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
99
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
9 Timer
100
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
9. Timer
Introdução
O Timer é um periférico à disposição do projetista destinado
a gerar bases de tempo para o sistema. Toda vez que o timer
conclui a sua temporização é gerada uma interrupção (ver
capítulo 7) e ocorre um desvio para uma função definida pelo
programador. Após a execução dos comandos dessa função o
programa retoma o fluxo normal, ou seja, retorna ao trecho
em que estava antes de ser interrompido.
O AT89S52 dispõe de 3 timers: timer 0, timer 1 e timer 2. O
timer 1 é utilizado pela biblioteca SERIAL232.H para gerar o
baudrate da comunicação serial, por isso, abordaremos apenas
o timer 0.
Pense num relógio de parede que completa a volta em 60
passos de 1 segundo cada; O timer 0 do 8051 completa essa
volta em 65.535 passos e um pedido de interrupção. A
velocidade de cada passo é igual à velocidade do cristal divido
por 12.
101
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
102
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Comando Efeito
EA=1; Habilita o uso das interrupções
Habilita a interrupção por passagem
ET0=1; de tempo do timer 0
(Enable Timer 0)
Ativa a contagem de tempo
TR0=1; do timer 0
Pausa a contagem de tempo
TR0=0; do timer 0
TH0 e TL0 Armazena o valor inicial do timer 0
103
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
#include<at89x52.h>
unsigned char voltas=0; Palavra interrupt 1 associa a
unsigned int segundos=0; interrupção por passagem de
tempo à função timer
void timer() interrupt 1;
//*******************************
void main(){ Habilita a chave geral das interrupções
EA=1;
ET0=1; Habilita a interrupção por volta do relógio
TMOD=1; Habilita contagem de 16 bits (65.535)
TR0=1;
Liga o timer 0 (Timer 0 Run Ativado!)
while(1){
if(segundos==0){
P0_0=0; //LED VERMELHO
P0_1=1; //LED AMARELO
P0_2=1; //LED VERDE
}
if(segundos==3){
P0_0=1; //LED VERMELHO
P0_1=0; //LED AMARELO
P0_2=1; //LED VERDE
}
if(segundos==4){
P0_0=1; //LED VERMELHO
P0_1=1; //LED AMARELO
P0_2=0; //LED VERDE
}
if(segundos==7) segundos=0;
}
}
//*******************************
void timer() interrupt 1{
TR0=0; Pausa o Timer (Timer Run Desativado)
TH0=0x3C;
TL0=0xAF; Ajusta relógio para iniciar em 15.535
TR0=1; Liga o Timer 0
voltas++; Incrementa uma volta no relógio
if(voltas==20){ Se concluir 20 voltas 20x 50ms=1segundo
segundos++; Soma +1 segundo
voltas=0; Zera para dar 20 voltas novamente
}
}
104
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
105
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
#define ON 0
#define OFF 1
P0_0=ON;
P0_1=OFF;
P0_2=OFF;
106
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
while(1){
if(segundos==0){
VERMELHO=ON;
Agora as definições podem
AMARELO=OFF; ser utilizadas no código fonte
VERDE=OFF;
}
}
Compim
107
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
10 Conversor A/D
108
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
5V
4V
3V
2V
1V
0V
109
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
1
Vin Sinal 2 𝑉𝑖𝑛 × 255
𝑣𝑎𝑙𝑜𝑟 =
de 0 a 5V 4 5𝑉
8
16
32 Exemplo quando Vin for
64 2,5V:
128
2.5𝑉 × 255
𝑣𝑎𝑙𝑜𝑟 = = 127
5𝑉
110
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Observe na figura 10.4 que o sinal analógico (traço fino) passa por
todo o espectro de variações entre 0V até 1V enquanto que a
sensibilidade do ADC é limitada em degraus de 20mV. Isto significa
que as variações intermediarias dos degraus não são percebidas pelo
ADC.
111
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
112
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
#include<at89x52.h>
#include<lcd.h>
#include<clock.h>
int ADC=0;
void main(){
LCD_init();
clockStart();
while(1){
if(CLOCK==1){
ADC=P1;
LCD_putint(ADC,0,3);
CLOCK=0;
}
}
}
Funcionamento do programa:
113
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
5𝑉 × 𝐴𝐷𝐶
𝑡𝑒𝑛𝑠𝑎𝑜 =
255 Precisão de 1 em 1V
5𝑉 × 𝐴𝐷𝐶
𝑡𝑒𝑛𝑠𝑎𝑜 =
25
Precisão de 0.1 em 0.1V
void main(){
LCD_init();
clockStart();
while(1){
if(CLOCK==1){
ADC=P1;
LCD_putint((ADC*VMAX)/25,4,3);
LCD_puts("v");
CLOCK=0;
}
}
}
114
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Neste exemplo temos que R1 receba 200Ω para cada 1 volt que
ultrapasse 5V. Assim podemos obter R1:
Por exemplo, para ler a tensão de uma fonte que varia de 0 a 24V
temos:
𝑅1 = (24𝑉𝑚á𝑥𝑖𝑚𝑎 − 5𝑉) × 0.2𝐾Ω = 3.8KΩ
Note que R1=3,8KΩ não resultou num valor comercial, então, um potenciômetro pode
ser empregado para realizar o ajuste fino de Vin. No Isis, R5 (que equivale ao R1 da
figura 10.12) recebeu o ajuste fino de 3,87KΩ (ver figura 10.13).
115
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Ajuste
fino para
o divisor
de tensão
com 24V
116
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
117
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
R Sensibilidade
0.1Ω 5A / 25 = 200mA em 200mA
0.22Ω 5A / 55 = 90mA em 90mA
0.47Ω 5A / 117 = 43mA em 43mA
1Ω 5A / 255 = 20mA em 20mA
118
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
119
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
R shunt
Barras de cobre
Figura.10.16: Resistor Shunt
Fonte: http://riedon.com/blog/tag/shunt-resistors (Acesso em 26/01/2016)
120
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Exemplo resolvido:
Qual o valor do shunt resistor para medir até 30A com
precisão de 1A em 1A?
Neste caso são 30 escalas (0 a 30A), sendo que o ADC de 8
bits tem a sensibilidade de 20 em 20mV. Portanto, a tensão
máxima no shunt deverá ser 30 x 20mV = 600mV (1,2V).
600𝑚𝑉
Assim temos: 𝑅𝑠ℎ𝑢𝑛𝑡 = = 20mΩ (0.02Ω)
30𝐴
121
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
11 Memória EEPROM
122
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
10K 10K
Microcontrolador SDA
[Dispositivo Mestre] SCL
SDA
SCL
SDA
SDA
SCL
SCL
123
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Comando Efeito
Define que Px_x emitirá o
#define sck Px_x clock da rede i2C
Define a linha de dados em
#define sda Px_y Px_y na rede i2C
save_i2c(id,pos,dado); Salva dado do tipo char
Lê o dispositivo e armazena
dado=read_i2c(id,pos); em char dado
124
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
125
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Programa CONT_LCD_EEPROM.C
#include<AT89X52.h>
#include<lcd.h>
126
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Note que na imagem acima, o display exibe o valor 0060 que corresponde
ao Hexadecimal 3C que está salvo na primeira posição da memória.
4096
2048
8192
1024
256
128
512
32
64
16
8
2
4
127
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
void atualizaLCD();
//****************************************************
void main(){ Lê o MSB na posição 0
contagem=read_i2c(EEPROM,0)*256;
contagem=contagem+read_i2c(EEPROM,1);
...
while(1){ Lê o LSB na posição 1
if(P3_2==0) x=1;
if(P3_2==1 & x==1){
...
save_i2c(EEPROM,0,contagem/256);
save_i2c(EEPROM,1,contagem%256);
}
}
}
//****************************************************
void atualizaLCD(){
//Obtenha o código desta função no cap. 6.3.3
11.5} Ciclo de vida da EEPROM
Toda memória FLASH tem um ciclo de gravações limitado.
Na EEPROM 24Cxx é garantido pelo menos 1 milhão de
gravações em cada posição da memória. Excedendo esse
limite a memória passa a ignorar as operações de escrita
naquela posição (e nas posições vizinhas devido ao excesso de
descargas elétricas). Para prolongar a vida útil da EEPROM,
recomenda-se salvar as informações através de um botão, ou
somente quando o sistema detectar uma queda de energia.
128
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Mensagem Pessoal
Quando começei a trabalhar na Termotron como auxiliar técnico aos 19
anos, em 1999, não percebia que essa indústria eletrônica me prepararia
para a vida. O mestre Marco Antônio Pinho e o Eng. Estanislau Belotto
não me davam as soluções, invés disso, apontavam caminhos: Livros e
equações que ajudariam a elaborar meus próprios circuitos, os quais eram
em grande parte, modificações das revistas Saber Eletrônica e Eletrônica
Total. Desde a década de 80 utilizou-se lá o 8051. Vejo nos tempos atuais
a crescente busca pelo conhecimento deste chip, seja por estudantes ou
profissionais que tornaram a iniciativa u8051 um dos sites mais relevantes
com o termo “Microcontrolador 8051” no google.
Aprendi microcontroladores começando pelo o PIC num curso extra
curricular promivido no CIMOL pelo Eng. Cleber Toss Hoffmann
baseado na plataforma CUSCO PIC, em 2007. No ano seguinte passei a
lecionar microcontroladores PIC na escola em que fui formado, e
posteriormente, passei a ensinar o 8051 com o qual criei muita afinidade
devido estrutura robusta aliada à linguagem muito semelhante ao C que eu
conhecia para computadores.
Em 2011 compilei uma sequência de aulas que resultou no livro 8051
Teoria para utilizá-lo como material didático nas aulas de
microcontroladores. Para minha felicidade, esta fonte de conhecimento
tornou-se amplamente difundida na iniciativa u8051 (www.u8051.com.br).
Observei entretanto, que o crescente interesse dos autodidatas apontava
uma nova direção para o livro: Foco mais prático do que teórico. Por isso,
decidi reescrever as 100 paginas do 8051 Teoria visando os desafios que o
estudante confrontaria em sua trajetoria real. O resultado está agora nesta
obra cujos tópicos foram ajustados segundo a singularidade de
compreensão de 8 turmas (2015/1 à 2018/2).
É literalmente um livro escrito em aula - respondendo à dúvidas dos
estudantes empregando termos de fácil compreensão.
Enquanto digitava esse livro, recebi emails de programadores profissionais
espalhados pelo país sentindo-se representados por tomarem
conhecimento desta obra. Então aproveitaram para comentar suas
experiencias in loco, recomendando-me abordagens no livro a fim de torna-
lo mais acertado e prático.
Um engenheiro de São Paulo contou-me que o 8051 destaca-se no seleto
grupo da confiança da engenharia. Justificou que sendo de arquitetura
robusta criada lá em medados de 80, já se fez de quase tudo com o 8051 e
129
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
130
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
131
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
132
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
#define SEGMENTOS P0
#define MILHAR P2_3
#define CENTENA P2_2
#define DEZENA P2_1
#define UNIDADE P2_0
#include<display.h>
int contagem=0;
int programado=0;
bit x=0;
bit y=0;
bit z=0;
bit modo=0;
void main(){
while(1) {
//****************************************
//Le pulso do sensor
if(P3_0==0 & x==0){
x=1;
contagem++;
if(contagem>9999) contagem=0;
}
if(P3_0==1 & x==1) x=0;
//****************************************
//Alterna exibição da contagem ou programação
if(P3_1==0 & y==0){
y=1;
modo=!modo; //inverte a variável modo
}
if(P3_1==1 & y==1) y=0;
//****************************************
//Modificar o valor programado
if(P3_2==0 & z==0){
z=1;
programado++;
if(programado>9999) programado=0;
}
if(P3_2==1 & z==1) z=0;
//****************************************
//Exibe nos 4 displays multiplexados:
if(modo==0) display(contagem,0);
if(modo==1) display(programado,1);
133
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Note que ao clicar o Botão Programação (P3.1), você poderá alternar entre a
exibição da contagem de pulsos e a exibição do valor de contagem programado.
134
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Referências
Caso os links não esteja mais ativos, tente buscar na Internet pelos nomes dos arquivos.
Conteúdo Geral:
http://www.mikroe.com/downloads/get/303/mikroc_8051_manual_v100.pdf
(Acesso em 09/12/2013)
Interrupções:
http://paginapessoal.utfpr.edu.br/rubens/microcontroladores/
http://www.dainf.ct.utfpr.edu.br/~fabro/IF66J/Relatorios_Finais/2014_1/
(Acesso em 08/12/2016)
http://www.8052.com/tutint.php
(Acesso em 30/08/2017)
Comunicação Serial:
http://paginapessoal.utfpr.edu.br/sato/material-didatico/sistemas-
microcontrolados/material-de-sistemas-
microcontrolados/gs_0908_c_8051_v0.pdf
https://www.pantechsolutions.net/media/k2/attachments/Interfacing_Blueto
oth__With_8051.pdf
http://www.8052.com/tutser.phtml
Conversor ADC:
http://www.ti.com/lit/ds/symlink/adc0804-n.pdf
Memória EEPROM:
http://microcontrolandos.blogspot.com.br/2012/12/comunicacao-i2c.html
http://www.jameco.com/Jameco/Products/ProdDS/697856-DS01.pdf
http://www.arduinoecia.com.br/2015/03/gravar-dados-memoria-eeprom-
arduino.html
(Acesso em 14/11/2016)
135
Microcontrolador 8051
Microcontrolador 8051: Aplicações Básicas com a Linguagem C
Aplicações Básicas
com a Linguagem C VOLUME 1
O Autor
136