Microcontroladores - PowerPoint PPT Presentation

About This Presentation
Title:

Microcontroladores

Description:

Title: Microcontroladores - julho2003 Author: Ricardo Pannain Last modified by. Created Date: 5/14/2001 6:14:31 PM Document presentation format – PowerPoint PPT presentation

Number of Views:57
Avg rating:3.0/5.0
Slides: 68
Provided by: Ricardo84
Category:

less

Transcript and Presenter's Notes

Title: Microcontroladores


1
Microcontroladores
2
Microcontroladores - Tópicos
  • Conceitos Básicos de Arquitetura de Computadores
  • Arquitetura Básica de um Microcontrolador
  • Estudo de caso PIC 16F84
  • Instruction Set PIC 16F84
  • Programando em Linguagem de Montagem
  • Sistema de Desenvolvimento MPLAB
  • Exemplos de utilização
  • Referências Bibliográficas

3
1. Conceitos Básicos de Arquitetura de
Computadores
  • Arquitetura Havard X von Neuman

4
1. Conceitos Básicos de Arquitetura de
Computadores
  • Organização Básica de um Computador Digital

5
1. Conceitos Básicos de Arquitetura de
Computadores
  • Organização Básica de um Computador Digital

6
1. Conceitos Básicos de Arquitetura de
Computadores
  • Arquitetura RISC

2
4
6
8
1
0
T
i
m
e
I
F
I
D
E
X
W
B
M
E
M



7
1. Conceitos Básicos de Arquitetura de
Computadores
  • Arquitetura RISC Execução de instruções

8
1. Conceitos Básicos de Arquitetura de
Computadores
  • RISC- Execução de instruções Data Hazard

9
1. Conceitos Básicos de Arquitetura de
Computadores
  • RISC- Execução de instruções Data Hazard

10
1. Conceitos Básicos de Arquitetura de
Computadores
  • RISC- Execução de instruções Data Hazard

11
1. Conceitos Básicos de Arquitetura de
Computadores
  • Exemplo de Arquitetura RISC - MIPS

12
2. Arquitetura Básica de um Microcontrolador
  • Microcontrolador

13
2. Arquitetura Básica de um Microcontrolador
  • Microcontrolador

14
2. Arquitetura Básica de um Microcontrolador
  • Microcontrolador Unidade de Memória

15
2. Arquitetura Básica de um Microcontrolador
  • Microcontrolador Unidade Central de
    Processamento

16
2. Arquitetura Básica de um Microcontrolador
  • Microcontrolador CPU ? Memória

17
2. Arquitetura Básica de um Microcontrolador
  • Microcontrolador Unidade de E/S
  • Portas de entrada, saída e bi-direcionais

18
2. Arquitetura Básica de um Microcontrolador
  • Microcontrolador Porta Serial

19
2. Arquitetura Básica de um Microcontrolador
  • Microcontrolador Unidade de Timer

20
2. Arquitetura Básica de um Microcontrolador
  • Microcontrolador Watchdog

21
2. Arquitetura Básica de um Microcontrolador
  • Microcontrolador Conversor A/D

22
3. Estudo de Caso PIC 16F84
  • Microcontrolador PIC 16F84
  • Microcontrolador RISC de 8 bits

23
3. Estudo de Caso PIC 16F84
  • Memória Flash Memória de Programa
  • Memória EEPROM Memória de Dados (que devem ser
  • mantidos sem alimentação)
  • Memória RAM Memória de Dados (usada pelo
    programa durante sua execução)
  • Free-Run Timer Registrador de 8 bits que
    trabalha independente do programa, que é
    incrementado a cada 4 ciclos de clock
  • Unidade Central de Processamento

24
3. Estudo de Caso PIC 16F84
  • Aplicações
  • Aplicações automobilísticas
  • Controle de equipamentos industriais
  • Tranca de portas
  • Dispositivos de segurança

25
3. Estudo de Caso PIC 16F84
  • Ciclo de instrução/Clock

26
3. Estudo de Caso PIC 16F84
  • Pipelining

27
3. Estudo de Caso PIC 16F84
  • Pinagem

