SlideShare uma empresa Scribd logo
SENAI – Curso Microcontroladores 8051
EXERCÍCIOS RESOLVIDOS
Modos de endereçamento direto
LABEL INSTR OPERANDO COMENTÁRIOS
$include(REG51.inc) ; inclui no programa assembly o arquivo (REG51.inc)
ORG 0000H ; o programa inicia na linha 0000H da EPROM
MOV A,#01010101B ; carrego no ACC por binário o valor 01010101B ou 55h.
MOV A,#HIGH (0FH) ; carrego A com a parte alta de uma variável de 16 bits, ou
seja, carrego os 8 últimos bits
MOV B,#LOW(0FH) ; carrego B com a parte baixa de uma variável de 16 bits,
; ou seja, carrego os 8 primeiros bits
MOV B,#HIGH(65535 ; carrego B com a parte alta de uma variável de 16 bits, ou
; seja, carrego os 8 últimos bits de 65535)=FFH
MOV A,#LOW(65535) ; carrego A com a parte baixa de uma variável de 16 bits,
; ou seja, carrego os 8 últimos bits de 65535)=FFH
MOV A,#(255-250) ; carrego em A a diferença da operação 255-250 = 5 = 05H
MOV A,#HIGH(255-240) ; carrego em A a parte alta da operação (15=0FH) que é
; 0FH
MOV B,#LOW(255-240) ; carrego em B a parte baixa da operação (15=0FH), que é
; 0FH.
MOV A,#'B' ; carrego em A o valor do código ASCII da letra B, que é
; 66 em decimal, ou 42H (em hexa)
MOV A,#'C' ; carrego em A o valor do código ASCII da letra C, que é
; 67 em decimal ou 43H.
MOV A,#0FFH ; carrego no acumulador A(ACC) o valor 11111111B
MOV A,#00H ; carrego no acumulador A(ACC) o valor 00000000B
MOV B,#0F0H ; carrego no registrador B o valor 11110000B
MOV R0,#0F0H ; carrego no registrador R0 o valor 11110000B
MOV A,#192 ; carrego no ACC, por decimal o valor 1000000B ou 0C0H
SJMP $ ; o programa fica parado nesta instrução
END
Unidade 3 – Software do microcontrolador 8051
Exercícios resolvidos
1
SENAI – Curso Microcontroladores 8051
Programa com uso do recurso label
LABEL INSTR OPERANDO COMENTÁRIOS
$include(REG51.inc) ; inclui no programa assembly o arquivo (REG51.inc)
ORG 0000H ; programa começa no 0000H da Eprom (memória de
; programa)
MOV A,#0FFH ; escrevo no acumulador (ACC) o valor 0FFH
SALTO: DEC A ; decrementa A
MOV P2,A ; carrego o valor de A para porta P2
SJMP SALTO ; salto para o endereço dado pelo nome (LABEL) “SALTO”
END
Programa com instrução que utiliza o registrador DPTR
LABEL INSTR OPERANDO COMENTÁRIOS
$include(REG51.inc) ; inclui no programa assembly o arquivo (REG51.inc)
ORG 0000H ; inicia em 0000H
INICIO: MOV DPTR,#0050H ; carrega o valor 0050h no registrador DPTR
MOV A,#00H ; carrega o ACC com 00H
JMP @A+DPTR ; o programa salta para o endereço de DPTR+@A = DPTR
ORG 0050H ; inicia na posição 0050H
MOV DPH,#00H ; nesta posição de memória de programa(0050h), escrevo
; a instrução para carregar o valor 0030h para o
; registrador DPTR por meio de DPH e DPL, isto é, por
; partes de 8 bits.
MOV DPL,#30H
JMP @A+DPTR ; salta para a posição de endereço 0030h
ORG 0030H ; programa está agora na posição 0030h.
LJMP INICIO ; “long jump” salta o programa para label inicio.
END
Unidade 3 – Software do microcontrolador 8051
Exercícios resolvidos
2
SENAI – Curso Microcontroladores 8051
Programa com o uso de interrupcões
LABEL INSTR OPERANDO COMENTÁRIOS
$include(REG51.inc) ; inclui no programa assembly o arquivo (REG51.inc)
SW3 EQU P3.2 ; SW3 igual a P3.2
ORG 0000H ; inicia em 0000H (reset)
LJMP INICIO ; salta para rotina inicio
ORG 0003H ; INT0 (EX0) – serviço de interrupção de INT0.
LJMP INT_0
ORG 0100H ; inicia no end 0100H
INICIO: MOV A,#00000001B ; move para acumulador o valor 00000001H
CLR C ; zera a flag de carry
MOV P2,A ; move o conteúdo de A para P2
SETB EX0 ; habilita a flag de interrupção INT0
SETB EA ; habilita todas as interrupções
LJMP $ ; o programa fica parado nesta instrução
; rotina para atender a interrupção INT_0
INT_0: RLC A ; rodo o conteúdo do acumulador mais o carry à esquerda
MOV P2,A ; move o conteúdo do acumulador para a porta P2
TECLA: JNB SW3,TECLA ; salto condicionalmente para o Label Tecla se o bit SW3
; for nível lógico zero
RETI ; retorno de interrupção
END
Unidade 3 – Software do microcontrolador 8051
Exercícios resolvidos
3
SENAI – Curso Microcontroladores 8051
Experiência 01: pisca-pisca com led
Objetivo
Montar um circuito que consiste em acender e apagar um led continuamente, com o tempo de 1
segundo entre acender e apagar.
É importante analisar o esquema elétrico para fazer um programa que seja compatível com o
hardware desejado.
Esquema elétrico
Unidade 3 – Software do microcontrolador 8051
Exercícios resolvidos
4
SENAI – Curso Microcontroladores 8051
Fluxograma
Unidade 3 – Software do microcontrolador 8051
Exercícios resolvidos
5
início
P2 = 0
apaga o led L1
sub-rotina de
tempo 1
P2.0 = 1
acende o led L1
sub-rotina de
tempo 1
P2.0 = 0
apaga o led L1
sub-rotina de
tempo 1
início da sub-
rotina
Rotina de tempo
de 1
Retorno da
sub-rotina
SENAI – Curso Microcontroladores 8051
Programa
LABEL INSTR OPERANDO COMENTÁRIOS
$include(REG51.inc) ; inclui no programa assembly o arquivo (REG51.inc)
TEMPO EQU 19702 ; tempo de 50ms para cristal de 11 MHz
ORG 0000H ; o programa começa na linha 0000h da EPROM
; (memória de programa).
MOV P2,#00H ; escrevo na porta P2 o valor 00000000B ou 00H, ou
; seja, zero a porta P2
PRINCIPAL: LCALL TEMPO_1S ; chamo sub-rotina de tempo de 1 segundo
SETB P2.0 ; liga o bit P2.0 da porta P2
LCALL TEMPO_1S ; chamo sub-rotina de tempo de 1 segundo
CLR P2.0 ; desliga o bit P2.0 da porta P2
LCALL TEMPO_1S ; chamo sub-rotina de tempo de 1 segundo
LJMP PRINCIPAL ; salta para o label principal
; rotina de tempo de 1 segundo, que utiliza o timer 0 do Microcontrolador 8051
TEMPO_1S: MOV R0,#20H ; carrega Reg. R0 com numero 20 em hexa
CLR TR0 ; desliga timer 0
CONT: CLR TF0 ; reseta flag TF0
MOV TL0,#LOW(TEMPO) ; carrega parte baixa do timer 0
MOV TH0,#HIGH(TEMPO) ; carrega parte alta do timer 0
SETB TR0 ; liga timer 0
JNB TF0,$ ; espera o estouro do timer 0.
CLR TR0 ; desliga timer 0
DJNZ R0,CONT ; decrementa e retorna se Reg. não‚ zero
RET ; retorno da sub-rotina
END ; fim do programa
Unidade 3 – Software do microcontrolador 8051
Exercícios resolvidos
6
SENAI – Curso Microcontroladores 8051
Experiência 02 – seqüencial com led
Objetivo
Montar um circuito que consiste em acender sequencialmente 8 leds, com o tempo de 1 segundo
entre acender e apagar cada led. Há, também, dois botões com a função de determinar o sentido
de rotação dos leds como segue abaixo.
• Botão 1: quando acionado roda a seqüência de led para a esquerda.
• Botão 2: quando acionado roda a seqüência de led para a direita.
É importante analisar o esquema elétrico para fazer um programa que seja compatível com o
hardware onde ele vai ser utilizado.
Esquema elétrico
Unidade 3 – Software do microcontrolador 8051
Exercícios resolvidos
7
SENAI – Curso Microcontroladores 8051
Fluxograma
Unidade 3 – Software do microcontrolador 8051
Exercícios resolvidos
8
início
P2 = 0
apaga o led L1
sub-rotina de 1
Roda o conteúdo do
Reg. A a direita
A = 01H
Valor que será rodado
Botão
P3.0 = 0?
Botão
P3.1 = 0?
início da sub-
rotina
Rotina de tempo
de 1 segundo
Retorno da
sub-rotina
P2.0 = A
Acende leds da porta P2
com conteúdo de A
sub-rotina de 1
Roda o conteúdo do
Reg. A a esquerda
Sim
Não Sim
Não
SENAI – Curso Microcontroladores 8051
Programa
LABEL INSTR OPERANDO COMENTÁRIOS
$include(REG51.inc) ; inclui no programa assembly o arquivo
; (REG51.inc)
TEMPO EQU 19702 ; tempo de 50ms para cristal de 11 MHz
ORG 0000H ;o programa começa na linha 0000H da EPROM
; (memória de programa).
MOV P2,#00H ; zera a porta P2 ou seja apaga todos os leds
MOV A,#01H ; carrega o acumulador com valor 01H
DIREITA: JNB P3.0,ESQUERDA ; testa a porta P3.7 se for nível lógico 1, salta para o
; label ESQUERDA .
MOV P2,A ; move para a porta P2 o conteúdo do acumulador
LCALL TEMPO_1S ; chama sub-rotina tempo de um segundo
RR A ; roda para direita o conteúdo do acumulador
LJMP DIREITA ; salta para o label direita
ESQUERDA: JNB P3.1,DIREITA ; testa a porta P3.6 se for nível lógico 1, salta para o
; label DIREITA .
MOV P2,A ; move para a porta P2 o conteúdo do acumulador
LCALL TEMPO_1S ; chama sub-rotina tempo de um segundo
RL A ; roda para esquerda o conteúdo do acumulador
JMP ESQUERDA ; salta para o label esquerda
; rotina de tempo de 1 segundo, que utiliza o timer 0 do Microcontrolador 8051
TEMPO_1S: MOV R0,#20H ; carrega Reg. R0 com numero 20 em hexa
CLR TR0 ; desliga timer 0
CONT: CLR TF0 ; reseta flag TF0
MOV TL0,#LOW(TEMPO) ; carrega o TL0 (com a parte baixa de TEMPO =
; 4CF6H) = F6H
MOV TH0,#HIGH(TEMPO) ; carrega o TH0 (com a parte alta de TEMPO =
; 4CF6H) = 4CH
SETB TR0 ; liga timer 0
JNB TF0,$ ; espera o estouro do timer 0.
CLR TR0 ; desliga timer 0
DJNZ R0,CONT ; decrementa e retorna se Reg. não‚ zero
RET ; retorno da sub-rotina
END ; fim do programa
Unidade 3 – Software do microcontrolador 8051
Exercícios resolvidos
9
SENAI – Curso Microcontroladores 8051
Programa com uso da instrução CPL
Compile o programa no RIDE51 e simule no modo debug e com janelas Port 0 e Port 2 abertas e
analise cada instrução do programa no modo passo a passo.
LABEL INSTR OPERANDO COMENTÁRIOS
$include(REG51.inc) ; inclui no programa assembly o arquivo
; (REG51.inc)
ORG 0000H ; o programa começa na linha 0000H da EPROM
; (memória de programa).
BOTAO: JB P0.0,BOTAO ; testa o botão e se for nível lógico zero, vai para
; próxima linha
CPL P2.0 ; complementa a porta P2.0, ou seja inverte a
; condição anterior. Se P2.0 estiver com nível lógico
; 1 vai para nível lógico 0
JNB P0.0,BOTAO ; testa o botão e se for nível lógico um, vai para
; próxima linha
LJMP BOTAO ; salto incondicional para o label botao
END ; fim do programa
Mapa da eprom (memoria de programa interna) do programa no formato intel
hex
:0B0000002080FDB2A03080FD02000057
:00000001F
Unidade 3 – Software do microcontrolador 8051
Exercícios resolvidos
10

