Microcontroladores - 8051

download Microcontroladores - 8051

of 98

Transcript of Microcontroladores - 8051

  • 7/26/2019 Microcontroladores - 8051

    1/98

    MicrocontroladoresMicrocontroladores

    Prof. Dr. Ivo Reis Fontes

    [email protected]

    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

    [email protected]

    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

    [email protected]

    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