28
3. Estudo de Caso PIC 16F84
  • Pinagem
  • Pin no.1 RA2 Second pin on port A. Has no
    additional function
  • Pin no.2 RA3 Third pin on port A. Has no
    additional function.
  • Pin no.3 RA4 Fourth pin on port A. TOCK1 which
    functions as a timer is also found on this pin
  • Pin no.4 MCLR Reset input and Vpp programming
    voltage of a microcontroller
  • Pin no.5 Vss Ground of power supply.
  • Pin no.6 RB0 Zero pin on port B. Interrupt input
    is an additional function.
  • Pin no.7 RB1 First pin on port B. No additional
    function.
  • Pin no.8 RB2 Second pin on port B. No additional
    function.
  • Pin no.9 RB3 Third pin on port B. No additional
    function.
  • Pin no.10 RB4 Fourth pin on port B. No
    additional function.
  • Pin no.11 RB5 Fifth pin on port B. No additional
    function.
  • Pin no.12 RB6 Sixth pin on port B. 'Clock' line
    in program mode.
  • Pin no.13 RB7 Seventh pin on port B. 'Data' line
    in program mode.
  • Pin no.14 Vdd Positive power supply pole.
  • Pin no.15 OSC2 Pin assigned for connecting with
    an oscillator
  • Pin no.16 OSC1 Pin assigned for connecting with
    an oscillator
  • Pin no.17 RA2 Second pin on port A. No
    additional function
  • Pin no.18 RA1 First pin on port A. No additional
    function.

29
3. Estudo de Caso PIC 16F84
  • Geração de clock - osciladores

30
3. Estudo de Caso PIC 16F84
  • Reset

31
3. Estudo de Caso PIC 16F84
  • Unidade Central de Processamento

32
3. Estudo de Caso PIC 16F84
  • Unidade Lógica e Aritmética

33
3. Estudo de Caso PIC 16F84
  • PIC 16F84 - Diagrama de Blocos

34
3. Estudo de Caso PIC 16F84
  • Registro de Estado

35
3. Estudo de Caso PIC 16F84
  • Registro de Estado
  • bit 0 - C - bit de carry
  • bit 1 - DC - bit de carry para operações BCD
  • bit 2 - Z - bit de zero
  • bit 3 - PD - Powder-down 1 quando a fonte é
    ligada e 0 quando executa instrução sleep
  • bit 4 - TO - Time-out 0 - watchdog overflow e
    1 - caso contrário
  • bit 65 - RP1-RP0 - bits de seleção de bancos00
    banco zero e 01 banco 1 para endereçamento
    direto de memória
  • bit 7 - IRP (Register Bank Select) seleciona
    banco de memória para endereçamento indireto de
    memória - 1 banco 2 e 3 0 banco 0 e 1

36
3. Estudo de Caso PIC 16F84
  • Registro de Opção

37
3. Estudo de Caso PIC 16F84
  • Registro de Opção

38
3. Estudo de Caso PIC 16F84
  • Registro de Opção
  • bit 02 - PS0, PS1,PS2 - Define escala do timer
  • bit 3 PSA assinala presacaler entre TMR0 e
    watchdog.
  • bit 4 T0SE Source Edge Select
  • bit 5 TOCS TMR0 Clock Source Select
  • bit 6 INTEDG Interrupt Edge Select
  • bit 7 RBPU PORTB Pull-up Enable

39
3. Estudo de Caso PIC 16F84
  • Portas registrador conectado a pinos de entrada
    e saída
  • TRISA 85h
  • TRSIB 86h

40
3. Estudo de Caso PIC 16F84
  • PORTB
  • Tem um resistor pull-up interno pra definição de
    nível 1 reset no RPBU bit do registrador de
    opção
  • Definição de input/output 0/1
  • Exemplo pinos 0,1,2 e 3 como entrada e 4,5,6 e
    7 como saída
  • clrf STATUS Bank0
  • clrf PORTB PORTB0
  • bsf STATUS,RP0 Bank1
  • movlw 0x0f define pinos de entrada e saída
  • movwf TRISB escreve no registrador TRISB