Mais conteúdo relacionado

Mais procurados

3 --retificadores
3 --retificadores3 --retificadores
3 --retificadores
Alexandre Awe
 
Flip Flops Parte 3
Flip Flops Parte 3Flip Flops Parte 3
Flip Flops Parte 3
Elaine Cecília Gatto
 
Automação projeto de semáforo
Automação projeto de semáforoAutomação projeto de semáforo
Automação projeto de semáforo
antonio sena
 
Segurança em RM
Segurança em RMSegurança em RM
Segurança em RM
Fabiano Ladislau
 
Eletrônica Básica
Eletrônica BásicaEletrônica Básica
Eletrônica Básica
Desiree Santos
 
Aula de Imagenologia sobre Segurança em Ressonância Magnética
Aula de Imagenologia sobre Segurança em Ressonância MagnéticaAula de Imagenologia sobre Segurança em Ressonância Magnética
Aula de Imagenologia sobre Segurança em Ressonância Magnética
Jaqueline Almeida
 
Flip Flops Parte 1
Flip Flops Parte 1Flip Flops Parte 1
Flip Flops Parte 1
Elaine Cecília Gatto
 
Instalações elétricas industriais_slides_parte_i
Instalações elétricas industriais_slides_parte_iInstalações elétricas industriais_slides_parte_i
Instalações elétricas industriais_slides_parte_i
wagner26
 
