Microcontroladores - 8051
Transcript of Microcontroladores - 8051
-
7/26/2019 Microcontroladores - 8051
1/98
MicrocontroladoresMicrocontroladores
Prof. Dr. Ivo Reis Fontes
MICROCONTROLADORESHARDWARE & SOFTWARE
Microcontroladores - 8051
O que iremos aprender ?
Microcontrolador Single-chip Microcontrolador 8051
Programao em Assembly e C Interfaceando com o hardware externo Sistemas com computao embarcada
Microcomputadores como componentes
Funes especficas otimizadas (ex., impressora)
-
7/26/2019 Microcontroladores - 8051
2/98
Microcontroladores - 8051
O que um microcontrolador ?
MicroprocessadorMicroprocessador MicrocontroladorMicrocontrolador
Funo Single-chip CPU Single-chip -computador:CPU, ROM, RAM, timers,serial comm., etc.
Chips Pentium, PowerPC,etc.
8051, 6805, H8, ARM, etc.
Propsito Computao Geralex: PCs, Macs,workstations, etc.
Sistemas Embarcados, ex:video games, PDAs,peifricos, LEGO, eletro-eletrnicos de consumo,carros, etc.
Microcontroladores - 8051
Aspectos Internos do Microcontrolador!
-
7/26/2019 Microcontroladores - 8051
3/98
Microcontroladores - 8051
Por que estudar os microcontroladores?
O volume de -controladores vendidos >> do que o volume
de PCs baseados em -processadores
--controladores,controladores,--processadores embutidosprocessadores embutidos
~100%~100% PCs ePCs e
WorkstationsWorkstations
baseados embaseados em
--processorsprocessors>>1%>>1%
Microcontroladores - 8051
Quantos -Controladores existem em um PC?
Driver de HD Teclado Mouse Modem Placa Grfica Etc.
-
7/26/2019 Microcontroladores - 8051
4/98
Microcontroladores - 8051
controladorcontrolador
RAM ROMRAM ROM
Modem
ProcessadorProcessadorDSPDSP
RAM ROMRAM ROM
UUAARRTT
DAADAA
HHOOSSTT
PPCC
RJRJ--1111
Microcontroladores - 8051
LEGO Mindstorms
-
7/26/2019 Microcontroladores - 8051
5/98
Microcontroladores - 8051
LEGO Mindstorms
RCX
Microcontroladores - 8051
RCX Robot Control Explorer
Hitachi H8/300Hitachi H8/300
--controladorcontrolador 88--bitsbits CPU 3V 10MHzCPU 3V 10MHz 16KB ROM16KB ROM 512B RAM512B RAM 3 timers3 timers 88--canais A/D 10canais A/D 10--bitbit
comunicao serialcomunicao serial 51 pinos de I/O51 pinos de I/O interrupesinterrupes
-
7/26/2019 Microcontroladores - 8051
6/98
Microcontroladores - 8051
Eletrnica Embarcada: Tecnologia Atual!
Microcontroladores - 8051
VOLVO S80 18 ECUs
-
7/26/2019 Microcontroladores - 8051
7/98
Microcontroladores - 8051
VOLVO Engine-Control ECU
ProcessadorProcessadorde 8de 8--bitsbits
Microcontroladores - 8051
Livro Texto & Tpicos
The 8051 MicrocontrollerThe 8051 Microcontroller2.ed. (I. Scott Mackenzie, Prentice Hall)
Microcontrolador 8051 Programao em Linguagem Assembly Timer/counter Comunicao Serial Interrupes
Interface com o mundo real Programao em Linguagem C Aplicaes
-
7/26/2019 Microcontroladores - 8051
8/98
MicrocontroladoresMicrocontroladores
Prof. Dr. Ivo Reis Fontes
CAPTULO 1CAPTULO 1Os microcontroladores
Microcontroladores - 8051
Tpicos
Compara microprocessadores & microcontroladores Vantagens dos microcontroladores Sistemas embarcados Escolha de um microcontrolador Velocidade, encapsulamento, memria & custo/unidade Vrios membros da famlia do 8051 Vrios fabricantes de 8051
-
7/26/2019 Microcontroladores - 8051
9/98
Microcontroladores - 8051
Microcontroller vs. Microprocessors
CPUCPU
I/OI/O TimerTimer
RAMRAM ROMROM
PortaPortaSerialSerial
Microcontrolador
RAMRAM ROMROMPORTAPORTA
dedeI/OI/O
TIMERTIMERPORTAPORTASERIALSERIAL
CPUMicroprocessadoruso geral
Barramento de Dados
Barramento de Endereos
Microprocessador
Microcontroladores - 8051
Sistemas Computacionais Embarcados
Uso de um -processador ou -controlador pararealizar uma nica tarefa Impressora
PC usado para vrias aplicaes Processador de Texto, Servidor de impresso, ATM de
bancos, Vdeo game, Servidor de rede, Terminal de internet
PC contm ou se conecta com vrios produtos comprocessamento embutido
Teclado, Impressora, Modem, Controlador de disco, Placade som, Driver de CD-ROM, mouse, etc.
X86 PC e aplicaes em sistemas embarcados
-
7/26/2019 Microcontroladores - 8051
10/98
Microcontroladores - 8051
Produtos -controlados
Lar Eletrodomsticos, intercom, telefones, sistemas de segurana,
portes automticos de garagem, secretrias eletrnicas, fax,computadores domsticos, TVs, sintonizadores de TV a cabo,VCRs, camcorder, controles remotos, video games, telefnescelulares, instrumentos musicais, mquinas de costura, controles deiluminao, pagers, cameras, brinquedos, equipamentos decondicionamento fsico, etc.
Escritrio Telefones, computadores, sistemas de segurana, fax, fornos de
microondas, copiadoras, impressoras laser, impressoras coloridas,pagers, etc.
Automvel Computador de bordo, controle de motor, air bag, ABS,
instrumentao, sistema de segurana, controle de transmisso,som e video, controle de climatizao, telefone celular.
Microcontroladores - 8051
Escolhendo um -controlador
Caractersticas do computadorCaractersticas do computador Velocidade de processamento Dimenso Consumo de energia Memrias: RAM, ROM Pinos de I/O Timers Upgrade para melhorar desenpenho ou para verses de baixo consumo Custo, etc.
Ferramentas de Desenvolvimento de SoftwareFerramentas de Desenvolvimento de Software Assembler
Debugger Compilador C Emulator Suporte tcnico
Disponibilidade & FonteDisponibilidade & Fonte
-
7/26/2019 Microcontroladores - 8051
11/98
Microcontroladores - 8051
Empresas que esto produzindo o 8051
Empresa Site na Internet
Intel www.intel.com/design/mcs51
Atmel www.atmel.com
Philips/Signetics www.semiconductors.philips.com
Siemens www.sci.siemens.com
Dallas Semiconductor www.dalsemi.com
Microcontroladores - 8051
O 8051 por dentro
Introduzido pelaIntroduzido pelaIntel em 1981Intel em 1981
-
7/26/2019 Microcontroladores - 8051
12/98
Microcontroladores - 8051
O 8051 por fora
Microcontroladores - 8051
Famlia 8051
Comparao entre os membro da Famlia do 8051
Recursos 8051 8052 8031
ROM (memria de programa interna,em bytes)
4K 8k 0k
RAM (bytes) 128 256 128
Timers 2 3 2
Pinos de I/O 32 32 32
Porta Seriais (UART/USART) 1 1 1Fontes de Interrupo 6 8 6
-
7/26/2019 Microcontroladores - 8051
13/98
Microcontroladores - 8051
Vrios microcontroladores 8051
Microcontrolador 8751 UV-EPROM
AT89C51/2/3 da Atmel Corporation Flash (erase/write)
Os anes da Atmel Coroporation AT89C1051 (CHIP - 18 pinos) AT89C2051 (CHIP - 20 pinos)
DS5000 da Dallas Semiconductor NV-RAM (changed one byte at a time), RTC (real-time clock)
OTP (one-time-programmable) verso do 8051
Famlia 8051 da Philips A/D, D/A, I/O extendida, OTP e flash
MicrocontroladoresMicrocontroladores
Prof. Dr. Ivo Reis [email protected]
CAPTULO 2CAPTULO 2Programao em Linguagem Assembly do 8051
-
7/26/2019 Microcontroladores - 8051
14/98
Microcontroladores - 8051
Tpicos
Registros do 8051Registros do 8051 Os Bancos de RegistrosOs Bancos de Registros Espao de Memria RAMEspao de Memria RAM Mapa de Memria de ProgramaMapa de Memria de Programa Tipos de dadosTipos de dados A instruo MOVe e o movimento de dados utilizando os registrosA instruo MOVe e o movimento de dados utilizando os registros Um simples exemplo de cdigo em linguagem assemblyUm simples exemplo de cdigo em linguagem assembly Compilando e Executando o programaCompilando e Executando o programa Sequncia de eventos a partir do powerSequncia de eventos a partir do power--upup Exame do programa em cdigo binrioExame do programa em cdigo binrio Execuo das instruesExecuo das instrues
Registrador PSW (Program Status Word)Registrador PSW (Program Status Word) O StackO Stack
Microcontroladores - 8051
Organizao da RAM no 8051
RAMde usogeral
Bits
Endereveis
BANK 3
BANK 2
BANK 1
BANK 0
default
00H
07H08H0FH
10H
17H18H
1FH20H
2FH30H
7FH
80H
FFH
ESPECIA
LFUNCTIONREGISTERS
ESPECIA
LFUNCTIONREGISTERS 80H P0 90H P1P1
81H SP 98H SCONSCON
82H DPL 99H SBUFSBUF
83H DPH A0H P2P2
87H PCON A8H IEIE
88H TCON B0H P3P3
89H TMOD B8H IPIP
8AH TL0 D0H PSWPSW
8BH TL1 E0H ACCACC8CH TH0 F0H BB
8DH TH1
-
7/26/2019 Microcontroladores - 8051
15/98
Microcontroladores - 8051
Organizao da memria 8051
D7 D6 D5 D4 D3 D2 D1 D0
DPTRDPTR
PCPC PC (Ponteiro de ProgPonteiro de Prog)
DPH DPL
Registros 8Registros 8--bitsbits
Registros 16Registros 16--bitsbits
Posio: 8Posio: 8--bitsbits
R6R6
R5R5
R4R4
R3R3
R2R2
R1R1
R0R0
BB
ACCACC
R7R7
SPSP
PSWPSW
8-bits (ram interna) ()
CY AC F0 RS1 RS2 OVCY AC F0 RS1 RS2 OV -- PP
Registros 8Registros 8--bitsbits
4BANCOS
4BANCOS
07H default07H default
Microcontroladores - 8051
Memria de Programa Interna do 8051
8752AT89C52
DS5000-32FFFF
00000000
1FFF
8751AT89C51
0FFF
0000
byte byte byte
Espao de Endereamento da Memria de Programa do 8051
8031 (externa)8031 (externa)
-
7/26/2019 Microcontroladores - 8051
16/98
Microcontroladores - 8051
Notas de Programo
Um valor precedido de ## pode ser carregado diretamentenos registros ACC, B, ou R0-R7 MOV R5, #0F9HMOV R5, #0F9H
Se valor compreendidos entre 00H e 0FH so movidospara um registro 8-bits os demais bits sero assumidoscomo zeros MOV A, #5MOV A, #5
Um valor maior que a capacidade do registro gera um erro
MOV A, #7F2HMOV A, #7F2H
Microcontroladores - 8051
Diretivas & Tipos de Dados
ORG 500HORG 500HDATA1: DB 28DATA1: DB 28 ;DECIMAL (1C em Hex);DECIMAL (1C em Hex)DATA2: DB 00110101BDATA2: DB 00110101B ;BINARIO (35 em Hex);BINARIO (35 em Hex)DATA3: DB 39H ;DATA3: DB 39H ;HEXADECIMALHEXADECIMAL
ORG 510HORG 510HDATA4: DB 2591DATA4: DB 2591 ; NUMEROS ASCII; NUMEROS ASCII
ORG 518HORG 518HDATA6: DB My name is Ivo R. Fontes$DATA6: DB My name is Ivo R. Fontes$
;CHARACTERES ASCII;CHARACTERES ASCII
-
7/26/2019 Microcontroladores - 8051
17/98
Microcontroladores - 8051
A instruo MOV
MOV destino,origemMOV destino,origem ;copia origem para destino;copia origem para destino
MOV A,#55H ;carrega o valor 55H no ACCMOV R0,A ;copia o valor de ACC em R0
;(agora ACC=R0=55H)MOV R1,A ;copia o valor de ACC em R1
;(agora ACC=R0=R1=55H)MOV R2,A ;copia o valor de ACC em R2
;(agora ACC=R0=R1=R2=55H)MOV R3,#95H ;carrega o valor 95H em R3
;(agora R3=95H)MOV A,R3 ;copia o valor de R3 em ACC;agora ACC=R3=95H
Microcontroladores - 8051
A instruo ADD
ADD A, origemADD A, origem ;ADDiciona o valor do operando fonte;ADDiciona o valor do operando fonte;com o valor do ACC;com o valor do ACC;e coloca o resultado no ACC;e coloca o resultado no ACC
MOV A, #25H ;carrega 25H no ACCMOV R2,#34H ;carrega 34H em R2ADD A,R2 ;adiciona R2 com o acumulador
;(A = A + R2 A=59H)
-
7/26/2019 Microcontroladores - 8051
18/98
-
7/26/2019 Microcontroladores - 8051
19/98
Microcontroladores - 8051
Exemplo 1 Programao Assembly (cont.)
JMP SERIAL ;Rotina de interrupcao da Porta SerialJMP SERIAL ;Rotina de interrupcao da Porta Serial
DEFSEG TMR0,START=TIMER0,CLASS=CODEDEFSEG TMR0,START=TIMER0,CLASS=CODESEG TMR0SEG TMR0JMP TOINT ;Rotina de interrupcao do Timer 0JMP TOINT ;Rotina de interrupcao do Timer 0
DEFSEG MAINSEG,CLASS=CODE,START=100HDEFSEG MAINSEG,CLASS=CODE,START=100HSEG MAINSEGSEG MAINSEG
MAIN:MAIN:MOV A,#1FH ;Inicializa A com 31 (A=1FH)MOV A,#1FH ;Inicializa A com 31 (A=1FH)MOV R0,#F3H ;Guarda F3H em R0 (R0=F3H)MOV R0,#F3H ;Guarda F3H em R0 (R0=F3H)MOV P1,A ;Escreve contedo de A na porta A (P1=1FH)MOV P1,A ;Escreve contedo de A na porta A (P1=1FH)ADD A,R0 ;Soma A com R0 e guarda em A (A=12H)ADD A,R0 ;Soma A com R0 e guarda em A (A=12H)MOV P1,A ;Escreve a em P1 (P1=12H)MOV P1,A ;Escreve a em P1 (P1=12H)
JMP * ;Fica em Loop aqui!JMP * ;Fica em Loop aqui!SERIAL: ;Rotina de tratamento da Porta SerialSERIAL: ;Rotina de tratamento da Porta Serial
RETIRETI
Microcontroladores - 8051
Exemplo 1 Programao Assembly (cont.)
TOINT: ;Rotina de tratamento do Timer 0TOINT: ;Rotina de tratamento do Timer 0RETIRETIENDEND
COMPILANDO E LINKEDITANDO:COMPILANDO E LINKEDITANDO:
>AVMAC51 MECA1.ASM>AVMAC51 MECA1.ASM>AVLINK51 MECA1=MECA1>AVLINK51 MECA1=MECA1
-
7/26/2019 Microcontroladores - 8051
20/98
-
7/26/2019 Microcontroladores - 8051
21/98
-
7/26/2019 Microcontroladores - 8051
22/98
-
7/26/2019 Microcontroladores - 8051
23/98
-
7/26/2019 Microcontroladores - 8051
24/98
-
7/26/2019 Microcontroladores - 8051
25/98
Microcontroladores - 8051
AVSIM51 - AVOCET
AVSIM51AVSIM51 meca1.hex (sequncia de execuomeca1.hex (sequncia de execuo--44oo passopasso--F10F10))
Microcontroladores - 8051
AVSIM51 - AVOCET
AVSIM51AVSIM51 meca1.hex (sequncia de execuomeca1.hex (sequncia de execuo--55oo passopasso --F10F10))
-
7/26/2019 Microcontroladores - 8051
26/98
-
7/26/2019 Microcontroladores - 8051
27/98
Microcontroladores - 8051
AVSIM51 - AVOCET
AVSIM51AVSIM51 meca1.hex (sequncia de execuomeca1.hex (sequncia de execuo--88oo passopasso --F10F10))
Microcontroladores - 8051
PSW Register
CYCY ACAC F0F0 RS1RS1 RS0RS0 0V0V -- PP
CYCYACACF0F0
RS1RS1RS0RS0OVOV--PP
PSW.7PSW.7PSW.6PSW.6PSW.5PSW.5PSW.4PSW.4PSW.3PSW.3PSW.2PSW.2PSW.1PSW.1PSW.0PSW.0
Carry FlagCarry FlagAuxiliary Carry FlagAuxiliary Carry FlagAvailable to the user for GPAvailable to the user for GPRegister Bank selector bit 1Register Bank selector bit 1Register Bank selector bit 0Register Bank selector bit 0Overflow FlagOverflow FlagUser definable bitUser definable bitParity FlagParity Flag Set/Erased by HDSet/Erased by HD
RS1RS1 RS0RS0 Register BankRegister Bank AddressAddress00 00 00 00H00H--07H07H
00 11 11 08H08H--0FH0FH
11 00 22 10H10H--17H17H
11 11 33 18H18H--1FH1FH
-
7/26/2019 Microcontroladores - 8051
28/98
Microcontroladores - 8051
Instruo ADD & PSW
EXEMPLO 2.2EXEMPLO 2.2
Mostra o status das flags CY, AC e P aps a adio de 38 H eMostra o status das flags CY, AC e P aps a adio de 38 H e2FH nas seguintes instrues:2FH nas seguintes instrues:
ProgProg--Seg:Seg:MOV A,#38HADD A,#2FH ;aps a adio temos: A=67H e CY=0
OPERAO:OPERAO:38H 00111000
+2FH 00101111
67H 01100111
CY = 0CY = 0 visto que NO H carry alm do bit D7AC = 1AC = 1 visto que H carry do bit D3 para o bit D4P = 1P = 1 visto que o acumulador contm um nmero IMPAR de 1s.
Microcontroladores - 8051
Instruo ADD & PSW
EXEMPLO 2.3EXEMPLO 2.3
Mostra o status das flags CY, AC e P aps a adio de 9CH eMostra o status das flags CY, AC e P aps a adio de 9CH e64H nas seguintes instrues:64H nas seguintes instrues:
ProgProg--Seg:Seg:MOV A,#9CHADD A,#64H ;aps a adio temos: A=00H e CY=1
OPERAO:OPERAO:9CH 10011100
+64H 01100100100H 100000000
CY = 1CY = 1 visto que H carry alm do bit D7AC = 1AC = 1 visto que H carry do bit D3 para o bit D4P = 0P = 0 visto que o acumulador contm um nmero PAR de 1s.
-
7/26/2019 Microcontroladores - 8051
29/98
-
7/26/2019 Microcontroladores - 8051
30/98
-
7/26/2019 Microcontroladores - 8051
31/98
-
7/26/2019 Microcontroladores - 8051
32/98
Microcontroladores - 8051
EXEMPLO 2.10EXEMPLO 2.10
Este exemplo mostra como evitar conflito com o STACK e osEste exemplo mostra como evitar conflito com o STACK e osbancos de registrosbancos de registros
ProgProg--Seg:Seg:
MOV SP,#2FH ;inicializa comeo da pilha em 30HPUSH 0 ;1a operao no StackPUSH 1 ;2a operao no StackPUSH 2 ;3a operao no Stack
OPERAO: Observe que o STACKOPERAO: Observe que o STACK == registro do tipo LIFOregistro do tipo LIFO;1a operao no Stack Posio 30H30H da RAM = 99H99H e SP=30HSP=30H
;2a operao no Stack Posio 31H31H da RAM = 89H89H e SP=31HSP=31H;3a operao no Stack Posio 32H32H da RAM = 3FH3FH e SP=32HSP=32H
Evitando conflito com Stack & Bancos de Registro
MicrocontroladoresMicrocontroladores
Prof. Dr. Ivo Reis [email protected]
CAPTULO 3CAPTULO 3Conjunto de Instrues do 8051
-
7/26/2019 Microcontroladores - 8051
33/98
Microcontroladores - 8051
LEGENDALEGENDA
SMBOLOS: INTERPRETAO:SMBOLOS: INTERPRETAO: Substitudo por( )( ) Contedo de(( ))(( )) Dado apontado porrrrrrr Um dos oito registros 000=R0, 001=R1, ...dddddddddddddddd Bits de dadoaaaaaaaaaaaaaaaa Bits de enderobbbbbbbbbbbbbbbb Endereo de bitii Endereamento indireto usando R0 (i=0) ou R1 (i=1 ))eeeeeeeeeeeeeeee Endereo relativo de 8 bits
Simbologia
Microcontroladores - 8051
MODOS DE ENDEREAMENTOSMODOS DE ENDEREAMENTOS
REGISTERREGISTER
Descrio:Descrio:Um dos operandos o minemnico de um registroUm dos operandos o minemnico de um registro
EXEMPLOS:EXEMPLOS:ADD A,R7ADD A,R7MOV PSW,#00011000BMOV PSW,#00011000BINC DPTRINC DPTR
Endereamento
-
7/26/2019 Microcontroladores - 8051
34/98
-
7/26/2019 Microcontroladores - 8051
35/98
Microcontroladores - 8051
MODOS DE ENDEREAMENTOSMODOS DE ENDEREAMENTOS cont.cont.
IMEDIATOIMEDIATO
Descrio:Descrio:Neste modo de endereamento um dos operandos da instruo umNeste modo de endereamento um dos operandos da instruo umconstante de 8constante de 8--bits ou 16bits ou 16--bitsbits
EXEMPLOS:EXEMPLOS:MOV P1,#01H ;escreve no registro da porta 1 o valor 01HMOV P1,#01H ;escreve no registro da porta 1 o valor 01HMOV DPTR,#1000H ;inicializa o apontador DPTR com 1000HMOV DPTR,#1000H ;inicializa o apontador DPTR com 1000H
OBSERVAO:OBSERVAO:DPTR um apontador usado com a instruo MOVXDPTR um apontador usado com a instruo MOVX
Endereamento cont.
Microcontroladores - 8051
MODOS DE ENDEREAMENTOSMODOS DE ENDEREAMENTOS cont.cont.
RELATIVORELATIVO
Descrio:Descrio:Este modo de endereamento utilizado somente com algumasEste modo de endereamento utilizado somente com algumasinstrues de salto.instrues de salto.O endereamento relativo ou OFFSET um valor com sinal de 8O endereamento relativo ou OFFSET um valor com sinal de 8--bits que adicionado ao PC para formar o endereo da prximabits que adicionado ao PC para formar o endereo da prximainstruo a ser executada.instruo a ser executada.
EXEMPLO:EXEMPLO:SJMP THERE ;salta para a posio de memria de programaSJMP THERE ;salta para a posio de memria de programa
;indicada por THERE e cujo OFFSET em relao;indicada por THERE e cujo OFFSET em relao; posio atual da memria de programa + 2 ; posio atual da memria de programa + 2 ;no mximo 255;no mximo 255
Endereamento cont.
-
7/26/2019 Microcontroladores - 8051
36/98
-
7/26/2019 Microcontroladores - 8051
37/98
Microcontroladores - 8051
MODOS DE ENDEREAMENTOSMODOS DE ENDEREAMENTOS cont.cont.
INDEXEDINDEXED
Descrio:Descrio:Este modo de endereamento utilizado um registro BASE (que oEste modo de endereamento utilizado um registro BASE (que oapontador de dados DPTR) e um OFFSET contido no ACC paraapontador de dados DPTR) e um OFFSET contido no ACC paraformar o endereo efetivo para as instrues JMP e MOVCformar o endereo efetivo para as instrues JMP e MOVC
Observao:Observao:A instruo MOVC permite o acesso rea de cdigo de programaA instruo MOVC permite o acesso rea de cdigo de programa
EXEMPLO:EXEMPLO:JMP @A+DPTR ;salta para a posio de memria cujo endereoJMP @A+DPTR ;salta para a posio de memria cujo endereo
;efetivo composto pela soma do contedo do;efetivo composto pela soma do contedo do;ACC e do DPTR;ACC e do DPTR
Endereamento cont.
Microcontroladores - 8051
CONVENO PARA OS PARMETROS:CONVENO PARA OS PARMETROS:
Rn qualquer registro entre R0-R7direct endereo interno de 8-bits (00H-FFH)@Ri endereamento indireto usando R0 ou R1souce qualquer dos endereamentos [Rn, direto, @ri]dest qualquer dos endereamentos [Rn, direto, @ri]#data constante 8-bits#data 16 constate 16-bitsbit endereo de bit 8-bits
rel offset com sinal 8-bitsaddr11 endereo 11-bits da pgina de memria correnteaddr16 endereo 16-bits de qualquer posio de memrian,n,mm Nmero de Ciclos de Mquina(nn), Nmero de bytes(mm)
aaaaaaaaaaaaaaaa 8-bits de endereo
dddddddddddddddd 8-bits de dado
Instrues por Categoria
-
7/26/2019 Microcontroladores - 8051
38/98
Microcontroladores - 8051
INSTRUES ARITMTICASINSTRUES ARITMTICAS
So as instrues que permitem realizar operaes aritmticas entreSo as instrues que permitem realizar operaes aritmticas entreoo operandosoperandos
ADDnn,,mm A, ;soma A com source/data e pe resultado em AADD11,,11 A,Rn 00101rrr00101rrrADD11,,22 A,direct 0010010100100101 aaaaaaaaaaaaaaaaADD11,,11 A,@Ri 0010011i0010011iADD11,,22 A,#data 0010010000100100 dddddddddddddddd
ADDCnn,,mm A, ;soma incluindo o valor da CYADDC11,,11 A,Rn 00110rrr00110rrrADDC11,,22 A,direct 0011010100110101 aaaaaaaaaaaaaaaaADDC11,,11 A,@Ri 0011011i0011011iADDC11,,22 A,#data 0011010000110100 dddddddddddddddd
Instrues por Categoria
Microcontroladores - 8051
Instrues por Categoria
SUBBnn,,mm A, ;subtrai source/data de A, pe resultado em ASUBB1,1,11 A,Rn 10011rrr10011rrrSUBB1,1,22 A,direct 1001010110010101 aaaaaaaaaaaaaaaaSUBB1,1,11 A,@Ri 1001011i1001011iSUBB1,1,22 A,#data 1001010010010100 dddddddddddddddd
INCnn,,mm ;incrementa A/sourceINC1,1,11 A 0001010000010100INC1,1,11 Rn 00011rrr00011rrrINC1,1,22 direct 0001010100010101 aaaaaaaaaaaaaaaaINC1,1,11 @Ri 0001011i0001011iINC2,2,11 DPTR 1010001110100011
OBS: No h a operao de decremento imediato de DPTROBS: No h a operao de decremento imediato de DPTRDECnn,,mm ;decrementa A/sourceDEC1,1,11 A 0001010000010100DEC1,1,11 Rn 00011rrr00011rrrDEC1,1,22 direct 0001010100010101 aaaaaaaaaaaaaaaaDEC1,1,11 @Ri 00010110001011
-
7/26/2019 Microcontroladores - 8051
39/98
-
7/26/2019 Microcontroladores - 8051
40/98
Microcontroladores - 8051
INSTRUES ARITMTICASINSTRUES ARITMTICAS cont.cont.
RL11,1,1 A ;roda ACC para a esquerda 1 bit e coloca 0 em A.D0
0010001100100011
RR1,1,11 A ;roda ACC para a direita 1 bit e coloca 0 em A.D7
0000001100000011
RLC11,1,1 A ;roda ACC para a esquerda 1 bit e coloca CY em A.D0;e A.D7 em CY
0011001100110011
RRC11,1,1 A ;roda ACC para a direita 1 bit e coloca CY em A.D0;e A.D0 em CY
0001001100010011
SWAP1,1,11 A ;troca a posio dos NIBLES em A
1100010011000100
Instrues por Categoria
Microcontroladores - 8051
INSTRUES LGICASINSTRUES LGICAS
ANLnn,,mm , ;AND lgico, resultado em AANL1,1,11 A,Rn 01011rrr01011rrrANL1,1,22 A,direct 0101010101010101 aaaaaaaaaaaaaaaaANL1,1,11 A,@Ri 0101011i0101011iANL1,1,22 A,#data 0101010001010100 ddddddddddddddddANL1,1,22 direct,A 0101001001010010 aaaaaaaaaaaaaaaaANL2,2,33 direct,#data 0101001101010011 aaaaaaaaaaaaaaaa dddddddddddddddd
ANLnn,,mm C, ;AND lgico, variveis tipo bit
ANL2,2,22 C,bit 1000001010000010 bbbbbbbbbbbbbbbbANL2,2,22 C,/bit 1011000010110000 bbbbbbbbbbbbbbbb
Instrues por Categoria
-
7/26/2019 Microcontroladores - 8051
41/98
-
7/26/2019 Microcontroladores - 8051
42/98
-
7/26/2019 Microcontroladores - 8051
43/98
Microcontroladores - 8051
Instrues por Categoria
RETORNO DE SUBROTINARETORNO DE SUBROTINARET2,2,11 ;Retorna de uma subrotina. recupera ponteiro daprxima instruo da pilha e decrementa ponteiro de pilha de 2
0010001000100010
RETORNO DE ISR (INTERRUPT SERVICE ROUTINE)RETORNO DE ISR (INTERRUPT SERVICE ROUTINE)
RETI2,2,11 ;Retorna de uma rotina de tratamento de interrupo,recupera ponteiro da prxima instruo da pilha e decrementaponteiro de pilha de 2
0011001000110010
OPERAO DE ATRASOOPERAO DE ATRASO
NOP1,1,11 ;Introduz um atraso de 1 ciclo de mquina0000000000000000
Microcontroladores - 8051
INSTRUES DE MOVIMENTAO DE DADOSINSTRUES DE MOVIMENTAO DE DADOSMOV n,n,mm , ;Transfere byteMOV1,1,11 A,Rn 11101rrr11101rrrMOV1,1,22 A,direct 1110010111100101 aaaaaaaaaaaaaaaaMOV1,1,11 A,@Ri 1110011i1110011iMOV1,1,22 A,#data 0111010001110100 ddddddddddddddddMOV1,1,11 Rn,A 11111rrr11111rrrMOV2,2,11 Rn,direct 10101rrr10101rrr aaaaaaaaaaaaaaaaMOV1,1,22 Rn,#data 01111rrr01111rrr ddddddddddddddddMOV1,1,22 direct,A 1111010111110101 aaaaaaaaaaaaaaaaMOV2,2,22 direct,Rn 10001rrr10001rrr aaaaaaaaaaaaaaaa
MOV2,2,33 direct,direct 1000010110000101 aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaMOV2,2,22 direct,@R i 1000011i1000011i aaaaaaaaaaaaaaaaMOV2,2,33 direct,#data 0111010101110101 aaaaaaaaaaaaaaaa ddddddddddddddddMOV1,1,11 @Ri,A 1111011i1111011iMOV2,2,22 @Ri,direct 1010011i1010011i aaaaaaaaaaaaaaaaMOV1,1,22 @Ri,#data 0111011i0111011i dddddddddddddddd
Instrues por Categoria
-
7/26/2019 Microcontroladores - 8051
44/98
Microcontroladores - 8051
INSTRUES DE MOVIMENTAO DE DADOSINSTRUES DE MOVIMENTAO DE DADOS cont.cont.
MOV2,2,33 DPTR,#data16 ;carrega DPTR com o valor data161001000010010000 dddddddddddddddd dddddddddddddddd
MOVC2,2,11 A,@A+DPTR ;carrega A com o conteda de memria de; programa apontada por DPTR e OFFSET; em A 1001001110010011
MOVC2,2,11 A,@A+PC ;carrega A com o conteda de memria de; programa apontada por PC e OFFSET em;A 1000001110000011
MOVX2,2,11 A,@Ri ;carrega A com o contedo da RAM apontada por Ri1110001i1110001i
MOVX2,2,11 A,@DPTR ;carrega A com o contedo da memria de dados;apontada por DPTR 1110000011100000
MOVX2,2,11 @Ri,A ;carrega a posio de RAM apontada por Ri com o;valor contido em A 1111001111110011
MOVX2,2,11 @DPTR,A ;transfere para a memria de dados apontada por;DPTR o valor contido em A 1111000011110000
Instrues por Categoria
Microcontroladores - 8051
INSTRUES DE MOVIMENTAO DE DADOSINSTRUES DE MOVIMENTAO DE DADOS cont.cont.MOV n,n,mm , ;Transfere bitMOV1,1,22 C,bit 1010001010100010 bbbbbbbbbbbbbbbbMOV2,2,22 bit,C 1001001010010010 bbbbbbbbbbbbbbbb
INSTRUES BOOLEANAS COM BIT PARA SALTOINSTRUES BOOLEANAS COM BIT PARA SALTO
JC2,2,22 rel ;salta se CY=1 0100000001000000 eeeeeeeeeeeeeeeeJNC2,2,22 rel ;salta se C=0 0101000001010000 eeeeeeeeeeeeeeeeJB2,2,33 bit,rel ;salta se bit=1 0010000000100000 bbbbbbbbbbbbbbbb eeeeeeeeeeeeeeeeJNB2,2,33 bit,rel ;salta se bit=0 0011000000110000 bbbbbbbbbbbbbbbb eeeeeeeeeeeeeeeeJBC2,2,22 bit,rel ;salta se bit=1 e faz bit=0 0101000001010000 eeeeeeeeeeeeeeee
INSTRUES BOOLEANAS COM ACUMULADOR PARA SALTOINSTRUES BOOLEANAS COM ACUMULADOR PARA SALTO
JNZ2,2,22 rel ;salta se ACC diferente de Zero 0111000001110000 eeeeeeeeeeeeeeeeJZ2,2,22 rel ;salta se ACC igual a Zero 0110000001100000 eeeeeeeeeeeeeeee
Instrues por Categoria
-
7/26/2019 Microcontroladores - 8051
45/98
Microcontroladores - 8051
INSTRUES DE SALTOSINSTRUES DE SALTOS
ACALL2,2,22 addr11 ;chama subrotina aaa10001aaa10001 aaaaaaaaaaaaaaaaLCALL2,2,33 addr16 ;chama subrotina 0001001000010010 aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaAJMP2,2,22 addr11 ;salto incondicional dentro do banco de 2K
aaa00001aaa00001 aaaaaaaaaaaaaaaa
LJMP2,2,33 addr16 ;salto incondicional para qualquer posio
0001001000010010 aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa
SJMP2,2,22 rel ;salto incondicional com endereamento relativo
1000000010000000 eeeeeeeeeeeeeeee
JMP2,2,11 @A+DPTR ; salto incondicional com destino indexado
0111001101110011
Instrues por Categoria
Microcontroladores - 8051
INSTRUES DE SALTOSINSTRUES DE SALTOS cont.cont.
CJNE2,2,33 A,direct,rel ;compara e salta se no for igual
1011010110110101 aaaaaaaaaaaaaaaa eeeeeeeeeeeeeeee
CJNE2,2,33 A,#data,rel ;compra imediato e salta se no for igual
1011010010110100 dddddddddddddddd eeeeeeeeeeeeeeee
CJNE2,2,33 Rn,#data,rel ;compara direto e salta se no for igual
10111rrr10111rrr dddddddddddddddd eeeeeeeeeeeeeeee
CJNE2,2,33 @Ri,#data,rel ;compara indexado e salta se no for igual
1011011i1011011i eeeeeeeeeeeeeeee
DJNZ2,2,22 Rn,rel ;decrementa registro e salta se no zerar11011rrr11011rrr eeeeeeeeeeeeeeee
DJNZ2,2,33 direct,rel ;decrementa direto e salta se no zerar
1101010111010101 aaaaaaaaaaaaaaaa eeeeeeeeeeeeeeee
Instrues por Categoria
-
7/26/2019 Microcontroladores - 8051
46/98
Microcontroladores - 8051
Temporizao
TIME DELAYTIME DELAYTEMPOS NO 8051TEMPOS NO 8051
TTinstruoinstruo = n Ciclos de Mquina= n Ciclos de MquinaCiclo de Mquina (MC) =Ciclo de Mquina (MC) = TTclockclock
Exemplo 3.1Exemplo 3.1Considerando 3 casos de frequncia de cristal iremos calcular oConsiderando 3 casos de frequncia de cristal iremos calcular operodo de cada ciclo de mquina (MC) para o 8051perodo de cada ciclo de mquina (MC) para o 8051
a) 11,0592 MHz b) 16 MHz c) 20 MHza) 11,0592 MHz b) 16 MHz c) 20 MHz
Soluo:Soluo:
a)a) 11,0592 MHz/12 = 921.6 kHz ;MC = 1/921,6 kHz = 1,08511,0592 MHz/12 = 921.6 kHz ;MC = 1/921,6 kHz = 1,085 ssb) 16 MHz/12 = 1.333 MHz ;MC = 1/1.333 MHz = 0,75b) 16 MHz/12 = 1.333 MHz ;MC = 1/1.333 MHz = 0,75 ssc) 20 MHz/12 = 1,66 MHz ;MC = 1/1,66 MHz = 0,60c) 20 MHz/12 = 1,66 MHz ;MC = 1/1,66 MHz = 0,60 ss
Microcontroladores - 8051
Temporizao
TIME DE EXECUO DE INSTRUESTIME DE EXECUO DE INSTRUES
Exemplo 3.2Exemplo 3.2Considerando um 8051 com cristal de 11,0592 MHz determine o tempoConsiderando um 8051 com cristal de 11,0592 MHz determine o tempopara gasto para executar as seguintes instrues:para gasto para executar as seguintes instrues:
INSTRUES: SOLUO:INSTRUES: SOLUO:
a)a) MOV R3,#55H (1 MC) 1,085MOV R3,#55H (1 MC) 1,085 ssb)b) DEC R3 (1 MC) 1,085DEC R3 (1 MC) 1,085 ssc)c) DJNZ R2,target (2 MC) 2,17DJNZ R2,target (2 MC) 2,17 ss
d)d) LJMP THERE_FAR (2 MC) 2,17LJMP THERE_FAR (2 MC) 2,17 sse)e) SJMP THERE_NEAR (2 MC) 2,17SJMP THERE_NEAR (2 MC) 2,17 ssf)f) NOP (1 MC) 1,085NOP (1 MC) 1,085 ssg)g) MUL AB (4 MC) 4,34MUL AB (4 MC) 4,34 ss
-
7/26/2019 Microcontroladores - 8051
47/98
Microcontroladores - 8051
Temporizao
CLCULO DE DELAYCLCULO DE DELAY
Exemplo 3.3Exemplo 3.3Determine o tempo de delay para o programa abaixo considerando queDetermine o tempo de delay para o programa abaixo considerando queo cristal utilizado com o 8051 tem frequncia de 11,0592 MHzo cristal utilizado com o 8051 tem frequncia de 11,0592 MHz
MOV A,#55HMOV A,#55HAGAIN:AGAIN:
MOV P1,AMOV P1,ACALL DELAY ;MC de durao = 404 (Verifique!!!)CALL DELAY ;MC de durao = 404 (Verifique!!!)CPL ACPL ASJMP AGAINSJMP AGAIN
;;----------------------Time DelayTime Delay----------------------------
DELAY: ;MC para a subrotina = 402 (Verifique!!!)DELAY: ;MC para a subrotina = 402 (Verifique!!!)MOV R3,#200MOV R3,#200HERE: DJNZ R3,HEREHERE: DJNZ R3,HERE
RETRET
Microcontroladores - 8051
Temporizao
CLCULO DE DELAYCLCULO DE DELAY
Exemplo 3.4Exemplo 3.4Repetir o exemplo anterior, considerando agora a incluso de algumasRepetir o exemplo anterior, considerando agora a incluso de algumasinstrues NOP para aumentar o atrasoinstrues NOP para aumentar o atraso
MOV A,#55HMOV A,#55HAGAIN:AGAIN:
MOV P1,AMOV P1,ACALL DELAY ;MC de durao = 404 (Verifique!!!)CALL DELAY ;MC de durao = 404 (Verifique!!!)CPL ACPL ASJMP AGAINSJMP AGAIN
;;----------------------Time DelayTime Delay----------------------------DELAY: ;MC para a subrotina = 402 (Verifique!!!)DELAY: ;MC para a subrotina = 402 (Verifique!!!)
MOV R3,#200MOV R3,#200HERE: NOPHERE: NOP
DJNZ R3,HEREDJNZ R3,HERERETRET
-
7/26/2019 Microcontroladores - 8051
48/98
Microcontroladores - 8051
Temporizao
CLCULO DE DELAYCLCULO DE DELAY
Exemplo 3.5Exemplo 3.5Usando LOOPs embutidos para aumentar o atrasoUsando LOOPs embutidos para aumentar o atraso
MOV A,#55HMOV A,#55HAGAIN: MOV P1,AAGAIN: MOV P1,A
CALL DELAYCALL DELAYCPL ACPL ASJMP AGAINSJMP AGAIN
;;----------------------Time DelayTime Delay----------------------------DELAY: ;agora temos um delay_zao!!! (:DELAY: ;agora temos um delay_zao!!! (:--
MOV R2,#200MOV R2,#200HERE1: MOV R3,#10HERE1: MOV R3,#10
HERE2: DJNZ R3,HERE2HERE2: DJNZ R3,HERE2DJNZ R2,HERE1DJNZ R2,HERE1RETRET
Que tal calcular o tempo de durao deste delay?!!!Que tal calcular o tempo de durao deste delay?!!!
MicrocontroladoresMicrocontroladores
Prof. Dr. Ivo Reis [email protected]
CAPTULO 4CAPTULO 48051 - Hardware externo necessrio
-
7/26/2019 Microcontroladores - 8051
49/98
-
7/26/2019 Microcontroladores - 8051
50/98
-
7/26/2019 Microcontroladores - 8051
51/98
Microcontroladores - 8051
RAM Externa
D Q
G
WWR
P2.0 (A8)
ALE
P0 D0-D7
A0-A7
A9
8051
RAM
1K
EA
74LS3373
P2.1 (A9)
RD OE
CS
A8
Microcontroladores - 8051
Configurao dos pinos das Portas
BARRAMENTO INTERNO DO 8051
Q
QSET
CLR
D
P?
READLATCH
READPIN
WRITELATCH
INTERNALPULL-UP
Vcc
P0 no tem o resistor dePULL-UP (open-drain)
-
7/26/2019 Microcontroladores - 8051
52/98
Microcontroladores - 8051
Port 0: I/O, Coletor Aberto
Esta porta inicialmente configurada como porta de sadaEsta porta inicialmente configurada como porta de sadaPara operao como porta de sada necessita de resitores de PULLPara operao como porta de sada necessita de resitores de PULL--UPUP
P0.0-P0.7AD0-AD7
39-32
8051/8031Vcc Vcc Vcc Vcc Vcc Vcc Vcc Vcc
D0 D1 D2 D3 D4 D5 D6 D7
Microcontroladores - 8051
Port 0 como Entrada
P0 tem duplo papel:P0 tem duplo papel:
-- Porta de I/OPorta de I/O
-- Barramento AD0Barramento AD0--AD7 (MULTIPLEXADO)AD7 (MULTIPLEXADO)
Segmento de Programa:Segmento de Programa:
MOV A,#0FFH ;A = FF hex
MOV P0,A ;faz com que P0 seja porta de
;entrada, escrevendo todos bits
;iguais a 1
BACK: MOV A,P0 ;l dado de P0
MOV P1,A ;envia para P1
SJMP BACK ;continua fazendo a mesma coisa
-
7/26/2019 Microcontroladores - 8051
53/98
-
7/26/2019 Microcontroladores - 8051
54/98
-
7/26/2019 Microcontroladores - 8051
55/98
Microcontroladores - 8051
Exemplo de Programao com Portas
EXEMPLO 4.1EXEMPLO 4.1Considerando o hardware abaixo, escrever (compilar e linkeditar) um programaConsiderando o hardware abaixo, escrever (compilar e linkeditar) um programaque faa o seguinte:que faa o seguinte:
Usando os LEDs como contador binrio de 3 bits, mostrar o nmero de vezesUsando os LEDs como contador binrio de 3 bits, mostrar o nmero de vezesque a chave SW2 acionada.que a chave SW2 acionada.
Microcontroladores - 8051
11aa SoluoSoluo Inicialmente apresentaInicialmente apresenta--se uma soluo simples, que nose uma soluo simples, que noleva em considerao o bauncing que possa ocorrer ao seleva em considerao o bauncing que possa ocorrer ao sepressionar/soltar a chave.pressionar/soltar a chave.
;CHAVE1.ASM;CHAVE1.ASM;;SW2SW2 EQUEQU P1.3P1.3;;DEFSEG PROG, CLASS=CODE, START=0DEFSEG PROG, CLASS=CODE, START=0
SEG PROGSEG PROGORG RESETORG RESET
INICINIC CLR ACLR A ;ZERAR CONTADOR;ZERAR CONTADORMOV P1,AMOV P1,A ;APAGAR LEDS;APAGAR LEDSSETB SW2SETB SW2 ;PROGRAMAR P1.3 COMO ENTRADA;PROGRAMAR P1.3 COMO ENTRADA
AQUI1AQUI1 JB SW2,AQUI1JB SW2,AQUI1 ;AGUARDAR ACIONAMENTO;AGUARDAR ACIONAMENTOINC AINC AMOV P1,AMOV P1,A ;DAR SADA AO CONTADOR;DAR SADA AO CONTADORSETB SW2SETB SW2 ;GARANTIR P1.3 COMO ENTRADA;GARANTIR P1.3 COMO ENTRADA
AQUI2AQUI2 JNB SW2,AQUI2JNB SW2,AQUI2 ;AGUARDAR LIBERAR CHAVE;AGUARDAR LIBERAR CHAVESJMP AQUI1SJMP AQUI1ENDEND
Exemplo de Programao com Portas
-
7/26/2019 Microcontroladores - 8051
56/98
Microcontroladores - 8051
22aa SoluoSoluo
Esta soluo, um pouco mais evoluida, considera o bauncing que possaEsta soluo, um pouco mais evoluida, considera o bauncing que possaocorrer ao se pressionar/soltar a chave, empregando uma rotina de retardo.ocorrer ao se pressionar/soltar a chave, empregando uma rotina de retardo.
;CHAVE2.ASM;CHAVE2.ASM;;; NESTE PROGRAMA SE PRETENDE ELIMINAR O BOUNCING COM; NESTE PROGRAMA SE PRETENDE ELIMINAR O BOUNCING COMRETARDOS ; O VALOR DO RETARDO PARTICULAR PARA CADA CIRCUITORETARDOS ; O VALOR DO RETARDO PARTICULAR PARA CADA CIRCUITO(DEPENDE ; DO TAMANHO DOS CABOS, QUALIDADE DA CHAVE, ETC)(DEPENDE ; DO TAMANHO DOS CABOS, QUALIDADE DA CHAVE, ETC)RECOMENDARECOMENDA--SE: ; DETERMINAR EMPIRICAMENTE O MELHOR RETARDOSE: ; DETERMINAR EMPIRICAMENTE O MELHOR RETARDOPARA CADAPARA CADA; CIRCUITO; CIRCUITO;;RTDRTD EQUEQU 500500 ;RTD>256;RTD>256SW2SW2 EQUEQU P1.3P1.3;;
DEFSEG PROG, CLASS=CODE, START=0DEFSEG PROG, CLASS=CODE, START=0SEG PROGSEG PROGORG RESETORG RESET
INICINIC CLR ACLR A ;ZERAR CONTADOR;ZERAR CONTADOR
Exemplo de Programao com Portas
Microcontroladores - 8051
22aa SoluoSoluo CONT.CONT.MOV P1,AMOV P1,A ;APAGAR LEDS;APAGAR LEDSSETB SW2SETB SW2 ;PROGRAMAR P1.3 COMO ENTRADA;PROGRAMAR P1.3 COMO ENTRADA
AQUI1AQUI1 JB SW2,AQUI1JB SW2,AQUI1 ;AGUARDAR ACIONAMENTO;AGUARDAR ACIONAMENTOINC AINC AMOV P1,AMOV P1,A ;DAR SADA AO CONTADOR;DAR SADA AO CONTADORSETB SW2SETB SW2 ;GARANTIR P1.3 COMO ENTRADA;GARANTIR P1.3 COMO ENTRADAACALL RTDACALL RTD ;ELIMINAR BOUNCING;ELIMINAR BOUNCING
AQUI2AQUI2 JNB SW2,AQUI2JNB SW2,AQUI2 ;AGUARDAR LIBERAR CHAVE;AGUARDAR LIBERAR CHAVEACALL RTDACALL RTD ;ELIMINAR BOUNCING;ELIMINAR BOUNCINGSJMP AQUI1SJMP AQUI1
;;;ROTINA PARA GERAR UM RETARDO;ROTINA PARA GERAR UM RETARDO
RETARDRETARDMOV R7,# HIGH RTDMOV R7,# HIGH RTD
L1L1 MOV R6,# LOW RTDMOV R6,# LOW RTDL2L2 DJNZ R6,L2DJNZ R6,L2
DJNZ R7,L1DJNZ R7,L1RETRETENDEND
Exemplo de Programao com Portas
-
7/26/2019 Microcontroladores - 8051
57/98
Microcontroladores - 8051
33aa SoluoSoluo
Esta soluo, mais eficiente, considera o bauncing que pose ocorror ao seEsta soluo, mais eficiente, considera o bauncing que pose ocorror ao sepressionar/soltar a chave, empregando subrotina para as duas transio dapressionar/soltar a chave, empregando subrotina para as duas transio dachavechave ee ..
;CHAVE3.ASM;CHAVE3.ASM;;; SOLUCAO MAIS EFICIENTE PARA ELIMINAR O BOUNCING COM; SOLUCAO MAIS EFICIENTE PARA ELIMINAR O BOUNCING COMRETARDOSRETARDOS; USAM; USAM--SE ROTINAS QUE AGUARDAM A ESTABILIZACAO DA CHAVESE ROTINAS QUE AGUARDAM A ESTABILIZACAO DA CHAVE; HA UMA PARA AS TRANSIES DE 0 PARA 1 E OUTRA DE 1 PARA 0; HA UMA PARA AS TRANSIES DE 0 PARA 1 E OUTRA DE 1 PARA 0; ESTA TECNICA SE ADAPTA MELHOR AS VARIACOES ENTRE OS; ESTA TECNICA SE ADAPTA MELHOR AS VARIACOES ENTRE OSCIRCUITOSCIRCUITOS;;RTDRTD EQUEQU 100100
SW2SW2 EQUEQU P1.3P1.3;;DEFSEG PROG, CLASS=CODE, START=0DEFSEG PROG, CLASS=CODE, START=0SEG PROGSEG PROGORG RESETORG RESET
INICINIC CLR ACLR A ;ZERAR CONTADOR;ZERAR CONTADOR
Exemplo de Programao com Portas
Microcontroladores - 8051
33aa SoluoSoluo CONT.CONT.SETB SPW12, ASETB SPW12, A ;PROGRAMA P1.3 COMO ENTRADA;PROGRAMA P1.3 COMO ENTRADA
AQUIAQUI ACALL RBT_1_0 ;TRANSICAO LIMPA DE 1 PARA 0ACALL RBT_1_0 ;TRANSICAO LIMPA DE 1 PARA 0INC AINC AMOV P1,AMOV P1,A ;DAR SADA AO CONTADOR;DAR SADA AO CONTADOR
ACALLACALL RBT_0_1RBT_0_1 ;TRANSICAO LIMPA DE 0 PARA 1;TRANSICAO LIMPA DE 0 PARA 1SJMP AQUISJMP AQUI
;;;ELIMINAR BOUNCING NAS TRANSIES DE 0 PARA 1;ELIMINAR BOUNCING NAS TRANSIES DE 0 PARA 1RBT_0_1 MOV R7,#RTDRBT_0_1 MOV R7,#RTDLB1LB1 JNB SW2,RBT_0_1JNB SW2,RBT_0_1
DJNZ R7,LB1DJNZ R7,LB1RETRET
;;;ELIMINAR BOUNCING NAS TRANSIES DE 1 PARA 0;ELIMINAR BOUNCING NAS TRANSIES DE 1 PARA 0RBT_1_0 MOV R7,#RTDRBT_1_0 MOV R7,#RTDLB2LB2 JB SW2,RBT_1_0JB SW2,RBT_1_0
DJNZ R7,LB2DJNZ R7,LB2RETRETENDEND
Exemplo de Programao com Portas
-
7/26/2019 Microcontroladores - 8051
58/98
MicrocontroladoresMicrocontroladores
Prof. Dr. Ivo Reis Fontes
CAPTULO 5CAPTULO 5INTERRUPES
Microcontroladores - 8051
INTERRUPES DO 8051
EVENTOS e ISRsEVENTOS e ISRs
EVENTOEVENTO
SalvaSalvaPC noPC noSTACKSTACK
Inicio daInicio daISRISR
ExecutandoExecutandoProgramaPrograma
Final daFinal da
ISRISR
RecuperRecupera PC doa PC doSTACKSTACK
ContinuaContinuaExecuoExecuo
dodoProgramaPrograma
-
7/26/2019 Microcontroladores - 8051
59/98
Microcontroladores - 8051
INTERRUPES DO 8051
NNoo DE INTERRUES:DE INTERRUES: 2 EXTERNAS2 EXTERNAS 2 TMRs2 TMRs 1 SERIAL1 SERIAL
REGISTROS ASSOCIADOS:REGISTROS ASSOCIADOS: IEIE
IPIP TCONTCON
Interrupo o processo atravs do qual a execuo deInterrupo o processo atravs do qual a execuo deum programa pode ser interrompida de forma assncronaum programa pode ser interrompida de forma assncronapor um evento interno/externo. Associada ao evento existepor um evento interno/externo. Associada ao evento existeuma rotina de servio (ISR)uma rotina de servio (ISR)
Microcontroladores - 8051
INTERRUPES DO 8051
ESQUEMA DE INTERRUPOESQUEMA DE INTERRUPO
-
7/26/2019 Microcontroladores - 8051
60/98
Microcontroladores - 8051
REGISTROS & INTERRUPES
REGISTROSREGISTROS
IEIE Interrupt EnableInterrupt Enable
1 = ENABLE1 = ENABLE 0 = DISABLE0 = DISABLE
B7B7 B6B6 B5B5 B4B4 B3B3 B2B2 B1B1 B0B0
IEIE EAEA -- ET2ET2 ESES ET1ET1 EX1EX1 ET0ET0 EX0EX0
EXT0
EXT0
TMR0
TMR0
EXT1
EXT1
TMR1
TMR1
SERIAL
SERIAL
TMR2(8052)
TMR2(8052)
ENABLE
INTERRUPT
ENABLE
INTERRUPT
Microcontroladores - 8051
REGISTROS & INTERRUPES
REGISTROSREGISTROS CONT.CONT.
1 = HIGH1 = HIGH 0 = LOW0 = LOW
B7B7 B6B6 B5B5 B4B4 B3B3 B2B2 B1B1 B0B0
IPIP -- -- PT2PT2 PSPS PT1PT1 PX1PX1 PT0PT0 PX0PX0
EXT0
EXT0
TMR0
TMR0
EXT1
EXT1
TMR1
TMR1
SERIAL
SERIAL
TMR
2(8052)
TMR
2(8052)
IPIP Interrupt PriorityInterrupt Priority
-
7/26/2019 Microcontroladores - 8051
61/98
-
7/26/2019 Microcontroladores - 8051
62/98
Microcontroladores - 8051
EVENTOS & INTERRUPES
A seguir apresentada a sequncia de eventos em ciclosA seguir apresentada a sequncia de eventos em ciclosde mquina no atendimento de uma interruode mquina no atendimento de uma interruo
Microcontroladores - 8051
EXEMPLO
EXEMPLO 5.1EXEMPLO 5.1
;LED_INT1.ASM;LED_INT1.ASMDEFSEG PROG, CLASS=CODE, START=0DEFSEG PROG, CLASS=CODE, START=0SEG PROGSEG PROG
;;
ORG RESETORG RESETAJMP INICIOAJMP INICIO;;
ORG EXTI1ORG EXTI1AJMP EXT1AJMP EXT1
;;
A seguir apresentado um exemplo que faz uso da interruoA seguir apresentado um exemplo que faz uso da interruoexterna INT1 para acender os LEDs do exemplo visto anteriormente.externa INT1 para acender os LEDs do exemplo visto anteriormente.Observao: Considere que a SW2 est conectada entrada INT1,Observao: Considere que a SW2 est conectada entrada INT1,ou seja, pino P3.3 !ou seja, pino P3.3 !
-
7/26/2019 Microcontroladores - 8051
63/98
Microcontroladores - 8051
EXEMPLO
EXEMPLO 5.1EXEMPLO 5.1 CONT.CONT.
ORG 50HORG 50HINICIOINICIO MOV A,#01001001BMOV A,#01001001B
CLR CCLR CMOV P1,AMOV P1,ASETB EX1SETB EX1 ;HABILITAR INT. EXT. 1;HABILITAR INT. EXT. 1SETB EASETB EA ;HABILITAR FLAG GERAL;HABILITAR FLAG GERALSJMP $SJMP $ ;LOOP INFINITO;LOOP INFINITO
;;;ROTINA PARA ATENDER A INTERRUPCAO EXTERNA 1;ROTINA PARA ATENDER A INTERRUPCAO EXTERNA 1EXT1EXT1 RLC ARLC A ;ACENDER LEDS EM SEQUENCIA;ACENDER LEDS EM SEQUENCIA
MOV P1,AMOV P1,ARETIRETI
ENDEND
MicrocontroladoresMicrocontroladores
Prof. Dr. Ivo Reis [email protected]
CAPTULO 6CAPTULO 6TEMPORIZADORES/CONTADORES
-
7/26/2019 Microcontroladores - 8051
64/98
-
7/26/2019 Microcontroladores - 8051
65/98
Microcontroladores - 8051
Registros de Controle
TMOD:TMOD:
TIMER 1TIMER 1 TIMER 0TIMER 0
B7B7 B6B6 B5B5 B4B4 B3B3 B2B2 B1B1 B0B0
TMODTMOD GATEGATE C/~TC/~T M1M1 M0M0 GATEGATE C/~TC/~T M1M1 M0M0
BIT0
BIT0MODO
MODO
BIT1
BIT1MODO
MODO
CONTADOR/TEMPORIZADOR
CONTADOR/TEMPORIZADOR
C
ONTROLEDOGATE
C
ONTROLEDOGATE
BIT0
BIT0MODO
MODO
BIT1
BIT1MODO
MODO
CONTADOR/TEMPORIZADOR
CONTADOR/TEMPORIZADOR
C
ONTROLEDOGATE
C
ONTROLEDOGATE
Microcontroladores - 8051
Registros de Controle
TCON:TCON:
TIMER 1TIMER 1 TIMER 0TIMER 0 TIMER 1TIMER 1 TIMER 0TIMER 0
B7B7 B6B6 B5B5 B4B4 B3B3 B2B2 B1B1 B0B0
TCONTCON TF1TF1 TR1TR1 TF0TF0 TR0TR0 IE1IE1 IT1IT1 IE0IE0 IT0IT0
BORDA/N
VELEXT0
BORDA/N
VELEXT0
FLAGEXT0
FLAGEXT0
BORDA/N
VELEXT1
BORDA/N
VELEXT1
FLAGEXT1
FLAGEXT1
RUN/S
TOPTMR0
RUN/S
TOPTMR0
OVLTMR0
OVLTMR0
RUN/S
TOPTMR1
RUN/S
TOPTMR1
OVLTMR1
OVLTMR1
-
7/26/2019 Microcontroladores - 8051
66/98
-
7/26/2019 Microcontroladores - 8051
67/98
Microcontroladores - 8051
MODOS
MODO 2MODO 2
TIMER 0/1MODE 2
Microcontroladores - 8051
MODOS
MODO 3MODO 3
Neste modo o TMR1 suspende contagem e o TMR0 opera como dois Timers deNeste modo o TMR1 suspende contagem e o TMR0 opera como dois Timers de8 bits8 bits
TIMER 0MODE 3
-
7/26/2019 Microcontroladores - 8051
68/98
Microcontroladores - 8051
EXEMPLOS
EXEMPLO 6.1EXEMPLO 6.1No exemplo a seguir acendeNo exemplo a seguir acende--se os os leds vermelho, amarelo e verdese os os leds vermelho, amarelo e verdedo EXEMPLO 4.1, em seqncia, a uma velocidade de 10 Hz,do EXEMPLO 4.1, em seqncia, a uma velocidade de 10 Hz,utilizando a interrupo de T0 (MODO=1)com RELOAD apropriado.utilizando a interrupo de T0 (MODO=1)com RELOAD apropriado.ATENO: Ser necessrio calcular o valor de recarga para o T0ATENO: Ser necessrio calcular o valor de recarga para o T0
Setup dos RegistrosSetup dos Registros
TMODTMOD GATEGATE C/~TC/~T M1M1 M0M0 GATEGATE C/~TC/~T M1M1 M0M0
00 11 11 00 00 00 00 11
IEIE EAEA -- -- ESES ET1ET1 EX1EX1 ET0ET0 EX0EX0
11 00 00 00 00 00 11 00
Microcontroladores - 8051
EXEMPLOS
EXEMPLO 6.1EXEMPLO 6.1 CONT.CONT.
;LED_10HZ.ASM;LED_10HZ.ASM;;
DEFSEG PROG, CLASS=CODE, START=0DEFSEG PROG, CLASS=CODE, START=0SEG PROGSEG PROG
;;DEZ_HZ EQUDEZ_HZ EQU 8800H8800H ;N = 30720;N = 30720 ((CLOCK=3,6864 MHz)CLOCK=3,6864 MHz)
;RELOAD = 34816 (8800H);RELOAD = 34816 (8800H) F = 10F = 10HzHz
ORG RESETORG RESETAJMP INICAJMP INIC
;;ORG TIMER0ORG TIMER0AJMP TIM0AJMP TIM0
;;ORG 50HORG 50H
Calculo do valor de carga noCalculo do valor de carga noregistros do TIMERregistros do TIMER
-
7/26/2019 Microcontroladores - 8051
69/98
Microcontroladores - 8051
EXEMPLOS
EXEMPLO 6.1EXEMPLO 6.1 CONT.CONT.
INICINIC MOV TL0,#LOW DEZ_HZMOV TL0,#LOW DEZ_HZMOV TH0,#HIGH DEZ_HZMOV TH0,#HIGH DEZ_HZMOV TMOD,#61HMOV TMOD,#61H ;TIMER 0 EM MODO 1;TIMER 0 EM MODO 1MOV IE,#82HMOV IE,#82H ;#10000010B;#10000010BMOV P1,#0MOV P1,#0 ;APAGAR TODOS OS LEDS;APAGAR TODOS OS LEDSMOV A,#01001001BMOV A,#01001001BCLR CCLR CSETB TR0SETB TR0SJMP $SJMP $
;;ORG 100HORG 100H
TIM0TIM0 MOV TL0,#LOW (MOV TL0,#LOW (DEZ_HZ+2DEZ_HZ+2)) ;REINICALIZAR;REINICALIZAR
MOV TH0,#HIGH DEZ_HZMOV TH0,#HIGH DEZ_HZ ;O CONTADOR;O CONTADORRLC ARLC AMOV P1,AMOV P1,ARETIRETIENDEND
00 00 11 00 00 11 00 00 11
AAPSW.CYPSW.CY
RLCRLC
Microcontroladores - 8051
EXEMPLOS
EXEMPLO 6.2EXEMPLO 6.2
Setup dos RegistrosSetup dos Registros
No exemplo a seguir acendeNo exemplo a seguir acende--se os os leds vermelho, amarelo e verdese os os leds vermelho, amarelo e verdedo EXEMPLO 4.1, em seqncia, a uma velocidade dedo EXEMPLO 4.1, em seqncia, a uma velocidade de 1 Hz1 Hz, utilizando, utilizandoa interrupo de T0 com RELOAD apropriado.a interrupo de T0 com RELOAD apropriado.ATENOATENO: necessrio calcular o valor de recarga para o T0!: necessrio calcular o valor de recarga para o T0!PROBLEMAPROBLEMA: No mais possvel utilizar a soluo adotada em EX 6.1!: No mais possvel utilizar a soluo adotada em EX 6.1!
A sada adotar um contador!A sada adotar um contador!
TMODTMOD GATEGATE C/~TC/~T M1M1 M0M0 GATEGATE C/~TC/~T M1M1 M0M0
00 11 11 00 00 00 00 11
IEIE EAEA -- -- ESES ET1ET1 EX1EX1 ET0ET0 EX0EX0
11 00 00 00 00 00 11 00
-
7/26/2019 Microcontroladores - 8051
70/98
Microcontroladores - 8051
EXEMPLOS
EXEMPLO 6.2EXEMPLO 6.2 CONT.CONT.
;LED_1HZ.ASM;LED_1HZ.ASM;;
DEFSEG PROG, CLASS=CODE, START=0DEFSEG PROG, CLASS=CODE, START=0SEG PROGSEG PROG
;N = 307200;N = 307200 ((CLOCK=3,6864 MHz)CLOCK=3,6864 MHz);Impossvel!;Impossvel!;Adota;Adota--se: RELOAD=8800H (10 Hz)se: RELOAD=8800H (10 Hz);e CONTADOR = 10;e CONTADOR = 10
DEZ_HZDEZ_HZ EQUEQU 8800H8800HDIVISORDIVISOR EQUEQU 1010;;
ORG RESETORG RESET
AJMP INICAJMP INIC;;
ORG TIMER0ORG TIMER0AJMP TIM0AJMP TIM0
Microcontroladores - 8051
EXEMPLOS
EXEMPLO 6.2EXEMPLO 6.2 CONT.CONT.
;;ORG 50HORG 50H
INICINIC MOV TL0,#LOW DEZ_HZMOV TL0,#LOW DEZ_HZMOV TH0,#HIGH DEZ_HZMOV TH0,#HIGH DEZ_HZMOV R7,#DIVISORMOV R7,#DIVISOR ;PREPARAR DIVISAO POR 10;PREPARAR DIVISAO POR 10MOV TMOD,#61HMOV TMOD,#61H ;TIMER 0 EM MODO 1;TIMER 0 EM MODO 1MOV IE,#82HMOV IE,#82H ;HABILITA INTERRUPO;HABILITA INTERRUPOMOV P1,#0MOV P1,#0 ;APAGAR TODOS OS LEDS;APAGAR TODOS OS LEDSMOV A,#01001001BMOV A,#01001001BCLR CCLR C
SETB TR0SETB TR0SJMP $SJMP $
;;ORG 100HORG 100H
TIM0TIM0 MOV TL0,#LOW (MOV TL0,#LOW (DEZ_HZ+2DEZ_HZ+2)) ;REINICALIZAR;REINICALIZARMOV TH0,#HIGH DEZ_HZMOV TH0,#HIGH DEZ_HZ ;O CONTADOR;O CONTADOR
-
7/26/2019 Microcontroladores - 8051
71/98
-
7/26/2019 Microcontroladores - 8051
72/98
Microcontroladores - 8051
EXEMPLOS
EXEMPLO 6.3EXEMPLO 6.3 CONT.CONT.SOLUO:SOLUO:Ser necessrio calcular DOIS valores de RELOAD:Ser necessrio calcular DOIS valores de RELOAD:
1) RELOAD para 1 mseg:1) RELOAD para 1 mseg:
1 mseg = (121 mseg = (12 N)/FN)/FCLOCKCLOCK = (12= (12 N)/3,6864 MHzN)/3,6864 MHzNN1mseg1mseg = (10= (10--33 segseg 3,68423,6842101066)/12 = 307,2)/12 = 307,2 307307RELOADRELOAD1mseg1mseg = 65229 = FEC0H= 65229 = FEC0H
1) RELOAD para 401) RELOAD para 40 seg:seg:
4040 segseg = (12= (12 N)/FN)/FCLOCKCLOCK = (12= (12 N)/3,6864 MHzN)/3,6864 MHzNN segseg = (40= (401010--66 segseg 3,68423,6842101066)/12 = 12,288)/12 = 12,288 1212RELOADRELOAD1mseg1mseg = 65524 = FFF4H= 65524 = FFF4H
Microcontroladores - 8051
EXEMPLOS
EXEMPLO 6.3EXEMPLO 6.3 CONT.CONT.;ONDA1.ASM;ONDA1.ASM
DEFSEG PROG, CLASS=CODE, START=0DEFSEG PROG, CLASS=CODE, START=0SEG PROGSEG PROG
;;SAIDASAIDA EQUEQU P1.7P1.7R_1MSR_1MS EQUEQU 0FEC0H0FEC0H ;RETARDO DE 1;RETARDO DE 1MILISEGMILISEGR_40MICROR_40MICRO EQUEQU 0FFF4H0FFF4H ;RETARDO DE 40 MICROSEG;RETARDO DE 40 MICROSEG;;
ORG RESETORG RESET
AJMP INICIOAJMP INICIO;;ORG TIMER0ORG TIMER0AJMP TIM0AJMP TIM0
;;ORG 50HORG 50H
INICIOINICIO MOV TL0,#LOW R_1MSMOV TL0,#LOW R_1MS
-
7/26/2019 Microcontroladores - 8051
73/98
-
7/26/2019 Microcontroladores - 8051
74/98
Microcontroladores - 8051
REGISTROS
SCONSCON
B7B7 B6B6 B5B5 B4B4 B3B3 B2B2 B1B1 B0B0
SCONSCON SM0SM0 SM1SM1 SM2SM2 RENREN TB8TB8 RB8RB8 TITI RIRI
RECINTERRUPT
RECINTERRUPT
T
RNSINTERRUPT
T
RNSINTERRUPT
88ooBITREC
BITREC
88ooBITTRNS
BITTRNS
ENABLEREC
ENABLEREC
MU
LTIPROCESSOR
MU
LTIPROCESSOR
BIT1MODE
BIT1MODE
BIT0MODE
BIT0MODE
Microcontroladores - 8051
REGISTROS
B7B7 B6B6 B5B5 B4B4 B3B3 B2B2 B1B1 B0B0
SCONSCON SMODSMOD -- -- -- GF1GF1 GF0GF0 PDPD IDLIDL
IDLEMODE
IDLEMODE
POWERD
OWNMODE
POWERD
OWNMODE
GENERA
LPURPOSE
GENERA
LPURPOSE
GENERA
LPURPOSE
GENERA
LPURPOSE
BRBR
22
PCONPCON
-
7/26/2019 Microcontroladores - 8051
75/98
Microcontroladores - 8051
MODOS DE OPERAO
MODOS DE OPERAOMODOS DE OPERAO
Microcontroladores - 8051
MODOS DE OPERAO
MODO 0MODO 0 SHIFT REGISTERSHIFT REGISTER
-
7/26/2019 Microcontroladores - 8051
76/98
Microcontroladores - 8051
EXEMPLO DE APLICAO
EXEMPLO 7.1EXEMPLO 7.1 APLICAO DO MODO 0APLICAO DO MODO 0
Microcontroladores - 8051
MODOS DE OPERAO
MODO 1MODO 1 ASSNCRONO, 8 BITSASSNCRONO, 8 BITS
-
7/26/2019 Microcontroladores - 8051
77/98
-
7/26/2019 Microcontroladores - 8051
78/98
Microcontroladores - 8051
INTERFACE
CIRCUITOS INTEGRADOS DEDICADOSCIRCUITOS INTEGRADOS DEDICADOS
TRANSMITER (1488) RECEIVER (1489)
Microcontroladores - 8051
INTERFACE
CONFIGURAO MNIMACONFIGURAO MNIMA
1488
1489
COMUNICAO ENTRE O 8051 E PCCOMUNICAO ENTRE O 8051 E PC
-
7/26/2019 Microcontroladores - 8051
79/98
-
7/26/2019 Microcontroladores - 8051
80/98
Microcontroladores - 8051
EXEMPLO DE PROGRAMAO
EXEMPLO 7.2EXEMPLO 7.2 CONT.CONT.
;TX_SER.ASM;TX_SER.ASMDEFSEG PROG, CLASS=CODE, START=0DEFSEG PROG, CLASS=CODE, START=0SEG PROGSEG PROG
;;BR_2400 EQU 252BR_2400 EQU 252;;
ORG RESETORG RESETAJMP INICAJMP INIC
;;ORG SINTORG SINTAJMP SERIALAJMP SERIAL
;;ORG 50HORG 50H
INICINIC MOV TMOD,#20HMOV TMOD,#20H ;TIMER 1 EM MODO 2;TIMER 1 EM MODO 2MOV TH1,#BR_2400MOV TH1,#BR_2400 ;PROGRAMAR BAUD RATE;PROGRAMAR BAUD RATEMOV TL1,#BR_2400MOV TL1,#BR_2400MOV SCON,#0C8HMOV SCON,#0C8H ;MODO 3 COM TB8=1;MODO 3 COM TB8=1MOV IE,#90HMOV IE,#90H ;HAB INTERRUP SERIAL;HAB INTERRUP SERIAL
Microcontroladores - 8051
EXEMPLO DE PROGRAMAO
EXEMPLO 7.2EXEMPLO 7.2 CONT.CONT.
SETB TR1SETB TR1 ;INICIAR TIMER 1;INICIAR TIMER 1MOV DPTR,#TBLMOV DPTR,#TBL ;INICIA APONTADOR DA TABELA ASCII;INICIA APONTADOR DA TABELA ASCIIMOV R0,#0MOV R0,#0MOV A,R0MOV A,R0MOVC A,@A+DPTRMOVC A,@A+DPTR ;PEGA PRIMEIRO ASCII DA TABELA;PEGA PRIMEIRO ASCII DA TABELACLR TICLR TIMOV SBUF,AMOV SBUF,A ;TX PRIMEIRO ASCII;TX PRIMEIRO ASCIISJMP $SJMP $ ;LOOP INFINITO;LOOP INFINITO
;;ORG 100HORG 100H
SERIALSERIAL CLR TICLR TI ;APAGAR FLAG;APAGAR FLAG
INC R0INC R0 ;INCREMENTA APONTADOR;INCREMENTA APONTADORMOV A,R0MOV A,R0MOVC A,@A+DPTRMOVC A,@A+DPTR ;PEGA PROXIMO ASCII;PEGA PROXIMO ASCIICJNE A,#'$',PUTCHCJNE A,#'$',PUTCH ;FIM DA TABELA ASCII?;FIM DA TABELA ASCII?MOV R0,#0MOV R0,#0 ;REINICIA APONTADOR DA TABELA ASCII;REINICIA APONTADOR DA TABELA ASCIIMOV A,R0MOV A,R0MOVC A,@A+DPTRMOVC A,@A+DPTR ;PEGA PRIMEIRO ASCII DA TABELA;PEGA PRIMEIRO ASCII DA TABELA
-
7/26/2019 Microcontroladores - 8051
81/98
Microcontroladores - 8051
EXEMPLO DE PROGRAMAO
EXEMPLO 7.2EXEMPLO 7.2 CONT.CONT.
PUTCHPUTCH MOV SBUF,AMOV SBUF,A ;TRANSMITIR ASCII;TRANSMITIR ASCIIACALL RETARDOACALL RETARDO ;ATRASAR TRANSMISSAO;ATRASAR TRANSMISSAORETIRETI
;;RETARDORETARDO
MOV R6,#7FHMOV R6,#7FHLOOP1LOOP1 MOV R7,#0MOV R7,#0LOOP2LOOP2 DJNZ R7,LOOP2DJNZ R7,LOOP2
DJNZ R6,LOOP1DJNZ R6,LOOP1RETRET
TBLTBL DB "0123456789ABCDEFGHIJKLMNOPQRSTUVXYWZ$"DB "0123456789ABCDEFGHIJKLMNOPQRSTUVXYWZ$"
ENDEND
Microcontroladores - 8051
EXEMPLO DE PROGRAMAO
EXEMPLO 7.3EXEMPLO 7.3O circuito dever responder aos seguintes comandos que chegam pelaO circuito dever responder aos seguintes comandos que chegam pelaporta serial (2400,8,n,1):porta serial (2400,8,n,1):11 acender todos os ledsacender todos os leds 00 apagar todos os ledsapagar todos os ledsRR acender led vermelhoacender led vermelho rr apagar led vermelhoapagar led vermelhoAA acender led amareloacender led amarelo aa apagar led amareloapagar led amareloVV acender led verdeacender led verde vv apagar led verdeapagar led verde
;RX_SER.ASM;RX_SER.ASMDEFSEG PROG, CLASS=CODE, START=0DEFSEG PROG, CLASS=CODE, START=0SEG PROGSEG PROG
;;BR_2400BR_2400 EQUEQU 252252LED_VERMELHO EQULED_VERMELHO EQU P1.0P1.0LED_AMARELOLED_AMARELO EQUEQU P1.1P1.1LED_VERDELED_VERDE EQUEQU P1.2P1.2CHEGOUCHEGOU EQUEQU 32.032.0;;
-
7/26/2019 Microcontroladores - 8051
82/98
Microcontroladores - 8051
EXEMPLO DE PROGRAMAO
EXEMPLO 7.3EXEMPLO 7.3 CONT.CONT.
ORG RESETORG RESETAJMP INICAJMP INIC
;;ORG SINTORG SINTAJMP SERIALAJMP SERIAL
;;ORG 50HORG 50H
INICINIC MOV TMOD,#20HMOV TMOD,#20H ;TIMER 1 EM MODO 2;TIMER 1 EM MODO 2MOV TH1,#BR_2400MOV TH1,#BR_2400 ;PROGRAMAR BAUD RATE;PROGRAMAR BAUD RATEMOV TL1,#BR_2400MOV TL1,#BR_2400MOV SCON,#0D0HMOV SCON,#0D0H ;MODO 3 COM REN=1;MODO 3 COM REN=1MOV IE,#90HMOV IE,#90H ;HAB INTERRUP SERIAL;HAB INTERRUP SERIALSETB TR1SETB TR1 ;INICIAR TIMER 1;INICIAR TIMER 1CLR CHEGOUCLR CHEGOU ;APAGAR FLAG;APAGAR FLAG
ESPERA JNB CHEGOU,ESPERAESPERA JNB CHEGOU,ESPERA ;AGUARDAR UM COMANDO;AGUARDAR UM COMANDOCLR CHEGOUCLR CHEGOU
;;CJNE A,#"0",LB1CJNE A,#"0",LB1CLR LED_VERMELHOCLR LED_VERMELHO ;CHEGOU 0;CHEGOU 0
Microcontroladores - 8051
EXEMPLO DE PROGRAMAO
EXEMPLO 7.3EXEMPLO 7.3 CONT.CONT.CLR LED_AMARELOCLR LED_AMARELOCLR LED_VERDECLR LED_VERDESJMP ESPERASJMP ESPERA
;;LB1LB1 CJNE A,#"1",LB2CJNE A,#"1",LB2
SETB LED_VERMELHOSETB LED_VERMELHO ;CHEGOU 1;CHEGOU 1SETB LED_AMARELOSETB LED_AMARELOSETB LED_VERDESETB LED_VERDESJMP ESPERASJMP ESPERA
;;LB2LB2 CJNE A,#"R",LB3CJNE A,#"R",LB3
SETB LED_VERMELHOSETB LED_VERMELHO ;CHEGOU R;CHEGOU R
SJMP ESPERASJMP ESPERA;;LB3LB3 CJNE A,#"r",LB4CJNE A,#"r",LB4
CLR LED_VERMELHOCLR LED_VERMELHO ;CHEGOU r;CHEGOU rSJMP ESPERASJMP ESPERA
;;LB4LB4 CJNE A,#"A",LB5CJNE A,#"A",LB5
-
7/26/2019 Microcontroladores - 8051
83/98
Microcontroladores - 8051
EXEMPLO DE PROGRAMAO
EXEMPLO 7.3EXEMPLO 7.3 CONT.CONT.
SETB LED_AMARELOSETB LED_AMARELO ;CHEGOU A;CHEGOU ASJMP ESPERASJMP ESPERA
;;LB5LB5 CJNE A,#"a",LB6CJNE A,#"a",LB6
CLR LED_AMARELOCLR LED_AMARELO ;CHEGOU a;CHEGOU aSJMP ESPERASJMP ESPERA
;;LB6LB6 CJNE A,#"V",LB7CJNE A,#"V",LB7
SETB LED_VERDESETB LED_VERDE ;CHEGOU V;CHEGOU VSJMP ESPERASJMP ESPERA
;;LB7LB7 CLR LED_VERDECLR LED_VERDE ;CHEGOU v;CHEGOU v
SJMP ESPERASJMP ESPERA;;
SERIAL CLR RISERIAL CLR RI ;APAGAR FLAG DE INTERRUPT;APAGAR FLAG DE INTERRUPTMOV A,SBUFMOV A,SBUF ;COLOCAR DADO NO Acc;COLOCAR DADO NO AccSETB CHEGOUSETB CHEGOURETIRETIENDEND
MicrocontroladoresMicrocontroladores
Prof. Dr. Ivo Reis [email protected]
CAPTULO 8CAPTULO 8PROGRAMAO C
-
7/26/2019 Microcontroladores - 8051
84/98
Microcontroladores - 8051
COMPILADORES C
LINGUAGEM DE PROGRAMAO CLINGUAGEM DE PROGRAMAO C
A linguagem C proporciona a criao de cdigo executvel eficienteA linguagem C proporciona a criao de cdigo executvel eficienteatravs de tcnica de programao estruturada, incluindo um ricoatravs de tcnica de programao estruturada, incluindo um ricoconjunto de operadores.conjunto de operadores.
Geralmente ANSIGeralmente ANSI--C compatvelC compatvelO pacote de desenvolvimento em linguagem C (C51) da Keil inclui umO pacote de desenvolvimento em linguagem C (C51) da Keil inclui um
conjunto de ferramentas que auxiliam o programador noconjunto de ferramentas que auxiliam o programador nodesenvolvimento de uma aplicao baseado na famlia 8051 dadesenvolvimento de uma aplicao baseado na famlia 8051 daIntel, Dallas, Atmel, etc.Intel, Dallas, Atmel, etc.
Os elementos principais so:Os elementos principais so: Compilador (C51)Compilador (C51)
Linkeditor (L51)Linkeditor (L51) Gerenciador de Bibliotecas (LIB51)Gerenciador de Bibliotecas (LIB51) Ncleo de Tempo Real (RTX51)Ncleo de Tempo Real (RTX51)
Microcontroladores - 8051
COMPILADORES C
COMPILADORES C COMERCIAISCOMPILADORES C COMERCIAIS KEILKEIL -- C51C51
Keil Elektronik GmbH / Keil Software, Inc.Keil Elektronik GmbH / Keil Software, Inc.
AVOCETAVOCET AVC51AVC51 Avocet Systems, Inc.Avocet Systems, Inc.
IMAGECRAFTIMAGECRAFT ICC51ICC51 ImageCraft Creations, Inc.ImageCraft Creations, Inc.
2500AD2500AD C COMPILERC COMPILER 2500AD Software, Inc.2500AD Software, Inc.
SHAREWARESHAREWARE ARQUIMEDSARQUIMEDS??/FRANKLIN/FRANKLIN?? (C51)(C51)
FREEWAREFREEWARE GNUGNU -- GCCGCC GCC.GNU.ORGGCC.GNU.ORG
SDCCSDCC Sandeep DuttaSandeep Dutta
--
-
7/26/2019 Microcontroladores - 8051
85/98
Microcontroladores - 8051
COMPILADORES C
ELEMENTOS DA LINGUAGEM PARA O C51ELEMENTOS DA LINGUAGEM PARA O C51--KEILKEIL
AJUSTES DO AMBIENTE:AJUSTES DO AMBIENTE:
PATH:PATH: \\C51C51\\BINBINPATH=%PATH%;C:PATH=%PATH%;C:\\C51C51\\BINBIN
TMPTMPSET TMP = C:SET TMP = C:\\TMPTMP
C51INC:C51INC: \\C51C51\\INCINCSET C51INC = C:SET C51INC = C:\\C51C51\\INCINC
C51LIB:C51LIB: \\C51C51\\LIBLIB
SET C51LIB = C:SET C51LIB = C:\\C51C51\\LIBLIB
Microcontroladores - 8051
COMPILADORES C
USO DO COMPILADOR:USO DO COMPILADOR:
C51C51 sourcefilesourcefile[[diretivesdiretives]]PRODUZ:PRODUZ:
basename.LSTbasename.LST basename.OBJbasename.OBJ basename.Ibasename.I basename.SRCbasename.SRC
DIRETIVAS DE CONTROLE:DIRETIVAS DE CONTROLE: Source controls:Source controls: Definem macros na linha de comando e determinam oDefinem macros na linha de comando e determinam o
nome dos arquivos a serem compiladosnome dos arquivos a serem compilados Object controls:Object controls: Afetam a forma e contedo dos mdulos objetosAfetam a forma e contedo dos mdulos objetosgerados, permitem definir nveis de otimizao e incluso de informaogerados, permitem definir nveis de otimizao e incluso de informaopara o debbugpara o debbug
Listing controls:Listing controls: Governam vrios aspectos relacionados com a listagemGovernam vrios aspectos relacionados com a listagemproduzida no processo de compilaoproduzida no processo de compilao
-
7/26/2019 Microcontroladores - 8051
86/98
Microcontroladores - 8051
COMPILADORES C
DIRETIVAS DE CONTROLE:DIRETIVAS DE CONTROLE:
DIRETIVADIRETIVA ABREV.ABREV. CLASSECLASSE DESCRIODESCRIOASSEMBLYENDASSEMBLY
ASMENDASM
Fonte Incio fim de incluso de cdigo assemblyno cdigo fonte
[NO]AREGS [NO]AR Objeto Enable/Disable endereamento direto aosregistros absolutos (Arn)
CODE CD Listagem Acrescenta cdigo assembly na arquivode listagem
COMPACT CP Objeto Seleciona modelo de mmoria COMPACT
DEBUG DB Objeto Inclui informaes de DEBUG no cdigoobjeto
DEFINE DF Fonte Define nomes para o preprocessador nalinha de invocao do C51
FLOATFUZZY FF Objeto Especifica nmero de arrendondamentode bits durante comparao com float
INTERVAL Objeto Especifica o intervalo para os vetores deinterrupes para as diretivas SIECO
[NO]INTPROMOTE [NO]IP Objeto Enable/Disable promoo integer ANSI
Microcontroladores - 8051
COMPILADORES C
DIRETIVAS DE CONTROLEDIRETIVAS DE CONTROLE cont.cont.::
DIRETIVADIRETIVA ABREV.ABREV. CLASSECLASSE DESCRIODESCRIO
[NO]INTVECTOR Objeto Especifica endreo base para vetores deinterruo ou desabilita vetores
LARGE LA Objeto Seleciona modelo de memria LARGE
LISTINCLUDE LC Listagem Inclui contedo dos arquivos includos noarquivo de listagem
MAXARGS MA Objeto Especifica tamanho da listagem dosargumentos das variveis
[NO]MOD517 Objeto Cdigo e controle para hardware adicionaldo 80C517 e diretivas
NOAMAKE NOAM Objeto Desabilita registros de informao para oAutoMAKE
NOCOND NOCO Listagem No lista linhas de fonte puladas nopreprocessador
NOEXTEND Fonte Desabilita extenses do ANSI-C do C51
NOREGPARMS Objeto Desabilita passagem de parmetros porregistrador
-
7/26/2019 Microcontroladores - 8051
87/98
Microcontroladores - 8051
COMPILADORES C
DIRETIVAS DE CONTROLEDIRETIVAS DE CONTROLE cont.cont.::
DIRETIVADIRETIVA ABREV.ABREV. CLASSECLASSE DESCRIODESCRIO[NO]OBJECT [NO]OJ Objeto Especifica um name para o arquivo objeto
ou no gera cdigo objeto
OBJECTEXTEND OE Objeto Inclui informao adicional de tipo devarivel no cdigo objeto
OPTIMIZE OT Objeto Especifica o nvel de otimizao realizadapelo compilador
ORDER Objeto Variveis so alocadas na ordem queaparecem no cdigo fonte
PAGELENGTH PL Listagem Especifica o nmero de linhas de pginano arquivo de listagem
PAGEWIDTH PW Listagem Especifica o nmero de caracteres nalinha do arquivo de listagem
PREPRINT PP Listagem Produz um arquivo de listagem pelopreprocessador onde todas as macros soexpandidas
[NO]PRINT [NO]PR Listagem Especifica o nome do arquivo de listagemou desabilita a listagem
Microcontroladores - 8051
COMPILADORES C
DIRETIVAS DE CONTROLEDIRETIVAS DE CONTROLE cont.cont.::
DIRETIVADIRETIVA ABREV.ABREV. CLASSECLASSE DESCRIODESCRIO
REGFILE RF Objeto Especifica a definio de registros paraotimizao global de registros
REGISTERBANK RB Objeto Seleciona o banco de registro que usado para endereamento absoluto deregistros
ROM OT Objeto Controle de gerao das instruesAJMP/ACALL
SMALL SM Objeto Seleciona o modelo de memria SMALL(default)
SRC Objeto Cria um arquivo fonte em linguagem
assembly sem criar o cdigo objetoSYMBOLS SB Listagem Inclui lista de smbolos usados no mdulo
no arquivo de listagem
WARNNINGLEVEL WL Listagem Seleciona o nvel de deteco deWarnning
-
7/26/2019 Microcontroladores - 8051
88/98
Microcontroladores - 8051
COMPILADORES C
MODELOS DE MEMRIAMODELOS DE MEMRIA
MODELOMODELO DESCRIODESCRIO
SMALSMAL As variveis (por default) residem na memria interna de dados do8051. Funciona como se as variveis fossem declaradas com omodificador datadata.IMPORTANTE: As memrias internas da CPU devem ser suficientespara a aplicao.
COMPACTCOMPACT As variveis (por default) residem em uma pgina de memria RAMexterna. Funciona como se as variveis fossem declaradas com omodificador pdatapdata.Este modelo pode acomodar no mximo 256 bytes de variveis.
LARGELARGE As variveis (por default) residem na memria RAM externa,podendo ocupar at 64 Kbytes. O acesso s variveis feito atravs
do apontador DPTRDPTR.
Microcontroladores - 8051
COMPILADORES C
DECLARAO EXPLICITA DE MEMRIA PARA AS VARIVEISDECLARAO EXPLICITA DE MEMRIA PARA AS VARIVEIS
TIPOTIPO DESCRIODESCRIO
codecode Acesso direto memria de programa (64 Kbytes)Acesso atravs do opcode MOVC A,@A+DPTR
datadata Acesso direto memria RAM interna (128 Bytes)Mais rpido acesso!
idataidata Acesso indireto memria RAM interna (256 Bytes)BANKs, bit-addressable bytes, User RAM, SFR
bdatabdata Acesso direto memria RAM interna, bit-enderessvelPermite acesso a bit ou byte
xdataxdata Acesso indexado memria RAM externa (64 Kbytes)Acesso atravs do opcode MOVX ,@DPTR
pdatapdata Acesso paginado memria RAM externa (Blocos de 256 Bytes)Acesso atravs do opcode MOVX ,@Rn
-
7/26/2019 Microcontroladores - 8051
89/98
Microcontroladores - 8051
COMPILADORES C
TIPOS DE DADOS (variveis):TIPOS DE DADOS (variveis):
TIPOTIPO BITSBITS BYTESBYTES INTERVALOINTERVALObit 1 0 a 1
[signed] char 8 1 -128 a +127
unsigned char 8 1 0 a 255
Enum 16 2 -32.768 a +32.767
[signed] short 16 2 -32.768 a +32.767
unsigned short 16 2 0 a 65.535
[signed] int 16 2 -32.768 a +32.767
unsigned int 16 2 0 a 65.535
[signed] long 32 4 -2.147.483.648 a + 2.147.483.647
unsigned long 32 4 0 a 4.294.967.295
float 32 4 1,175494E-38 a 3,402823E+38sbit 1 0 a 1
sfr 8 1 0 a 255
sfr16 16 2 0 a 65.535
Microcontroladores - 8051
COMPILADORES C
DECLARAO DE VARIVEIS:DECLARAO DE VARIVEIS:
LOCALIZAO ABSOLUTA DE VARIVEL:LOCALIZAO ABSOLUTA DE VARIVEL:
[] _at_ ; [] _at_ ;
TIPOTIPO SINTXESINTXE EXEMPLOEXEMPLO
bit enderevelbit enderevel bit var-name1,...,var-namen; bit flag1,flag2;
bytebyte--bitbit sbit ^ bit-number; sbit flag1 = flags ^ 0;sbit flag2 = flags ^ 1;
sfrsfr sfr = ; sfr P0 = 0x80;sfr P1 = 0x90;
sfr16sfr16 sfr16 = ; sfr16 T2 = 0xCC;0xcc = T2L address
-
7/26/2019 Microcontroladores - 8051
90/98
Microcontroladores - 8051
COMPILADORES C
MACROMACRO SINTXESINTXE EXEMPLOEXEMPLO
CBYTECBYTE = CBYTE[; char1=CBYTE[0xF100];
CWORDCWORD = CWORD[; Int1=CWORD[0xF100];
DBYTEDBYTE = DBYTE[;
CBYTE[ = ; (1)char2=DBYTE[0x40];DBYTE[0x40] = char2;
DWORDDWORD = DWORD[; (2) Int2=DWORD[0x40];
PBYTEPBYTE = PBYTE[; (2) char3=PBYTE[0xF0];
PWORDPWORD = CWORD[; (2) int3=CWORD[0xF0];
XBYTEXBYTE = XBYTE[;
(2)
char4=XBYTE[0x2000];XWORDXWORD var _name = XWORD[; (2) int4=XWORD[0x2000];
MACROS PARA ACESSO ABSOLUTO MEMRIAMACROS PARA ACESSO ABSOLUTO MEMRIA
EMEM (2)(2) aplicaaplica--se a mesma sintaxese a mesma sintaxe EM (1)EM (1)
Microcontroladores - 8051
COMPILADORES C
EXTENSES DA LINGUAGEM:EXTENSES DA LINGUAGEM:
Tipo de memria e reas no 8051Tipo de memria e reas no 8051 Modelos de MemriaModelos de Memria Especificadores de MemriaEspecificadores de Memria Especificadores de tipo de dado de variaveisEspecificadores de tipo de dado de variaveis Variveis tipo BIT e dado BITVariveis tipo BIT e dado BIT--enderevelenderevel SFRSFR Registros de Funes EspeciaisRegistros de Funes Especiais PonteirosPonteiros Atributos de FunoAtributos de Funo
PALAVRAS CHAVES:PALAVRAS CHAVES:
_at__at_ alienalien bdatabdata bitbit codecodecompactcompact datadata idataidata interruptinterrupt largelargepdatapdata reentrantreentrant sbitsbit sfrsfr sfr16sfr16smallsmall _task_ _task_ usingusing xdataxdata
-
7/26/2019 Microcontroladores - 8051
91/98
Microcontroladores - 8051
EXEMPLO DE PROGRAMAO
EXEMPLO 8.1EXEMPLO 8.1
/* Este exemplo l os bits da porta P2 e escreve na porta P0, l uma string atrav/* Este exemplo l os bits da porta P2 e escreve na porta P0, l uma string atravssdada
porta serial e coloca em BUF, assim que a stringporta serial e coloca em BUF, assim que a string recebida ecoa na porta serial,recebida ecoa na porta serial,zera os bits da porta P0 para sinalizar que terminou o tratamento da string ezera os bits da porta P0 para sinalizar que terminou o tratamento da string e
repeterepetenovamente o processo.novamente o processo.
*/*/
#include #include /* register definitions for 8051 CPU *//* register definitions for 8051 CPU */#include #include /* stardard i/o definitions *//* stardard i/o definitions */
/* Convert to Upper Character *//* Convert to Upper Character */unsigned char toupper (unsigned char c) {unsigned char toupper (unsigned char c) {
if (c < 'a' || c > 'z')if (c < 'a' || c > 'z')return (c);return (c);elseelse
return (c & ~0x20);return (c & ~0x20);}}
Microcontroladores - 8051
EXEMPLO DE PROGRAMAO
EXEMPLO 8.1EXEMPLO 8.1 CONT.CONT./* Echo Upper Characters *//* Echo Upper Characters */main (){main (){unsigned char c, buf[10];unsigned char c, buf[10];/* setup serial port control hardware (2400 BAUD @12MHZ) *//* setup serial port control hardware (2400 BAUD @12MHZ) */
SCON = 0x52;SCON = 0x52; /* SCON *//* SCON */TMOD = 0x20;TMOD = 0x20; /* TMOD *//* TMOD */TCON = 0x69;TCON = 0x69; /* TCON *//* TCON */TH1 = 0xf3;TH1 = 0xf3; /* TH1 *//* TH1 */
while (1){while (1){P0 = P2;P0 = P2; /* output hardware switch from Port2 *//* output hardware switch from Port2 */gets (buf, sizeof (buf));gets (buf, sizeof (buf)); /* get input line *//* get input line */
for (c = 0; buf[c] != 0; c++){for (c = 0; buf[c] != 0; c++){buf[c] = toupper (buf[c]);buf[c] = toupper (buf[c]); /* convert to captial *//* convert to captial */
}}puts (buf);puts (buf); /* echo input line *//* echo input line */P0 = 0;P0 = 0; /* clear Output Port to signal ready *//* clear Output Port to signal ready */
}}}}
-
7/26/2019 Microcontroladores - 8051
92/98
Microcontroladores - 8051
EXEMPLO DE PROGRAMAO
EXEMPLO 8.1EXEMPLO 8.1 CONT.CONT.
COMPILANDOCOMPILANDO
c51 sample.cc51 sample.cSAMPLE.LSTSAMPLE.LSTSAMPLE.OBJSAMPLE.OBJ
LINKEDITANDOLINKEDITANDO
l51 sample.objl51 sample.objSAMPLE.M51SAMPLE.M51SAMPLE.SAMPLE.
GERANDO ARQUIVO HEXGERANDO ARQUIVO HEX
ohs51 sampleohs51 sampleSAMPLE.HEXSAMPLE.HEX
Microcontroladores - 8051
EXEMPLO DE PROGRAMAO
EXEMPLO 8.1EXEMPLO 8.1 CONT.CONT.:10000300EFC394614006EFD3947A400122EF54DFAB:10000300EFC394614006EFD3947A400122EF54DFAB:02001300FF22CA:02001300FF22CA:10001500759852758920758869758DF385A0807BE3:10001500759852758920758869758DF385A0807BE3:10002500047A0079097D0A7C00120090E4FE7409C7:10002500047A0079097D0A7C00120090E4FE7409C7:100035002EF8E6FF600C12000374092EF8A6070ED1:100035002EF8E6FF600C12000374092EF8A6070ED1:1000450080EC7B047A007909120062E4F58080CCAB:1000450080EC7B047A007909120062E4F58080CCAB:010055002288:010055002288:03000000020056A5:03000000020056A5:0C005600787FE4F6D8FD758120020015CB:0C005600787FE4F6D8FD758120020015CB:100062008B138A148915AB13AA14A91512013260D5:100062008B138A148915AB13AA14A91512013260D5:10007200130515E5157002051414F9120132FF1269:10007200130515E5157002051414F9120132FF1269:0E00820001A080E27F0A1201A07E007F002212:0E00820001A080E27F0A1201A07E007F002212
:100090008B138A1489158C168D17E4F518F519E55C:100090008B138A1489158C168D17E4F518F519E55C:1000A0001724FFFFE51634FFFEC3E5199FEE6480B9:1000A0001724FFFFE51634FFFEC3E5199FEE6480B9:1000B000F8E51864809850691201C7AB13AA14A917:1000B000F8E51864809850691201C7AB13AA14A917:1000C00015851982851883EF12017CEF640A60514F:1000C00015851982851883EF12017CEF640A60514F:1000D000AB13AA14A91585198285188312014D64E2:1000D000AB13AA14A91585198285188312014D64E2:1000E00008701AE51945186008E519151970021508:1000E00008701AE51945186008E519151970021508:1000F000187F201201A07F081201A080A2AB13AAD2:1000F000187F201201A07F081201A080A2AB13AAD2
-
7/26/2019 Microcontroladores - 8051
93/98
Microcontroladores - 8051
EXEMPLO DE PROGRAMAO
EXEMPLO 8.1EXEMPLO 8.1 CONT.CONT.
:1001000014A91585198285188312014DFF641160A9:1001000014A91585198285188312014DFF641160A9:100110008EEF641360890519E51970020518020055:100110008EEF641360890519E51970020518020055:100120009FAB13AA14A915851982851883E41201BF:100120009FAB13AA14A915851982851883E41201BF:020130007C222F:020130007C222F:10013200BB020689828A83E0224003BB0402E722D3:10013200BB020689828A83E0224003BB0402E722D3:0B014200400789828A83E49322E322B5:0B014200400789828A83E49322E322B5:10014D00BB020CE58229F582E5833AF583E0224076:10014D00BB020CE58229F582E5833AF583E0224076:10015D0003BB0406E92582F8E622400DE58229F568:10015D0003BB0406E92582F8E622400DE58229F568:0F016D0082E5833AF583E49322E92582F8E222C2:0F016D0082E5833AF583E49322E92582F8E222C2:10017C00F8BB020DE58229F582E5833AF583E8F0B8:10017C00F8BB020DE58229F582E5833AF583E8F0B8:10018C00224003BB0406E92582C8F6225005E92566:10018C00224003BB0406E92582C8F6225005E92566:04019C0082C8F22201:04019C0082C8F22201:1001A000EFB40A07740D1201AB740A309811A899C4:1001A000EFB40A07740D1201AB740A309811A899C4:1001B000B8130CC2983098FDA899C298B811F630BF:1001B000B8130CC2983098FDA899C298B811F630BF
:0701C00099FDC299F5992297:0701C00099FDC299F5992297:1001C70010000B1201D8BF0D027F0A0201A0AF0871:1001C70010000B1201D8BF0D027F0A0201A0AF0871:0101D7002205:0101D7002205:0A01D8003098FDAF99C2987E002216:0A01D8003098FDAF99C2987E002216:00000001FF:00000001FF
Microcontroladores - 8051
EXEMPLO DE PROGRAMAO
EXEMPLO 8.2EXEMPLO 8.2 CONT.CONT./*/*Programa PlacarPrograma Placar -- V0V0
Ivo R. FontesIvo R. Fontes23.Set.9823.Set.98ver.: 0.0ver.: 0.0Rel.: 0Rel.: 0Comp.: Keil v3.20Comp.: Keil v3.20IMPLEMENTA: TECLADOIMPLEMENTA: TECLADO
HARDWARE:HARDWARE:P1_0P1_0 -- coluna 1coluna 1P1_1P1_1 -- coluna 2coluna 2P1_2P1_2 -- coluna 3coluna 3
P1_3P1_3 -- coluna 4coluna 4P1_4P1_4 -- linha 1linha 1P1_5P1_5 -- linha 2linha 2P1_6P1_6 -- linha 3linha 3P1_7P1_7 -- linha 4linha 4SBUFSBUF -- saida de caracter para o marcadorsaida de caracter para o marcador
-
7/26/2019 Microcontroladores - 8051
94/98
Microcontroladores - 8051
EXEMPLO DE PROGRAMAO
EXEMPLO 8.2EXEMPLO 8.2 CONT.CONT.
MENU:MENU:
00 -- Liga/Desliga campainhaLiga/Desliga campainha11 -- Falta para equipe AFalta para equipe A22 -- Ponta para equipe APonta para equipe A33 -- Flata coletiva/Vantagem para equipe AFlata coletiva/Vantagem para equipe A44 -- Modo crescente/decrescenteModo crescente/decrescente55 -- Zera um marcadorZera um marcador66 -- Incrementa/decrementa setIncrementa/decrementa set77 -- Modo Vantagem/Falta coletivaModo Vantagem/Falta coletiva88 -- Cronometro normal/ajusteCronometro normal/ajuste99 -- Falta para equipe BFalta para equipe BAA -- Ponto para equipe APonto para equipe ABB -- Falta coletiva/vantagem para equipe AFalta coletiva/vantagem para equipe A
CC -- Cronemetro crescente/decrescenteCronemetro crescente/decrescenteDD -- Zera cronometroZera cronometroEE -- Modo Cronometro Basquete/VoleiModo Cronometro Basquete/VoleiFF -- Cronometro Inicia/ParaCronometro Inicia/Para
*/*/
Microcontroladores - 8051
EXEMPLO DE PROGRAMAO
EXEMPLO 8.1EXEMPLO 8.1 CONT.CONT./*/*--ARQUIVOS DE DEFINICOES EXTERNOSARQUIVOS DE DEFINICOES EXTERNOS----------------------------------------------------------------------*/*/#include #include
/*/*TECLADO DECODER:TECLADO DECODER:*/*/unsigned charunsigned char char_out;char_out;unsigned charunsigned char linha,linha,
llinha,llinha,coluna,coluna,lcoluna,lcoluna,key;key;
unsigned char decoder[4][4]=unsigned char decoder[4][4]={{
{0x30,0x34,0x38,0x43},{0x30,0x34,0x38,0x43},{0x31,0x35,0x39,0x44},{0x31,0x35,0x39,0x44},{0x32,0x36,0x41,0x45},{0x32,0x36,0x41,0x45},{0x33,0x37,0x42,0x46}{0x33,0x37,0x42,0x46}
};};
-
7/26/2019 Microcontroladores - 8051
95/98
Microcontroladores - 8051
EXEMPLO DE PROGRAMAO
EXEMPLO 8.2EXEMPLO 8.2 CONT.CONT.
/*/*--PROTOTIPOSPROTOTIPOS --------------------------------------------------------------------------------------------------------------*/*/
void adj_hardware(void)void adj_hardware(void){{/*/*funcao: ajusta parametros de hardwarefuncao: ajusta parametros de hardware*/*/
TMOD = 0x21;TMOD = 0x21; /* Timer1 (baud/* Timer1 (baud--rate) Timer0 16rate) Timer0 16--bit counter */bit counter */TH1 = 0xe8;TH1 = 0xe8; /* XTAL=11.0952MHz auto load/* XTAL=11.0952MHz auto load -- 1200 BPS */1200 BPS */TL1 = 0xe8;TL1 = 0xe8;TCON = 0x45;TCON = 0x45; /* TurnOn Timer1/* TurnOn Timer1 -- Interrupt by edge */Interrupt by edge */SCON = 0x52;SCON = 0x52; /* SIO mode 1/* SIO mode 1 -- receive enabled */receive enabled */
} /* adj_hardware */} /* adj_hardware */
/*/*--------------------------------------------------------------------------------------------------------------------------------------*/*/
Microcontroladores - 8051
EXEMPLO DE PROGRAMAO
EXEMPLO 8.2EXEMPLO 8.2 CONT.CONT.
void nputchar(unsigned char x)void nputchar(unsigned char x){{
while(!TI);while(!TI);TI=0;TI=0;SBUF=x;SBUF=x;
} /* nputchar */} /* nputchar */
/*========= PROGRAMA PRINCIPAL ===================*//*========= PROGRAMA PRINCIPAL ===================*/
void main(void)void main(void)
{{unsigned intunsigned int contador;contador;
adj_hardware();adj_hardware();
-
7/26/2019 Microcontroladores - 8051
96/98
Microcontroladores - 8051
EXEMPLO DE PROGRAMAO
EXEMPLO 8.2EXEMPLO 8.2 CONT.CONT.
while(1)while(1){{
lcoluna=1;lcoluna=1;dodo{{
lcoluna*=2;lcoluna*=2;if(lcoluna>8)if(lcoluna>8)
lcoluna=1;lcoluna=1;P1=~lcoluna;P1=~lcoluna;
}while(P1>0xf0);}while(P1>0xf0);llinha=~((P1/16)|0xf0);llinha=~((P1/16)|0xf0);while(P1
-
7/26/2019 Microcontroladores - 8051
97/98
Microcontroladores - 8051
EXEMPLO DE PROGRAMAO
EXEMPLO 8.2EXEMPLO 8.2 CONT.CONT.
key=decoder[linha][coluna];key=decoder[linha][coluna];nputchar(key);nputchar(key);P3_7=0;P3_7=0;for(contador=0;contador
-
7/26/2019 Microcontroladores - 8051
98/98
Microcontroladores - 8051
EXEMPLO DE PROGRAMAO
EXEMPLO 8.3EXEMPLO 8.3
IRKBD_R2IRKBD_R2DIAGRAMADIAGRAMA
AT89C2051
VCC VCC
VCC
RX
TX
VCC