41
3. Estudo de Caso PIC 16F84
  • PORTA
  • Pino 4 tem dupla função entrada externa para o
    timer TMR0 (programação através do bit T0CS do
    regsitrador de opção)
  • Definição de input/output 0/1
  • Exemplo pinos 0,1,2, 3 e 4 como entrada e 5,6 e
    7 como saída
  • clrf STATUS Bank0
  • clrf PORTA PORTA0
  • bsf STATUS,RP0 Bank1
  • movlw 0x1f define pinos de entrada e saída
  • movwf TRISA escreve no registrador TRISA

42
3. Estudo de Caso PIC 16F84
  • Organização
  • de Memória
  • Dois bancos de
  • memória dados e
  • programa.
  • Dados EEPROM e
  • registradores GPR
  • Programa FLASH

43
3. Estudo de Caso PIC 16F84
  • Memória de Programa
  • Memória FLASH 1024 X 14 bits
  • endereço 0000h reset
  • endereço 0004h vetor de interrupção
  • Memória de Dados
  • EEPROM 64 X 8
  • Não é diretamente acessada. É acessada através
    EEADR e EEDATA
  • RAM registradores GPR (General Purpose Register)
  • localização 0x0C até 0x4F 68 posições
  • Registrador SFR (Special Function Register)
  • Ocupam as 12 primeiras posições dos dois bancos
    de memória

44
3. Estudo de Caso PIC 16F84
  • Bancos de Memória
  • Selecionados via bits RP0 e RP1 do registrador de
    STATUS
  • Exemplo
  • bcf STATUS, RP0 zera o bit RP0 do registrador
    STATUS,
  • selecionando o banco 0
  • bsf STATUS, RP0 seta o bit RP0 do registrador
    STATUS,
  • selecionando o banco 1
  • MACROS
  • BANK0 macro BANK1 macro
  • bcf STATUS, RP0 bsf STATUS, RP0
  • endm endm

45
3. Estudo de Caso PIC 16F84
  • Program Counter PC registrador de 13 bits
  • Contém o endereço da instrução que irá ser
    executada
  • Pilha 8 palavras de 13 bits
  • instruções CALL, RETURN, RETWL ou RETFIE

46
3. Estudo de Caso PIC 16F84
  • Programação
  • para utilização da memória de programa, o
    microcontrolador deve estar setado em um modo
    especial, conectando o pino MCLR ao Vdd (4,5 a
    5,5 V). A Memória de programa é programada
    serialmente usando dois pinos data/clock.
  • Modos de endereçamento direto ou indireto

47
3. Estudo de Caso PIC 16F84
  • Endereçamento direto
  • Exemplo de acesso
  • a registradores SFR
  • bsf STATUS, RP0 Bankl
  • movlw 0xFF      w0xFF
  • movwf TRISA     address of
  • TRISA
  • register
    is
  • taken
  • from

  • instruction
  • movwf

48
3. Estudo de Caso PIC 16F84
  • Endereçamento indireto
  • Exemplo
  • Apagar 16 posições da RAM
  • movlw 0x0C endereço inicial
  • movwf FSR FSR aponta 0x0C
  • LOOP clrf INDF INDF 0
  • incf FSR endereço
  • btfss FSR,4 tudo apagado?
  • goto loop não, volta
  • CONTINUE
  • sim, OK

49
3. Estudo de Caso PIC 16F84
  • Interrupções

50
3. Estudo de Caso PIC 16F84
  • Interrupções
  • Registrador de Controle INTCON

51
3. Estudo de Caso PIC 16F84
  • bit 0 RBIF (RB Port Change Interrupt Flag bit)
    Bit which informs about changes on pins 4, 5, 6
    and 7 of port B.1at least one pin has changed
    its status0no change occured on any of the
    pinsbit 1 INTF (INT External Interrupt Flag
    bit) External interrupt occured.1interrupt
    occured0interrupt did not occurIf a rising or
    falling edge was detected on pin RB0/INT, (which
    is defined with bit INTEDG in OPTION register),
    bit INTF is set. Bit must be cleared in interrupt
    subprogram in order to detect the next
    interrupt.bit 2 T0IF (TMR0 Overflow Interrupt
    Flag bit) Overflow of counter TMR0.1 counter
    changed its status from FFh to 00h0overflow did
    not occurBit must be cleared in program in order
    for an interrupt to be detected.