Transmissor de fm
Transmissor de fmTransmissor de fm
Transmissor de fm
marcelo santana
 
Comunicação PC - PC via porta paralela
Comunicação PC - PC via porta paralelaComunicação PC - PC via porta paralela
Comunicação PC - PC via porta paralelaluizgraf
 
Osciloscópio
OsciloscópioOsciloscópio
Osciloscópio
Vanderley Evangelista
 
Apostila sobre controlador lógico programável avançado
Apostila sobre controlador lógico programável avançadoApostila sobre controlador lógico programável avançado
Apostila sobre controlador lógico programável avançado
Claudio Arkan
 
Eletrônica digital (introdução aos sistemas digitais)
Eletrônica digital (introdução aos sistemas digitais)Eletrônica digital (introdução aos sistemas digitais)
Eletrônica digital (introdução aos sistemas digitais)
val10z
 
Amplificadores operacionais
Amplificadores operacionaisAmplificadores operacionais
Amplificadores operacionais
GIGLLIARA SEGANTINI DE MENEZES
 
Medidor de resistencias baixas
Medidor de resistencias baixasMedidor de resistencias baixas
Medidor de resistencias baixas
Gravatá Eletrônica
 
1 mamo1
1 mamo11 mamo1
1 mamo1
Luanapqt
 

Mais procurados (20)

3 --retificadores
3 --retificadores3 --retificadores
3 --retificadores
 
Flip Flops Parte 3
Flip Flops Parte 3Flip Flops Parte 3
Flip Flops Parte 3
 
Automação projeto de semáforo
Automação projeto de semáforoAutomação projeto de semáforo
Automação projeto de semáforo
 
Segurança em RM
Segurança em RMSegurança em RM
Segurança em RM
 
Eletrônica digital aula 01
Eletrônica digital   aula 01Eletrônica digital   aula 01
Eletrônica digital aula 01
 
Eletrônica Básica
Eletrônica BásicaEletrônica Básica
Eletrônica Básica
 
Aula de Imagenologia sobre Segurança em Ressonância Magnética
Aula de Imagenologia sobre Segurança em Ressonância MagnéticaAula de Imagenologia sobre Segurança em Ressonância Magnética
Aula de Imagenologia sobre Segurança em Ressonância Magnética
 
Flip Flops Parte 1
Flip Flops Parte 1Flip Flops Parte 1
Flip Flops Parte 1
 
Instalações elétricas industriais_slides_parte_i
Instalações elétricas industriais_slides_parte_iInstalações elétricas industriais_slides_parte_i
Instalações elétricas industriais_slides_parte_i
 
Transmissor de fm
Transmissor de fmTransmissor de fm
Transmissor de fm
 
Comunicação PC - PC via porta paralela
Comunicação PC - PC via porta paralelaComunicação PC - PC via porta paralela
Comunicação PC - PC via porta paralela
 
Osciloscópio
OsciloscópioOsciloscópio
Osciloscópio
 
Noçoes de mamografia
Noçoes de mamografiaNoçoes de mamografia
Noçoes de mamografia
 
Relatório Eletronica
Relatório EletronicaRelatório Eletronica
Relatório Eletronica
 
Apostila sobre controlador lógico programável avançado
Apostila sobre controlador lógico programável avançadoApostila sobre controlador lógico programável avançado
Apostila sobre controlador lógico programável avançado
 
Eletrônica digital (introdução aos sistemas digitais)
Eletrônica digital (introdução aos sistemas digitais)Eletrônica digital (introdução aos sistemas digitais)
Eletrônica digital (introdução aos sistemas digitais)
 
Amplificadores operacionais
Amplificadores operacionaisAmplificadores operacionais
Amplificadores operacionais
 
Medidor de resistencias baixas
Medidor de resistencias baixasMedidor de resistencias baixas
Medidor de resistencias baixas
 
1 mamo1
1 mamo11 mamo1
1 mamo1
 
Circuitos sequenciais
Circuitos sequenciaisCircuitos sequenciais
Circuitos sequenciais
 

Destaque

Microcontroladores PIC - Interface com displays de 7 segmentos
Microcontroladores PIC - Interface com displays de 7 segmentosMicrocontroladores PIC - Interface com displays de 7 segmentos
Microcontroladores PIC - Interface com displays de 7 segmentos
Fabio Souza
 
Lógica de Programação - Fluxograma
Lógica de Programação - FluxogramaLógica de Programação - Fluxograma
Lógica de Programação - Fluxograma
Wesley R. Bezerra
 
Programando os Microcontroladores PIC
Programando os Microcontroladores PICProgramando os Microcontroladores PIC
Programando os Microcontroladores PIC
Fabio Souza
 
10 apostila microcontroladores
10  apostila microcontroladores10  apostila microcontroladores
10 apostila microcontroladores
Alyson Cavalcante
 
Ref site pic_bom
Ref site  pic_bomRef site  pic_bom
Ref site pic_bom
ultraman ultra
 
Exercicios LCD E ADC
Exercicios LCD E ADCExercicios LCD E ADC
Exercicios LCD E ADC
Fabio Souza
 
Microcontroladores PIC - Conversor A/D
Microcontroladores PIC - Conversor A/DMicrocontroladores PIC - Conversor A/D
Microcontroladores PIC - Conversor A/D
Fabio Souza
 
Curso mbed na KL25Z
Curso mbed na KL25ZCurso mbed na KL25Z
Curso mbed na KL25Z
Fabio Souza
 
Microcontroladores PIC - Introdução
Microcontroladores PIC - IntroduçãoMicrocontroladores PIC - Introdução
Microcontroladores PIC - IntroduçãoFabio Souza
 
Resumo linguagem c para microcontroladores PIC usando MikroC
Resumo linguagem c para microcontroladores PIC usando MikroCResumo linguagem c para microcontroladores PIC usando MikroC
Resumo linguagem c para microcontroladores PIC usando MikroC
Fabio Souza
 