52
3. Estudo de Caso PIC 16F84
  • bit 3 RBIE (RB port change Interrupt Enable bit)
    Enables interrupts to occur at the change of
    status of pins 4, 5, 6, and 7 of port B. 1
    enables interrupts at the change of
    status0interrupts disabled at the change of
    statusIf RBIE and RBIF were simultaneously set,
    an interrupt would occur.bit 4 INTE (INT
    External Interrupt Enable bit) Bit which enables
    external interrupt from pin RB0/INT.1external
    interrupt enabled0external interrupt
    disabledIf INTE and INTF were set
    simultaneously, an interrupt would occur.bit 5
    T0IE (TMR0 Overflow Interrupt Enable bit) Bit
    which enables interrupts during counter TMR0
    overflow.1interrupt enabled0interrupt
    disabledIf T0IE and T0IF were set
    simultaneously, interrupt would occur.

53
3. Estudo de Caso PIC 16F84
  • bit 6 EEIE (EEPROM Write Complete Interrupt
    Enable bit) Bit which enables an interrupt at the
    end of a writing routine to EEPROM1interrupt
    enabled0interrupt disabledIf EEIE and EEIF
    (which is in EECON1 register) were set
    simultaneously , an interrupt would occur.
  • bit 7 GIE (Global Interrupt Enable bit) Bit
    which enables or disables all interrupts.1all
    interrupts are enabled0all interrupts are
    disabled

54
3. Estudo de Caso PIC 16F84
  • Tipos de interrupções
  • Término de escrita de dados na EEPROM
  • TMR0 interrupção causada por timer overflow
  • Interrupção pela alteração dos pinos RB4 à RB7 da
    porta B
  • Interrupção externa do pino do microcontrolador
    RB0/INT

55
3. Estudo de Caso PIC 16F84
  • PUSH e POP no tratamento de interrupções

56
3. Estudo de Caso PIC 16F84
  • Exemplo de como salvar registradores no
    tratamento de interrupção
  • Testar o banco corrente
  • Armazenar o registrador W do banco corrente
  • Armazenar o registrador STATUS no banco 0
  • Executar a rotina de interrupção (ISR)
  • Restaurar o registrador STATUS
  • Restaurar o registrado W

57
3. Estudo de Caso PIC 16F84
  • Push
  • btfss STATUS, RP0 banco 0
  • goto RPOCLEAR sim
  • bcf STATUS, RP0 não, vá para banco 0
  • movwf W_TEMP salva registrador W
  • swapf STATUS, W W lt- STATUS
  • movwf STATUS_TEMP STATUS_TEMP lt- W
  • bsf STATUS_TEMP,1 RP0(STATUS_TEMP)1
  • goto ISR_code push completo
  • RPOCLEAR
  • movwf W_TEMP salvo registrador W
  • swapf STATUS_W W lt- STATUS
  • movwf STATUS_TEMP STATUS_TEMP lt- W
  • ISR_code
  • rotina de interrupção

58
3. Estudo de Caso PIC 16F84
  • Pop
  • swapf STAUS_TEMP W lt- STATUS_TEMP
  • movwf STATUS STATUS lt- W
  • btfss STATUS, RP0 banco 1 ?
  • goto Return_WREG não
  • bcf STATUS, RP0 sim vá para banco 0
  • swapf W_TEMP, F retorna conteúdo de W
  • swapf W_TEMP, W
  • bsf STATUS_RP0 VOLTO BANCO 1
  • retfie terminou POP
  • Return_WREG
  • swapf W_TEMP, F retorna conteúdo de W
  • swapf W_TEMP, W
  • retfie terminou POP

59
3. Estudo de Caso PIC 16F84
  • MACROS para POP e PUSH
  • PUSH macro
  • movwf W_TEMP W_TEMP lt- W
  • swapf W_TEMP,F swap W_TEMP,F
  • BANK1 macro para mudar para banco 1
  • swapf OPTION_REG, W W lt- OPTION_REG
  • movwf OPTION_TEMP OPTION_TEMP lt- W
  • BANK0 macro para mudar para banco 0
  • swapf STATUS,W W lt- STATUS
  • movwf STAT_TEMP STAT_TEMP lt- W
  • endm
  • POP macro
  • swapf STA_TEMP,W Wlt- STAT_TEMP
  • movwf STATUS STATUS lt-W
  • BANK1 macro para mudar para banco 1
  • swapf OPTION_TEMP,W Wlt-OPTIO_TEMP
  • movwf OPTION_REG OPTION_REG lt- W
  • BANK0 macro para mudar para banco 0