Administração de Operações - ExercíCios Em Sala (Metodos De Definicao Para Lo...
Administração de Operações - ExercíCios Em Sala (Metodos De Definicao Para Lo...Administração de Operações - ExercíCios Em Sala (Metodos De Definicao Para Lo...
Administração de Operações - ExercíCios Em Sala (Metodos De Definicao Para Lo...
WeNova Consulting
 
Planejamento Tático de Produção
Planejamento Tático de ProduçãoPlanejamento Tático de Produção
Planejamento Tático de Produção
Daniel Camargos Frade
 
102773154 exercicios-de-fluxograma
102773154 exercicios-de-fluxograma102773154 exercicios-de-fluxograma
102773154 exercicios-de-fluxogramaMarcelo Ferreira
 
Apostila de automação com clp em linguagem ladder
Apostila de automação com clp em linguagem ladderApostila de automação com clp em linguagem ladder
Apostila de automação com clp em linguagem ladder
marv2
 
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Motores
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - MotoresMicrocontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Motores
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Motores
Fabio Souza
 
Microcontroladores PIC - Display LCD Alfanumérico
Microcontroladores PIC - Display LCD AlfanuméricoMicrocontroladores PIC - Display LCD Alfanumérico
Microcontroladores PIC - Display LCD AlfanuméricoFabio Souza
 
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - TPM - TIM...
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados -  TPM - TIM...Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados -  TPM - TIM...
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - TPM - TIM...
Fabio Souza
 
Curso de Tecnologia da Informação p/ PC-DF 2016
Curso de Tecnologia da Informação p/ PC-DF 2016Curso de Tecnologia da Informação p/ PC-DF 2016
Curso de Tecnologia da Informação p/ PC-DF 2016
Estratégia Concursos
 

Destaque (20)

Microcontroladores PIC - Interface com displays de 7 segmentos
Microcontroladores PIC - Interface com displays de 7 segmentosMicrocontroladores PIC - Interface com displays de 7 segmentos
Microcontroladores PIC - Interface com displays de 7 segmentos
 
Lógica de Programação - Fluxograma
Lógica de Programação - FluxogramaLógica de Programação - Fluxograma
Lógica de Programação - Fluxograma
 
Programando os Microcontroladores PIC
Programando os Microcontroladores PICProgramando os Microcontroladores PIC
Programando os Microcontroladores PIC
 
10 apostila microcontroladores
10  apostila microcontroladores10  apostila microcontroladores
10 apostila microcontroladores
 
Ref site pic_bom
Ref site  pic_bomRef site  pic_bom
Ref site pic_bom
 
Programando microcontroladores pic março
Programando microcontroladores pic marçoProgramando microcontroladores pic março
Programando microcontroladores pic março
 
Exercicios LCD E ADC
Exercicios LCD E ADCExercicios LCD E ADC
Exercicios LCD E ADC
 
Microcontroladores PIC - Conversor A/D
Microcontroladores PIC - Conversor A/DMicrocontroladores PIC - Conversor A/D
Microcontroladores PIC - Conversor A/D
 
Curso mbed na KL25Z
Curso mbed na KL25ZCurso mbed na KL25Z
Curso mbed na KL25Z
 
Microcontroladores PIC - Introdução
Microcontroladores PIC - IntroduçãoMicrocontroladores PIC - Introdução
Microcontroladores PIC - Introdução
 
Resumo linguagem c para microcontroladores PIC usando MikroC
Resumo linguagem c para microcontroladores PIC usando MikroCResumo linguagem c para microcontroladores PIC usando MikroC
Resumo linguagem c para microcontroladores PIC usando MikroC
 
Administração de Operações - ExercíCios Em Sala (Metodos De Definicao Para Lo...
Administração de Operações - ExercíCios Em Sala (Metodos De Definicao Para Lo...Administração de Operações - ExercíCios Em Sala (Metodos De Definicao Para Lo...
Administração de Operações - ExercíCios Em Sala (Metodos De Definicao Para Lo...
 
Planejamento Tático de Produção
Planejamento Tático de ProduçãoPlanejamento Tático de Produção
Planejamento Tático de Produção
 
Exercicios+de+ladder+2009
Exercicios+de+ladder+2009Exercicios+de+ladder+2009
Exercicios+de+ladder+2009
 
102773154 exercicios-de-fluxograma
102773154 exercicios-de-fluxograma102773154 exercicios-de-fluxograma
102773154 exercicios-de-fluxograma
 
Apostila de automação com clp em linguagem ladder
Apostila de automação com clp em linguagem ladderApostila de automação com clp em linguagem ladder
Apostila de automação com clp em linguagem ladder
 
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Motores
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - MotoresMicrocontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Motores
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Motores
 
Microcontroladores PIC - Display LCD Alfanumérico
Microcontroladores PIC - Display LCD AlfanuméricoMicrocontroladores PIC - Display LCD Alfanumérico
Microcontroladores PIC - Display LCD Alfanumérico
 
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - TPM - TIM...
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados -  TPM - TIM...Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados -  TPM - TIM...
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - TPM - TIM...
 
Curso de Tecnologia da Informação p/ PC-DF 2016
Curso de Tecnologia da Informação p/ PC-DF 2016Curso de Tecnologia da Informação p/ PC-DF 2016
Curso de Tecnologia da Informação p/ PC-DF 2016
 

Semelhante a U3 exercicios resolvidos

Clp ab avancado
Clp ab avancadoClp ab avancado
Clp ab avancado
Ricardo Akerman
 
Cartilha Micro-Controlador 80c51 - Assembly
Cartilha Micro-Controlador 80c51 - AssemblyCartilha Micro-Controlador 80c51 - Assembly
Cartilha Micro-Controlador 80c51 - Assembly
Pedro Raphael
 
AA Apresentacao_TIMER0_PIC16F877A_2016.pdf
AA Apresentacao_TIMER0_PIC16F877A_2016.pdfAA Apresentacao_TIMER0_PIC16F877A_2016.pdf
AA Apresentacao_TIMER0_PIC16F877A_2016.pdf
SilvanildoManoeldaSi
 
assembly.pdf
assembly.pdfassembly.pdf
assembly.pdf
DanielDias661447
 
Automação de Processos Industriais
Automação de Processos IndustriaisAutomação de Processos Industriais
Automação de Processos Industriais
Ricardo Akerman
 
APRESENTACAO_-_Aula_04_Linguagem_de_Programacao_Ladder.pdf
APRESENTACAO_-_Aula_04_Linguagem_de_Programacao_Ladder.pdfAPRESENTACAO_-_Aula_04_Linguagem_de_Programacao_Ladder.pdf
APRESENTACAO_-_Aula_04_Linguagem_de_Programacao_Ladder.pdf
AlbertoEmoto
 
Programação básica de microcontroladores
Programação básica de microcontroladoresProgramação básica de microcontroladores
Programação básica de microcontroladores
Danilo Morais Pagano
 
Microcontroladores: El microcontrolador 8051
Microcontroladores: El microcontrolador 8051 Microcontroladores: El microcontrolador 8051
Microcontroladores: El microcontrolador 8051
SANTIAGO PABLO ALBERTO
 
Pbl assembly avr como atmega328 p - rev.1
Pbl   assembly avr como atmega328 p - rev.1Pbl   assembly avr como atmega328 p - rev.1
Pbl assembly avr como atmega328 p - rev.1
andrademanoel
 
Apostila3 clp logo
Apostila3 clp logoApostila3 clp logo
Apostila3 clp logo
Marcio Miranda
 
Manual de programação introdutória
Manual de programação introdutóriaManual de programação introdutória
Manual de programação introdutória
Célio Sousa
 
First rela micro pro
First rela micro proFirst rela micro pro
First rela micro pro
Diogo Demarchi
 
Controladores logicos programavel industriais
Controladores logicos programavel industriaisControladores logicos programavel industriais
Controladores logicos programavel industriais
JoseMarcelodeAssisSa
 
Clp exercicio
Clp  exercicioClp  exercicio
Apostila plc - siemens step 7
Apostila   plc - siemens step 7Apostila   plc - siemens step 7
Apostila plc - siemens step 7Roberto Sousa
 
Introdução ao gpm(soft) clp metaltex
Introdução ao gpm(soft) clp metaltexIntrodução ao gpm(soft) clp metaltex
Introdução ao gpm(soft) clp metaltex
Israelsidepar
 
Apostila de comandos 8051
Apostila de comandos 8051Apostila de comandos 8051
Apostila de comandos 8051
Paulo Cerqueira
 
Microcontroladores pic ling c unicamp
Microcontroladores pic ling c unicampMicrocontroladores pic ling c unicamp
Microcontroladores pic ling c unicamp
Francisco Fambrini
 

Semelhante a U3 exercicios resolvidos (20)

Clp ab avancado
Clp ab avancadoClp ab avancado
Clp ab avancado
 
Cartilha Micro-Controlador 80c51 - Assembly
Cartilha Micro-Controlador 80c51 - AssemblyCartilha Micro-Controlador 80c51 - Assembly
Cartilha Micro-Controlador 80c51 - Assembly
 
8085 2
8085 28085 2
8085 2
 
AA Apresentacao_TIMER0_PIC16F877A_2016.pdf
AA Apresentacao_TIMER0_PIC16F877A_2016.pdfAA Apresentacao_TIMER0_PIC16F877A_2016.pdf
AA Apresentacao_TIMER0_PIC16F877A_2016.pdf
 
assembly.pdf
assembly.pdfassembly.pdf
assembly.pdf
 
Automação de Processos Industriais
Automação de Processos IndustriaisAutomação de Processos Industriais
Automação de Processos Industriais
 
APRESENTACAO_-_Aula_04_Linguagem_de_Programacao_Ladder.pdf
APRESENTACAO_-_Aula_04_Linguagem_de_Programacao_Ladder.pdfAPRESENTACAO_-_Aula_04_Linguagem_de_Programacao_Ladder.pdf
APRESENTACAO_-_Aula_04_Linguagem_de_Programacao_Ladder.pdf
 
Programação básica de microcontroladores
Programação básica de microcontroladoresProgramação básica de microcontroladores
Programação básica de microcontroladores
 
Microcontroladores: El microcontrolador 8051
Microcontroladores: El microcontrolador 8051 Microcontroladores: El microcontrolador 8051
Microcontroladores: El microcontrolador 8051
 
Pbl assembly avr como atmega328 p - rev.1
Pbl   assembly avr como atmega328 p - rev.1Pbl   assembly avr como atmega328 p - rev.1
Pbl assembly avr como atmega328 p - rev.1
 
Apostila3 clp logo
Apostila3 clp logoApostila3 clp logo
Apostila3 clp logo
 
Manual de programação introdutória
Manual de programação introdutóriaManual de programação introdutória
Manual de programação introdutória
 
First rela micro pro
First rela micro proFirst rela micro pro
First rela micro pro
 
Controladores logicos programavel industriais
Controladores logicos programavel industriaisControladores logicos programavel industriais
Controladores logicos programavel industriais
 
Clp exercicio
Clp  exercicioClp  exercicio
Clp exercicio
 
Apostila plc - siemens step 7
Apostila   plc - siemens step 7Apostila   plc - siemens step 7
Apostila plc - siemens step 7
 
Manual robotec
Manual robotecManual robotec
Manual robotec
 
Introdução ao gpm(soft) clp metaltex
Introdução ao gpm(soft) clp metaltexIntrodução ao gpm(soft) clp metaltex
Introdução ao gpm(soft) clp metaltex
 
Apostila de comandos 8051
Apostila de comandos 8051Apostila de comandos 8051
Apostila de comandos 8051
 
Microcontroladores pic ling c unicamp
Microcontroladores pic ling c unicampMicrocontroladores pic ling c unicamp
Microcontroladores pic ling c unicamp
 

U3 exercicios resolvidos

  • 1. SENAI – Curso Microcontroladores 8051 EXERCÍCIOS RESOLVIDOS Modos de endereçamento direto LABEL INSTR OPERANDO COMENTÁRIOS $include(REG51.inc) ; inclui no programa assembly o arquivo (REG51.inc) ORG 0000H ; o programa inicia na linha 0000H da EPROM MOV A,#01010101B ; carrego no ACC por binário o valor 01010101B ou 55h. MOV A,#HIGH (0FH) ; carrego A com a parte alta de uma variável de 16 bits, ou seja, carrego os 8 últimos bits MOV B,#LOW(0FH) ; carrego B com a parte baixa de uma variável de 16 bits, ; ou seja, carrego os 8 primeiros bits MOV B,#HIGH(65535 ; carrego B com a parte alta de uma variável de 16 bits, ou ; seja, carrego os 8 últimos bits de 65535)=FFH MOV A,#LOW(65535) ; carrego A com a parte baixa de uma variável de 16 bits, ; ou seja, carrego os 8 últimos bits de 65535)=FFH MOV A,#(255-250) ; carrego em A a diferença da operação 255-250 = 5 = 05H MOV A,#HIGH(255-240) ; carrego em A a parte alta da operação (15=0FH) que é ; 0FH MOV B,#LOW(255-240) ; carrego em B a parte baixa da operação (15=0FH), que é ; 0FH. MOV A,#'B' ; carrego em A o valor do código ASCII da letra B, que é ; 66 em decimal, ou 42H (em hexa) MOV A,#'C' ; carrego em A o valor do código ASCII da letra C, que é ; 67 em decimal ou 43H. MOV A,#0FFH ; carrego no acumulador A(ACC) o valor 11111111B MOV A,#00H ; carrego no acumulador A(ACC) o valor 00000000B MOV B,#0F0H ; carrego no registrador B o valor 11110000B MOV R0,#0F0H ; carrego no registrador R0 o valor 11110000B MOV A,#192 ; carrego no ACC, por decimal o valor 1000000B ou 0C0H SJMP $ ; o programa fica parado nesta instrução END Unidade 3 – Software do microcontrolador 8051 Exercícios resolvidos 1
  • 2. SENAI – Curso Microcontroladores 8051 Programa com uso do recurso label LABEL INSTR OPERANDO COMENTÁRIOS $include(REG51.inc) ; inclui no programa assembly o arquivo (REG51.inc) ORG 0000H ; programa começa no 0000H da Eprom (memória de ; programa) MOV A,#0FFH ; escrevo no acumulador (ACC) o valor 0FFH SALTO: DEC A ; decrementa A MOV P2,A ; carrego o valor de A para porta P2 SJMP SALTO ; salto para o endereço dado pelo nome (LABEL) “SALTO” END Programa com instrução que utiliza o registrador DPTR LABEL INSTR OPERANDO COMENTÁRIOS $include(REG51.inc) ; inclui no programa assembly o arquivo (REG51.inc) ORG 0000H ; inicia em 0000H INICIO: MOV DPTR,#0050H ; carrega o valor 0050h no registrador DPTR MOV A,#00H ; carrega o ACC com 00H JMP @A+DPTR ; o programa salta para o endereço de DPTR+@A = DPTR ORG 0050H ; inicia na posição 0050H MOV DPH,#00H ; nesta posição de memória de programa(0050h), escrevo ; a instrução para carregar o valor 0030h para o ; registrador DPTR por meio de DPH e DPL, isto é, por ; partes de 8 bits. MOV DPL,#30H JMP @A+DPTR ; salta para a posição de endereço 0030h ORG 0030H ; programa está agora na posição 0030h. LJMP INICIO ; “long jump” salta o programa para label inicio. END Unidade 3 – Software do microcontrolador 8051 Exercícios resolvidos 2
  • 3. SENAI – Curso Microcontroladores 8051 Programa com o uso de interrupcões LABEL INSTR OPERANDO COMENTÁRIOS $include(REG51.inc) ; inclui no programa assembly o arquivo (REG51.inc) SW3 EQU P3.2 ; SW3 igual a P3.2 ORG 0000H ; inicia em 0000H (reset) LJMP INICIO ; salta para rotina inicio ORG 0003H ; INT0 (EX0) – serviço de interrupção de INT0. LJMP INT_0 ORG 0100H ; inicia no end 0100H INICIO: MOV A,#00000001B ; move para acumulador o valor 00000001H CLR C ; zera a flag de carry MOV P2,A ; move o conteúdo de A para P2 SETB EX0 ; habilita a flag de interrupção INT0 SETB EA ; habilita todas as interrupções LJMP $ ; o programa fica parado nesta instrução ; rotina para atender a interrupção INT_0 INT_0: RLC A ; rodo o conteúdo do acumulador mais o carry à esquerda MOV P2,A ; move o conteúdo do acumulador para a porta P2 TECLA: JNB SW3,TECLA ; salto condicionalmente para o Label Tecla se o bit SW3 ; for nível lógico zero RETI ; retorno de interrupção END Unidade 3 – Software do microcontrolador 8051 Exercícios resolvidos 3
  • 4. SENAI – Curso Microcontroladores 8051 Experiência 01: pisca-pisca com led Objetivo Montar um circuito que consiste em acender e apagar um led continuamente, com o tempo de 1 segundo entre acender e apagar. É importante analisar o esquema elétrico para fazer um programa que seja compatível com o hardware desejado. Esquema elétrico Unidade 3 – Software do microcontrolador 8051 Exercícios resolvidos 4
  • 5. SENAI – Curso Microcontroladores 8051 Fluxograma Unidade 3 – Software do microcontrolador 8051 Exercícios resolvidos 5 início P2 = 0 apaga o led L1 sub-rotina de tempo 1 P2.0 = 1 acende o led L1 sub-rotina de tempo 1 P2.0 = 0 apaga o led L1 sub-rotina de tempo 1 início da sub- rotina Rotina de tempo de 1 Retorno da sub-rotina
  • 6. SENAI – Curso Microcontroladores 8051 Programa LABEL INSTR OPERANDO COMENTÁRIOS $include(REG51.inc) ; inclui no programa assembly o arquivo (REG51.inc) TEMPO EQU 19702 ; tempo de 50ms para cristal de 11 MHz ORG 0000H ; o programa começa na linha 0000h da EPROM ; (memória de programa). MOV P2,#00H ; escrevo na porta P2 o valor 00000000B ou 00H, ou ; seja, zero a porta P2 PRINCIPAL: LCALL TEMPO_1S ; chamo sub-rotina de tempo de 1 segundo SETB P2.0 ; liga o bit P2.0 da porta P2 LCALL TEMPO_1S ; chamo sub-rotina de tempo de 1 segundo CLR P2.0 ; desliga o bit P2.0 da porta P2 LCALL TEMPO_1S ; chamo sub-rotina de tempo de 1 segundo LJMP PRINCIPAL ; salta para o label principal ; rotina de tempo de 1 segundo, que utiliza o timer 0 do Microcontrolador 8051 TEMPO_1S: MOV R0,#20H ; carrega Reg. R0 com numero 20 em hexa CLR TR0 ; desliga timer 0 CONT: CLR TF0 ; reseta flag TF0 MOV TL0,#LOW(TEMPO) ; carrega parte baixa do timer 0 MOV TH0,#HIGH(TEMPO) ; carrega parte alta do timer 0 SETB TR0 ; liga timer 0 JNB TF0,$ ; espera o estouro do timer 0. CLR TR0 ; desliga timer 0 DJNZ R0,CONT ; decrementa e retorna se Reg. não‚ zero RET ; retorno da sub-rotina END ; fim do programa Unidade 3 – Software do microcontrolador 8051 Exercícios resolvidos 6
  • 7. SENAI – Curso Microcontroladores 8051 Experiência 02 – seqüencial com led Objetivo Montar um circuito que consiste em acender sequencialmente 8 leds, com o tempo de 1 segundo entre acender e apagar cada led. Há, também, dois botões com a função de determinar o sentido de rotação dos leds como segue abaixo. • Botão 1: quando acionado roda a seqüência de led para a esquerda. • Botão 2: quando acionado roda a seqüência de led para a direita. É importante analisar o esquema elétrico para fazer um programa que seja compatível com o hardware onde ele vai ser utilizado. Esquema elétrico Unidade 3 – Software do microcontrolador 8051 Exercícios resolvidos 7
  • 8. SENAI – Curso Microcontroladores 8051 Fluxograma Unidade 3 – Software do microcontrolador 8051 Exercícios resolvidos 8 início P2 = 0 apaga o led L1 sub-rotina de 1 Roda o conteúdo do Reg. A a direita A = 01H Valor que será rodado Botão P3.0 = 0? Botão P3.1 = 0? início da sub- rotina Rotina de tempo de 1 segundo Retorno da sub-rotina P2.0 = A Acende leds da porta P2 com conteúdo de A sub-rotina de 1 Roda o conteúdo do Reg. A a esquerda Sim Não Sim Não
  • 9. SENAI – Curso Microcontroladores 8051 Programa LABEL INSTR OPERANDO COMENTÁRIOS $include(REG51.inc) ; inclui no programa assembly o arquivo ; (REG51.inc) TEMPO EQU 19702 ; tempo de 50ms para cristal de 11 MHz ORG 0000H ;o programa começa na linha 0000H da EPROM ; (memória de programa). MOV P2,#00H ; zera a porta P2 ou seja apaga todos os leds MOV A,#01H ; carrega o acumulador com valor 01H DIREITA: JNB P3.0,ESQUERDA ; testa a porta P3.7 se for nível lógico 1, salta para o ; label ESQUERDA . MOV P2,A ; move para a porta P2 o conteúdo do acumulador LCALL TEMPO_1S ; chama sub-rotina tempo de um segundo RR A ; roda para direita o conteúdo do acumulador LJMP DIREITA ; salta para o label direita ESQUERDA: JNB P3.1,DIREITA ; testa a porta P3.6 se for nível lógico 1, salta para o ; label DIREITA . MOV P2,A ; move para a porta P2 o conteúdo do acumulador LCALL TEMPO_1S ; chama sub-rotina tempo de um segundo RL A ; roda para esquerda o conteúdo do acumulador JMP ESQUERDA ; salta para o label esquerda ; rotina de tempo de 1 segundo, que utiliza o timer 0 do Microcontrolador 8051 TEMPO_1S: MOV R0,#20H ; carrega Reg. R0 com numero 20 em hexa CLR TR0 ; desliga timer 0 CONT: CLR TF0 ; reseta flag TF0 MOV TL0,#LOW(TEMPO) ; carrega o TL0 (com a parte baixa de TEMPO = ; 4CF6H) = F6H MOV TH0,#HIGH(TEMPO) ; carrega o TH0 (com a parte alta de TEMPO = ; 4CF6H) = 4CH SETB TR0 ; liga timer 0 JNB TF0,$ ; espera o estouro do timer 0. CLR TR0 ; desliga timer 0 DJNZ R0,CONT ; decrementa e retorna se Reg. não‚ zero RET ; retorno da sub-rotina END ; fim do programa Unidade 3 – Software do microcontrolador 8051 Exercícios resolvidos 9
  • 10. SENAI – Curso Microcontroladores 8051 Programa com uso da instrução CPL Compile o programa no RIDE51 e simule no modo debug e com janelas Port 0 e Port 2 abertas e analise cada instrução do programa no modo passo a passo. LABEL INSTR OPERANDO COMENTÁRIOS $include(REG51.inc) ; inclui no programa assembly o arquivo ; (REG51.inc) ORG 0000H ; o programa começa na linha 0000H da EPROM ; (memória de programa). BOTAO: JB P0.0,BOTAO ; testa o botão e se for nível lógico zero, vai para ; próxima linha CPL P2.0 ; complementa a porta P2.0, ou seja inverte a ; condição anterior. Se P2.0 estiver com nível lógico ; 1 vai para nível lógico 0 JNB P0.0,BOTAO ; testa o botão e se for nível lógico um, vai para ; próxima linha LJMP BOTAO ; salto incondicional para o label botao END ; fim do programa Mapa da eprom (memoria de programa interna) do programa no formato intel hex :0B0000002080FDB2A03080FD02000057 :00000001F Unidade 3 – Software do microcontrolador 8051 Exercícios resolvidos 10