60
3. Estudo de Caso PIC 16F84
  • Interrupção externa via pino RB0/INT do
    microcontrolador
  • triggered pela borda de subida do sinal ( se bit
    INTEDG1 no OPTION6) ou de descida (INTEDG 0)
  • quando temos sinal em INT, INTF 1(INTCON1)
  • para desabilitar, fazer INTE 0 (INTCON4)
  • Interrupção TMR0 counter overflow
  • seta T0IF (INTCON2)
  • Interrupção pela alteração dos pinos 4,5,6 e 7 da
    porta B
  • seta RBIF (INTCON0)
  • Interrupção de fim de escrita na EEPROM
  • seta EEIF (INTCON6)

61
3. Estudo de Caso PIC 16F84
  • Inicialização de interrupções
  • Inicialização da interrupção externa no pino RB0
  • clrf INTCON todas interrupções
    desabilitadas
  • movlw B00010000 apenas a interrupção
    externa é habilitada
  • bsf INTCON, GIE ocorrências de
    interrupções permitida

62
3. Estudo de Caso PIC 16F84
  • Exemplo Como o PIC16F84 tem apenas uma
    localização onde o endereço de uma sub-rotina é
    armazenado, precisamos verificar se existe uma
    rotina de interrupção sendo executada, quando
    ocorre uma outra interrupção.
  • org ISR_ADDR endereço da rotina de
    interrupção
  • btfsc INTCON, GIE GIE está OFF ?
  • goto ISR_ADDR não, volte para o início
  • PUSH macro PUSH
  • btfsc INTCON, RBIF mudanças portb4..7 ?
  • goto ISR_PORTB vá para o tratamento relativo
    às mudanças
  • btfsc INTCON, INTF ocorreu interrupção
    externa ?
  • goto ISR_RB0 vá para o tratamento relativo à
    int. ext.
  • btfsc INTCON, TOIF overflow do timer TMRO ?
  • goto ISR_TMRO vá p/ o tratamento relativo
    overflow timer
  • BANK1 macro BANK1
  • btfsc EECON1, EEIF fim da escrita na EEPROM
    ?
  • goto ISR_EEPROM vá p/ o tratamento relativo
    fim escrita EEPROM
  • BANK0 macro BANK0

63
3. Estudo de Caso PIC 16F84
  • Exemplo continuação
  • ISR_PORTB
  • goto END_ISR
  • ISR_RB0
  • goto END_ISR
  • ISR_TMRO
  • goto END_ISR
  • ISR_EEPROM
  • goto END_ISR
  • END_ISR

64
3. Estudo de Caso PIC 16F84
  • Timer TMR0
  • 8 bits (0 a 255)

65
3. Estudo de Caso PIC 16F84
  • Diagrama de tempo de interrupção com o timer
  • transição 255 para 0 T0IF é setado

66
3. Estudo de Caso PIC 16F84
  • Exemplo Determinar o número de voltas de um
    motor

67
3. Estudo de Caso PIC 16F84
  • Exemplo Inicialização do timer pra sinal com
    borda de decida de fonte de clock externo
  • clrf TMRO TRMO 0
  • clrf INTCON interrupções e T0IF0,
    desabilitados
  • bsf STATUS, RP0 banco 1 pelo OPTION_REG
  • movlw B00110001 escala 14, borda de
    descida para clock externo, pull up na
    porta B ativada
  • movwf OPTION_REG OPTION_REG lt- W
  • TO_OVFL
  • btfss INTCON, T0IF testa bit overflow
  • goto TO_OVFL interrupção não ocorreu, espere
  • parte do programa que processa o número de
    voltas do motor
  • goto TO_OVFL
Write a Comment
User Comments (0)
About PowerShow.com