P. 1
microcontroladores_unicamp

microcontroladores_unicamp

|Views: 102|Likes:
Published by Alexandre Lopes

More info:

Published by: Alexandre Lopes on Mar 27, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PPT, PDF, TXT or read online from Scribd
See more
See less

01/23/2013

pdf

text

original

Microcontroladores

09/22/09

Ricardo Pannain

1

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

09/22/09

Ricardo Pannain

2

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

09/22/09

Ricardo Pannain

3

CPU DISPOSITIVOS DE E/S 09/22/09 Ricardo Pannain 4 . DE PROPÓSITO GERAL REGS.1. ESPECIAIS UNIDADE DE ENTRADA UNID. Conceitos Básicos de Arquitetura de Computadores ‡ Organização Básica de um Computador Digital MEMÓRIA PRINCIPAL Barramento de dados CLOCK Barramento de endereços Barramento de controle REGS. DE E SAÍDA UNIDADE DE ARITMÉTICA E LÓGICA CONTROLE UNIDADE CENTRAL DE PROCESSAMENTO .

1. UNIDADE DE ARITMÉTICA E LÓGICA UNID.. B D F .CPU 09/22/09 Ricardo Pannain 5 ... DE CONTROLE RDM REM PC RI SP UNIDADE CENTRAL DE PROCESSAMENTO .. Conceitos Básicos de Arquitetura de Computadores ‡ Organização Básica de um Computador Digital MEMÓRIA Barramento de dados Barramento de endereços Barramento de controle A C E .

Conceitos Básicos de Arquitetura de Computadores ‡ Arquitetura RISC 2 4 6 8 10 Ti I I X W 09/22/09 Ricardo Pannain 6 .1.

..1. 3 ($ ) £ ¢ ¢¢ lw $ . Conceitos Básicos de Arquitetura de Computadores ‡ Arquitetura RISC ± Execução de instruções ¢ ¢¢ lw $ . ($ ) Instruction fetch Reg Instruction fetch ALU Reg Instruction fetch Data access ALU Reg Reg Data access ALU Reg Data access Reg ns ns ns ¡ ¤ ¡ £ ¢¡   ¥ ¤ £ Program execution Time order (in instructions)   ¢ ¢¢ lw $3. ($ ) ($ ) Program execution Time order (in instructions) ns ns ns ns 09/22/09 Ricardo Pannain £ £ £ £ £ ¢ ¢¢ lw $3. ($ ) £ ¢ ¢¢¡ ¡ lw $ . ($ ) Instruction Reg fetch ALU Data access Reg Instruction Reg fetch ALU Data access Reg Instruction fetch ns ns ns ¡   ¡ ¥ ¡ ¤ ¡ £ ¢¡   ¥ ¤ £ £ £ £ £ . 7 . 3     ¢ ¢¢¡ ¡ lw $ .

1. Conceitos Básicos de Arquitetura de Computadores ‡ RISC.Execução de instruções: Data Hazard Ti (i cl ck cycl s) 1 2 4 5 6 7 8 10 10 10 10 10/± 20 ± 20 ± 20 ± 20 l r r f ist r 2 : r c ti r r (i i str cti s) 09/22/09 Ricardo Pannain " ©¨ §  # s 15. 2 I ©¨ § ¦ " ¦ ©¨ § r 1 . 2 . 100( 2 ) I ©¨ § ¦ " © ¨§ 1 4. 5 I ©¨ § ¦ " ¦ ¦    s b 2 . 2 . I     © ¨§  ¦    © ¨§  ¨ ¦  ¨ ©¨   ¨ $    ¨         9 ± 20      ¨  !    ¨ ¨   ©    !   !!    8 . 2 I ©¨§ ¦ " ¦ ©¨ § 1 2. 6. 1.

$ ( and $ . $ .1. Conceitos Básicos de Arquitetura de Computadores ‡ RISC.Execução de instruções: Data Hazard Time (in clock c cles) 09/22/09 2 slt $ . $ ) or $ . $ . ($ ) IM Reg DM Reg IM Reg DM Reg IM Reg DM Reg IM Reg DM Reg IM Reg DM Reg Ricardo Pannain 4 3 2 ) ( & % Program CC execution order (in instructions) CC CC 3 CC ' 0 CC CC CC CC CC & ' ) % & ' 4 3 9 . $ . $ & add $ . $ . $ % 1& & lw $ .

I 99 99 99 99 8 76 99 5 99 @ 99 8 76 99 7 5 E 7 87 H C 7D GS 99 C B 7A @ E E E E E @ E 9 ± 20 BC D B B H 7 C P H BC D 7I7 H AG 8C F E BG P E D PP E C G 10 . 5 I 87 6 5 Q 5 5 E E E s b 2 . 2 I 87 6 5 Q 5 87 6 r 1 . 2 . 6.1. 1. 2 I 876 5 Q 5 87 6 1 2. 100( 2 ) I 87 6 5 Q 8 76 1 4. Conceitos Básicos de Arquitetura de Computadores ‡ RISC. 2 .Execução de instruções: Data Hazard Ti (i cl ck cycl s) 1 2 4 5 6 7 8 10 10 10 10 10/± 20 ± 20 ± 20 ± 20 l r r f ist r 2 : r c ti r r (i i str cti s) 09/22/09 Ricardo Pannain Q 87 6 E ER s 15.

1.MIPS PC Src 0 u x 1 I / X I str cti W rit t c tr l 0 Instr c tion [15± 11] 1 st 09/22/09 Ricardo Pannain rqp c I s tr c ti [20± 16] p dt Yv X Y i t T WV p c q V x w Yv ‚ WU W TY ‚ WdT w y Y 16 € I s tr c ti [15± 0] 2 6 W Yt t d 1 W rit t 0 ‚ WU W t memory t tx ‚ WU W W rit r ist r t 2 r s lt Y dd c 0 r ss t v W d tt d Y I s tr c ti ry r ist r 2 ist rs U W qp cY q p c VY WT V U T WT V U T U a PC ress t W d ttv d Y r ist r 1 t 1 Z r t t 1 if fe bg h gf rc Writ f e yq p c ift l ft 2 u Tt s Writ Y W uy W Yt t d Y W Y wY W t td d tYv Y w Yv Y v W dtw Y Y Y v W dtw Y Y if f 4 U W d d c Y dd c h b` ` x„ I /I r s lt r c s  X s  ƒ s  ƒ Control  ƒ ƒ W /W W s ƒx W X X WT V V U Y T ddc  X/ d dc 11 . Conceitos Básicos de Arquitetura de Computadores ‡ Exemplo de Arquitetura RISC .

2. Arquitetura Básica de um Microcontrolador ‡ Microcontrolador 09/22/09 Ricardo Pannain 12 .

2. Arquitetura Básica de um Microcontrolador ‡ Microcontrolador 09/22/09 Ricardo Pannain 13 .

Arquitetura Básica de um Microcontrolador ‡ Microcontrolador ± Unidade de Memória 09/22/09 Ricardo Pannain 14 .2.

Arquitetura Básica de um Microcontrolador ‡ Microcontrolador ± Unidade Central de Processamento 09/22/09 Ricardo Pannain 15 .2.

Arquitetura Básica de um Microcontrolador ‡ Microcontrolador ± CPU Memória 09/22/09 Ricardo Pannain 16 .2.

Arquitetura Básica de um Microcontrolador ‡ Microcontrolador ± Unidade de E/S ± Portas de entrada. saída e bi-direcionais 09/22/09 Ricardo Pannain 17 .2.

2. Arquitetura Básica de um Microcontrolador ‡ Microcontrolador ± Porta Serial 09/22/09 Ricardo Pannain 18 .

2. Arquitetura Básica de um Microcontrolador ‡ Microcontrolador ± Unidade de Timer 09/22/09 Ricardo Pannain 19 .

Arquitetura Básica de um Microcontrolador ‡ Microcontrolador ± Watchdog 09/22/09 Ricardo Pannain 20 .2.

2. Arquitetura Básica de um Microcontrolador ‡ Microcontrolador ± Conversor A/D 09/22/09 Ricardo Pannain 21 .

3. Estudo de Caso PIC 16F84 ‡ Microcontrolador PIC 16F84 ± Microcontrolador RISC de 8 bits 09/22/09 Ricardo Pannain 22 .

3. que é incrementado a cada 4 ciclos de clock ‡ Unidade Central de Processamento 09/22/09 Ricardo Pannain 23 . 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.

Estudo de Caso PIC 16F84 ‡ Aplicações ± Aplicações automobilísticas ± Controle de equipamentos industriais ± Tranca de portas ± Dispositivos de segurança 09/22/09 Ricardo Pannain 24 .3.

3. Estudo de Caso PIC 16F84 ‡ Ciclo de instrução/Clock 09/22/09 Ricardo Pannain 25 .

3. Estudo de Caso PIC 16F84 ‡ Pipelining 09/22/09 Ricardo Pannain 26 .

3. Estudo de Caso PIC 16F84 ‡ Pinagem 09/22/09 Ricardo Pannain 27 .

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

3. Estudo de Caso PIC 16F84 ‡ Geração de clock .osciladores 09/22/09 Ricardo Pannain 29 .

3. Estudo de Caso PIC 16F84 ‡ Reset 09/22/09 Ricardo Pannain 30 .

3. Estudo de Caso PIC 16F84 ‡ Unidade Central de Processamento 09/22/09 Ricardo Pannain 31 .

Estudo de Caso PIC 16F84 ‡ Unidade Lógica e Aritmética 09/22/09 Ricardo Pannain 32 .3.

3. Estudo de Caso PIC 16F84 ‡ PIC 16F84 - Diagrama de Blocos

09/22/09

Ricardo Pannain

33

3. Estudo de Caso PIC 16F84 ‡ Registro de Estado

09/22/09

Ricardo Pannain

34

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 6:5 - RP1-RP0 - bits de seleção de bancos:00 = 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
09/22/09 Ricardo Pannain 35

3. Estudo de Caso PIC 16F84 ‡ Registro de Opção 09/22/09 Ricardo Pannain 36 .

Estudo de Caso PIC 16F84 ‡ Registro de Opção 09/22/09 Ricardo Pannain 37 .3.

Estudo de Caso PIC 16F84 ‡ Registro de Opção ‡ ‡ ‡ ‡ ‡ ‡ bit 0:2 .PS0. PS1.3. 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 09/22/09 Ricardo Pannain 38 .Define escala do timer bit 3 ± PSA: assinala presacaler entre TMR0 e watchdog.PS2 .

Estudo de Caso PIC 16F84 ‡ Portas: registrador conectado a pinos de entrada e saída ‡ TRISA ± 85h ‡ TRSIB ± 86h 09/22/09 Ricardo Pannain 39 .3.

6 e 7 como saída: clrf STATUS . PORTB=0 bsf STATUS. Bank0 clrf PORTB . define pinos de entrada e saída movwf TRISB .RP0 .1.5.2 e 3 como entrada e 4. Bank1 movlw 0x0f .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. escreve no registrador TRISB 09/22/09 Ricardo Pannain 40 .

3.1. Bank0 clrf PORTA .RP0 . 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. define pinos de entrada e saída movwf TRISA . escreve no registrador TRISA 09/22/09 Ricardo Pannain 41 .2. PORTA=0 bsf STATUS.6 e 7 como saída: clrf STATUS . Bank1 movlw 0x1f . 3 e 4 como entrada e 5.

‡ Dados: EEPROM e registradores GPR ‡ Programa: FLASH 09/22/09 Ricardo Pannain 42 . Estudo de Caso PIC 16F84 ‡ Organização de Memória: ‡ Dois bancos de memória: dados e programa.3.

3. É 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 09/22/09 Ricardo Pannain 43 . 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.

selecionando o banco 0 bsf STATUS. RP0 endm endm 09/22/09 Ricardo Pannain 44 . Estudo de Caso PIC 16F84 ‡ Bancos de Memória ± Selecionados via bits RP0 e RP1 do registrador de STATUS ± Exemplo: bcf STATUS. zera o bit RP0 do registrador STATUS. RP0 bsf STATUS. .3. seta o bit RP0 do registrador STATUS. RP0 . selecionando o banco 1 ± MACROS BANK0 macro BANK1 macro bcf STATUS. RP0 . .

RETURN. 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.3. RETWL ou RETFIE 09/22/09 Ricardo Pannain 45 .

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

taken . RP0 .Bankl movlw 0xFF .3.from .instruction . Estudo de Caso PIC 16F84 ‡ Endereçamento direto ‡ Exemplo de acesso a registradores SFR bsf STATUS.address of .register is .TRISA .w=0xFF movwf TRISA .movwf 09/22/09 Ricardo Pannain 47 .

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

Estudo de Caso PIC 16F84 ‡ Interrupções 09/22/09 Ricardo Pannain 49 .3.

3. Estudo de Caso PIC 16F84 ‡ Interrupções ± Registrador de Controle INTCON 09/22/09 Ricardo Pannain 50 .

bit INTF is set. 1=at least one pin has changed its status 0=no change occured on any of the pins bit 1 INTF (INT External Interrupt Flag bit) External interrupt occured. 5. 1=interrupt occured 0=interrupt did not occur If a rising or falling edge was detected on pin RB0/INT. 6 and 7 of port B. 1= counter changed its status from FFh to 00h 0=overflow did not occur Bit must be cleared in program in order for an interrupt to be detected. 09/22/09 Ricardo Pannain 51 . Estudo de Caso PIC 16F84 bit 0 RBIF (RB Port Change Interrupt Flag bit) Bit which informs about changes on pins 4. 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. (which is defined with bit INTEDG in OPTION register).3.

1=external interrupt enabled 0=external interrupt disabled If INTE and INTF were set simultaneously. 1=interrupt enabled 0=interrupt disabled If T0IE and T0IF were set simultaneously. an interrupt would occur. 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. bit 5 T0IE (TMR0 Overflow Interrupt Enable bit) Bit which enables interrupts during counter TMR0 overflow. 1= enables interrupts at the change of status 0=interrupts disabled at the change of status If RBIE and RBIF were simultaneously set. and 7 of port B. bit 4 INTE (INT External Interrupt Enable bit) Bit which enables external interrupt from pin RB0/INT. 6. an interrupt would occur. interrupt would occur. 09/22/09 Ricardo Pannain 52 .3. 5.

3. 1=all interrupts are enabled 0=all interrupts are disabled 09/22/09 Ricardo Pannain 53 . 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 EEPROM 1=interrupt enabled 0=interrupt disabled If EEIE and EEIF (which is in EECON1 register) were set simultaneously . bit 7 GIE (Global Interrupt Enable bit) Bit which enables or disables all interrupts. an interrupt would occur.

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 09/22/09 Ricardo Pannain 54 .3.

Estudo de Caso PIC 16F84 ‡ PUSH e POP no tratamento de interrupções 09/22/09 Ricardo Pannain 55 .3.

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 09/22/09 Ricardo Pannain 56 .

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

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

W . macro para mudar para banco 1 swapf OPTION_REG.STATUS movwf STAT_TEMP . STATUS <-W BANK1 .W .W endm POP macro swapf STA_TEMP. W <.OPTION_TEMP <. W .F BANK1 . W<. macro para mudar para banco 1 swapf OPTION_TEMP.W . macro para mudar para banco 0 swapf W_TEMP.STAT_TEMP movwf STATUS .W_TEMP endm 09/22/09 Ricardo Pannain 59 . swap W_TEMP. W<-OPTIO_TEMP movwf OPTION_REG . OPTION_REG <.3.W swapf W_TEMP.OPTION_REG movwf OPTION_TEMP .F .W BANK0 . Estudo de Caso PIC 16F84 ‡ MACROS para POP e PUSH PUSH macro movwf W_TEMP .W BANK0 . W<. STAT_TEMP <.W . W_TEMP <. macro para mudar para banco 0 swapf STATUS. W <.

6 e 7 da porta B ± seta RBIF (INTCON[0]) ‡ Interrupção de fim de escrita na EEPROM ± seta EEIF (INTCON[6]) 09/22/09 Ricardo Pannain 60 . fazer INTE = 0 (INTCON[4]) ‡ Interrupção TMR0 counter overflow ± seta T0IF (INTCON[2]) ‡ Interrupção pela alteração dos pinos 4. Estudo de Caso PIC 16F84 ‡ Interrupção externa via pino RB0/INT do microcontrolador ± triggered pela borda de subida do sinal ( se bit INTEDG=1 no OPTION[6]) ou de descida (INTEDG = 0) ± quando temos sinal em INT.5. INTF =1(INTCON[1]) ± para desabilitar.3.

GIE . apenas a interrupção externa é habilitada bsf INTCON.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 B¶00010000¶ . ocorrências de interrupções permitida 09/22/09 Ricardo Pannain 61 .

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

goto END_ISR ISR_RB0 . Estudo de Caso PIC 16F84 ‡ Exemplo ± continuação ISR_PORTB . goto END_ISR END_ISR POP RETFIE 09/22/09 . goto END_ISR ISR_TMRO . . macro POP . goto END_ISR ISR_EEPROM . . .3. . retorna e seta o bit GIE Ricardo Pannain 63 .

Estudo de Caso PIC 16F84 ‡ Timer TMR0 ± 8 bits (0 a 255) 09/22/09 Ricardo Pannain 64 .3.

3. Estudo de Caso PIC 16F84
‡ Diagrama de tempo de interrupção com o timer

‡ transição 255 para 0 ± T0IF é setado
09/22/09 Ricardo Pannain 65

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

09/22/09

Ricardo Pannain

66

3. Estudo de Caso PIC 16F84
‡ Exemplo ± Inicialização do timer pra sinal com borda de decida de fonte de clock externo
clrf TMRO clrf INTCON bsf STATUS, RP0 movlw B¶00110001¶ ;TRMO = 0 ;interrupções e T0IF=0, desabilitados ; banco 1 pelo OPTION_REG ; escala 1:4, borda de descida para clock ; externo, pull up na porta B ativada ; OPTION_REG <- W

movwf OPTION_REG 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

09/22/09

Ricardo Pannain

67

4. que representa qualquer registrador SPR ou GPR ± Aritmética e Lógica ± Operações com bit ± Controle do fluxo de execução de um programa 09/22/09 Ricardo Pannain 68 . Conjunto de Instruções ‡ 35 instruções de 14 bits do tipo ± Transferência de dados ‡ Feito entre o registrador work (W) e o registrador f.

4. d = 1 destino f f = endereço de de 7 bits de registrador 09/22/09 Ricardo Pannain 69 . Conjunto de Instruções ‡ Formato das instruções ± Operações com file register ± byte oriented 13 OPCODE 8 7 d 6 f (#FILE) 0 d = 0 destino é W.

Conjunto de Instruções ‡ Formato das instruções .4.continuação ± Operações com file register ± bit oriented 13 OPCODE 10 9 8 7 6 b (bit #) f (#FILE) 0 b = endereço de 3 bits f = endereço de 7 bits de registrador 09/22/09 Ricardo Pannain 70 .

Conjunto de Instruções ‡ Formato das instruções .continuação ± Operações com literais e instruções de controle 13 OPCODE k = imediato de 8 bits 8 7 k (literal) 0 09/22/09 Ricardo Pannain 71 .4.

Conjunto de Instruções ‡ Formato das instruções .4.continuação ± Instruções de controle call e goto 13 OPCODE k = imediato de 11 bits 11 10 k (literal) 0 09/22/09 Ricardo Pannain 72 .

d=0 armazena resultado em W.4. Ricardo Pannain 73 09/22/09 . d=1 no registrador f. default d=1. constante ou label seleção de destino. Conjunto de Instruções ‡ Descrição dos campos das instruções Campo Descrição f W b k d endereço de registradores (0x00 a 0x7F) working register (acumulador) endereço do bit dentro do registrador de 8 bits literal .

d clrw clrf swapf 09/22/09 Operação Flag W <.0 f <.0 f(3:0).(7:4) <swap nibbles em f f(7:4).4.d W <.W f <.k f <. Conjunto de Instruções ± transferência de dados Mnemônico movlw k movwf f movf f.(3:0) Ricardo Pannain 74 Descrição move cte p/ k move W p/ f move d p/ f clear W clear f .

Z C.DC.4.W & f Flag C.f W <.d andlw k andwf f.W + k d <.W + k d <.W + f W <.Z C. Conjunto de Instruções ± Aritmética e Lógica Mnemônico addlw k addwf f.W .d sublw k subwf f.W & k d <.DC.constante W-f W & constante W&f Ricardo Pannain Operação W <.DC.DC.Z C.Z Z Z 75 .d 09/22/09 Descrição W + constante W+f W .

f .d xorlw k xorwf f.d decf f.d incf f.W xor k Z d <.f + 1 Z d <.4.W xor f Z Z d <. Mnemônico iorlw k iorwf f.W | k Z d <.W | f W <. Conjunto de Instruções-Aritmética e Lógica ±cont.1 76 .d 09/22/09 Descrição W | constante W|f W xor constante W xor f incrementa f decrementa f Ricardo Pannain Operação Flag Z W <.

complemento(f) Flag C C Z 09/22/09 Ricardo Pannain 77 .d comf f.4.d Descrição rotate left através do carry rotate right através do carry d <. Conjunto de Instruções-Aritmética e Lógica ±cont. Mnemônico rlf f.d rrf f.

4.d seta bit b de f Operação f(b) <.1 Flag - 09/22/09 Ricardo Pannain 78 .0 f(b) <.b reseta bit b de f bsf f. Conjunto de Instruções ± Operações com Bit Mnemônico Descrição bcf f.

d incfsz f. pula 1 instrução se zero d <.d goto k call k 09/22/09 Flag 79 se f(b) = 0.f +1.4.f -1.b decfsz f. Conjunto de Instruções ± Controle do fluxo de execução de um programa Mnemônico Descrição btfsc f. pula 1 instrução d <.b btfss f. pula 1 instrução se f(b) = 1. pula 1 instrução se zero vai para endereço k chama sub-rotina no endereço k Ricardo Pannain .

continuação Mnemônico return retlw k retfie Descrição retorna da sub-rotina retorna com constante em W retona de interrupção Flag - 09/22/09 Ricardo Pannain 80 .4. Conjunto de Instruções ± Controle do fluxo de execução de um programa .

PD <.0.1. PD <. TO <.0.1.0 81 sleep 09/22/09 .4.1 WDT <. TO <. Conjunto de Instruções ± outras Mnemônico Descrição nop no operation clrwdt limpa watchdog timer vai para o modo standby Ricardo Pannain Operação WDT <.

4. Conjunto de Instruções 09/22/09 Ricardo Pannain 82 .

Programação Assembly ‡ Programação do Microcontrolador 09/22/09 Ricardo Pannain 83 .5.

5. Programação Assembly ‡ Linguagem assembly ± ± ± ± ± Labels Instruções Operandos Diretivas Comentários 09/22/09 Ricardo Pannain 84 .

5. Programação Assembly ‡ Labels 09/22/09 Ricardo Pannain 85 .

Programação Assembly ‡ Instruções 09/22/09 Ricardo Pannain 86 .5.

Programação Assembly ‡ Operandos 09/22/09 Ricardo Pannain 87 .5.

espere .) clrf TMRO clrf INTCON bsf STATUS. pull up na porta B ativada . T0IF . escala 1:4.TRMO = 0 . goto TO_OVFL 09/22/09 Ricardo Pannain 88 . borda de descida para .W clock movwf OPTION_REG TO_OVFL btfss INTCON. RP0 movlw B¶00110001¶ . desabilitados . banco 1 pelo OPTION_REG . Programação Assembly ‡ Comentários (. parte do programa que processa o número de voltas do motor . externo. OPTION_REG <. testa bit overflow goto TO_OVFL .interrupções e T0IF=0.5. interrupção não ocorreu. .

5. Programação Assembly ‡ Diretivas 09/22/09 Ricardo Pannain 89 .

5. Programação Assembly ‡ Diretivas de Controle DESCRIÇÃO dá um significado p/ um texto inclui arquivo no programa define uma constante define uma variável define uma variável define uma constante define um endereço p/ carregar o programa fim do programa DIRETIVAS #define #include constant variable set equ org end 09/22/09 Ricardo Pannain 90 .

Programação Assembly ‡ if else endif while endw ifdef ifndef 09/22/09 Instruções Condicionais DESCRIÇÃO branch condicional alternativa para o if fim de um branch condicional executa trecho enquanto condição verdadeira fim de um while execução de parte do programa se símbolo foi definido execução de parte do programa se símbolo não foi definido Ricardo Pannain 91 DIRETIVAS .5.

Programação Assembly ‡ Diretivas de Dados DESCRIÇÃO define um bloco de constantes fim da definição de um bloco de constantes define um dado do tipo byte define um byte da EEPROM define um conjunto (tabela) de dados DIRETIVAS cblock endc db de dt 09/22/09 Ricardo Pannain 92 .5.

5. Programação Assembly ‡ Diretivas de Configuração DIRETIVAS _config processor DESCRIÇÃO seta configuração de bits define o tipo do microcontrolador 09/22/09 Ricardo Pannain 93 .

Programação Assembly ‡ Macros 09/22/09 Ricardo Pannain 94 .5.

5. Programação Assembly .Operadores 09/22/09 Ricardo Pannain 95 .

Programação Assembly .Exemplo 09/22/09 Ricardo Pannain 96 .5.

6. MPLAB ± Tela inicial 09/22/09 Ricardo Pannain 97 .

6. MPLAB ± Modo de desenvolvimento ‡ OPTIONS -> DEVELOPMENT MODE 09/22/09 Ricardo Pannain 98 .

MPLAB ± Criando um Projeto ‡ PROJECT -> NEW PROJECT 09/22/09 Ricardo Pannain 99 .6.

MPLAB ± Ajustando elementos de projeto 09/22/09 Ricardo Pannain 100 .6.

6. MPLAB ± Parâmetros do montador 09/22/09 Ricardo Pannain 101 .

6. MPLAB ± Abrindo um novo projeto

09/22/09

Ricardo Pannain

102

6. MPLAB ± Adicionado arquivo p/ montador

09/22/09

Ricardo Pannain

103

6. MPLAB ± Escrevendo um novo programa
‡ FILE -> NEW

09/22/09

Ricardo Pannain

104

MPLAB ± Salvando o novo arquivo 09/22/09 Ricardo Pannain 105 .6.

6. MPLAB ± Escrevendo um Programa 09/22/09 Ricardo Pannain 106 .

6. MPLAB ± Mensagens na montagem 09/22/09 Ricardo Pannain 107 .

MPLAB ± Simulador MPSIM ‡ Simulando e resetando um microcontrolador 09/22/09 Ricardo Pannain 108 .6.

6. MPLAB ± MPSIM e sua janela 09/22/09 Ricardo Pannain 109 .

MPLAB ± Barra de Ferramentas 09/22/09 Ricardo Pannain 110 .6.

o diodo se apaga. ligada à entrada RA2. PIC RA0 RA1 RA2 RA3 RA4 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 09/22/09 Ricardo Pannain 111 . esteja em ³1´. seja aceso. Exercícios ± 1 ‡ Progr ma que faz com que um LED. ligado à saída RB0. Caso contrário. caso uma c ave C.7.

microcontrolador espera uma combinação de 5 c aves. e. L1 L2 L3 L4 L5 L6 L7 L8 PIC RA0 RA1 RA2 RA3 RA4 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 09/22/09 Ricardo Pannain 112 . eles permanecem apagados. Exercícios ± 2 ‡ Programa que funciona como um ³segredo eletrônico´.7. ligadas na porta A (RA0 ± RA5). A combinação deve ser 1-0-1-0-1. Caso contrario. todos os LEDs ligados à porta B (RB0 ± RB7) se acendem. se esta combinação ocorrer.

o display exibe o número 1. Gnd abcdefg. PIC RA0 RA1 RA2 RA3 RA4 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 09/22/09 Ricardo Pannain 113 . ligado à porta B (RB0 ± RB7) para mostrar o valor de uma c ave C ligada à entrada RA2 da porta A. Se a c ave estiver ligada.7. Exercícios ± 3 ‡ Programa que utiliza um display de 7 segmentos. Caso contrário. é exibido o número 0.

Dentro desta rotina existe uma variável auxiliar (TEMPO1). que utiliza a sub-rotina Del10. Estes atrasos funcionam da seguinte maneira: uma rotina. que gera atrasos de 10 ms a cada c amada. L1 PIC RA0 RA1 RA2 RA3 RA4 09/22/09 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 Ricardo Pannain 114 . Ou seja. ligado ao pino RB0 da porta B acenda e apague a cada segundo. Exercícios ± 4 ‡ Programa que faz com que o LED. Como o ciclo de clock do microcontrolador é muito pequeno. serão 100 c amadas à rotina Del10. que começa com o valor 100 e vai sendo decrementada. Cada vez que ela é decrementada. c amada Atraso1S. gerando um atraso total de 1 segundo. a rotina Del10 é c amada novamente. é necessário introduzir atrasos para que as transições do LED possam ser visualizadas.7.

em formato binário L1 L2 L3 L4 L5 L6 L7 L8 PIC RA0 RA1 RA2 RA3 RA4 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 09/22/09 Ricardo Pannain 115 . A quantidade de transições é mostrada por 8 LEDs ligados aos pinos da porta B. Exercícios ± 5 ‡ Programa que conta as transições (mudanças) de uma c ave C. ligada ao pino RA0 da porta A.7.

ligado ao pino RB7 da porta B. Cada beep dura cerca de 0. que gera atrasos de 10 ms a cada c amada. que. Dentro desta rotina existe uma variável auxiliar (TEMPO1). Exercícios ± 6 ‡ Programa que faz com que um speaker. é necessário introduzir atrasos para que os beeps do speaker possam ser ouvidos claramente. para a rotina AtrasoMS tem o valor inicial de 50.5 segundos).7. PIC RA0 RA1 RA2 RA3 RA4 09/22/09 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 Ricardo Pannain + - 116 . uma c amada Atraso1S (atraso de 1 segundo) e outra. Estes atrasos funcionam da seguinte maneira: duas rotinas. e que vai sendo decrementada. AtrasoMS (atraso de 0. Cada vez que ela é decrementada. Como o ciclo de clock do microcontrolador é muito pequeno. utilizam a subrotina Del10. dê beeps periódicos a cada segundo. tem o valor inicial 100 e. a rotina Del10 é c amada novamente. para a rotina Atraso1S.5s.

A gravação da memória EEPROM leva um certo tempo. Esta implementação utiliza um atraso de. Exercícios ± 7 ‡ Programa que escreve dados na memória EEPROM do microcontrolador. indicando o fim da escrita. já que esta memória não é apagada até ser subscrita. A verificação do valor armazenado na memória pode ser visualizada pelo programa de gravação do PIC.6 segundos.7. 2. que espera uma determinada quantidade de tempo antes de continuar a execução. ou introduzirmos um atraso. A posição 0 desta memória irá armazenar o valor das c aves ligadas aos pinos RA0 à RA4 da porta A (em binário). PIC RA0 RA1 RA2 RA3 RA4 09/22/09 Ricardo Pannain RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 117 . Temos duas opções: ou esperamos que o bit WR do registrador EECON1 seja limpo pelo hardware. para a espera da gravação da memória EEPROM. Devemos esperar este tempo antes de continuar a execução do programa. aproximadamente.

Exercícios ± 8 ‡ Programa que lê os dados anteriormente gravados na memória EEPROM. na posição 0. O valor lido é representado. em binário. através de LEDs ligados aos pinos da porta B. L1 L2 L3 L4 L5 L6 L7 L8 PIC RA0 RA1 RA2 RA3 RA4 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 09/22/09 Ricardo Pannain 118 .7.

mas explora os recursos de WatchDog e modo Sleep do microcontrolador. você pode consultar este arquivo para visualizar todos os nomes dos SFRs e constantes que podem ser utilizadas na programação do 16F84.7. onde se encontra as definições dos nomes e endereços de todos os SFRs (registradores especiais) e uma série de outras definições necessárias para a utilização do microcontrolador 16F84. Como curiosidade. passaremos a utilizar o arquivo de definições padrão da Microchip para microcontroladores modelo 16 84. L1 L2 L3 L4 L5 L6 L7 L8 PIC RA0 RB0 RB1 RA1 RB2 RB3 RA2 RB4 RA3 RB5 RB6 RA4 RB7 09/22/09 Ricardo Pannain 119 . Exercícios ± 9 ‡ Programa similar ao programa 5. A partir este programa.

para que o robô continue andando em frente. se o robô estiver desviando a rota para a esquerda. o robô deve se mover para a direita até que a rota seja acertada. Quando a rota estiver certa. um para cada roda de tração. para a direita (reverter o motor da direita e manter o motor da esquerda a frente). para frente (manter os dois motores a frente). Este robô imaginário possui dois dispositivos infravermelhos. Quando os sensores detectam a necessidade de acertar a rota. Exercícios ± 10 ‡ Programa que simula os movimentos de um robô.7. Os movimentos possíveis são para a esquerda (reverter o motor da esquerda e manter o motor da direita a frente). e dois motores. que fazem com que ele siga uma trajetória desenhada no chão. e o da esquerda deve continuar ligado (rodando para frente). e para trás (reverter os dois motores). ambos os motores devem ser ligados para frente. o motor da direita deve ser revertido (rodar para trás). Por exemplo. os motores devem ser manipulados a fim de realizar o acerto. Para isto. 09/22/09 Ricardo Pannain 120 .

amos convencionar que o valor 1 significa ligar os motores à frente. Os LEDs ligados aos pinos RB0 e RB1 da porta B irão simular as saídas de controle dos dois motores de tração (direito e esquerdo. Exercícios ± 10 ‡ Os sensores serão simulados pelas chaves ligadas aos pinos RA0 e RA1 da porta. L1 L2 PIC RA0 RA1 RA2 RA3 RA4 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 09/22/09 Ricardo Pannain 121 . e 0 significa reverter os motores. respectivamente). e o valor 1 significa que o sensor detectou um desvio na trajetória.7. amos convencionar que o valor 0 significa que o sensor não detectou desvio na trajetória.

como se estivéssemos implementando um conversor. o display (ligado aos pinos RB0 à RB7 da porta B) irá mostrar. Gnd ‡ a b c d e fg . O código referente ao número no display de 7 segmentos também retorna no registrador W. estiver em "1". durante 3 segundos.7. ligada ao pino RA0 da porta A. o display se apaga e a seqüência se repete O número representado nos 4 bits menos significativos do registrador Work (W) é transformado em um número equivalente no display de 7 segmentos. ao passar a chave C para "0". seqüencialmente. Exercícios ± 11 ‡ Programa que gera números aleatórios. passados os 3 segundos.05 segundos. quando a chave C. Irá funcionar da seguinte maneira: ± Devemos gerar números aleatórios de 0 a 6. números de 0 a 6. em intervalos de 0. o número aleatório obtido. o display mostrará. PIC RA0 RA1 RA2 RA3 RA4 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 09/22/09 Ricardo Pannain 122 .

09/22/09 Ricardo Pannain 123 . A chave ligada à entrada RA0 da porta A irá controlar o sentido da contagem (0 = Decrescente e 1 = Crescente). serão utilizados dois displays de 7 segmentos. Para exibir os números nos displays. E. Para sua realização. o botão ligado à RA2 servirá de reset. por último. Este contador terá duas chaves e um botão (push buttom). ou seja. e dois conversores binário-7segmentos. Exercícios ± 12 ‡ Programa que irá simular um contador de 2 dígitos (00 a 99). sendo que os 4 bits menos significativos representarão o número a ser exibido no primeiro display (unidade).7. irá zerar os displays e recomeçar a contagem. que recebe um número binário de 4 bits e transforma este número para a representação do display. utilizaremos a porta B. e os 4 bits mais significativos representarão o número a ser exibido no segundo display (dezena). quando pressionado. A chave ligada à entrada RA1 da porta A irá controlar a parada do contador (0 = Parar e 1 = Contar).

Exercícios ± 12 Gnd Gnd abcdefg. a b c d e f g 4543 D3 D2 D1 D0 LD BI PH 4543 PIC RA0 RA1 RA2 RA3 RA4 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 +V 09/22/09 Ricardo Pannain D3 D2 D1 D0 LD BI PH a b c d e f g 124 .7. abcdefg.

br . Academic Press ± 1ª Edição. ± 2ª Edição.com.com. Jack Lipovski. G.vidal.8. Ricardo Pannain.com. Notas de aula.microchip. Microchip ± PIC16F87X Data Sheet. Mini curso MPLAB passo a passo. www. Introduction to Microcontrollers ± Ed.com. Patterson & John L.microchip. www. Computer Organization & Design ± The Hardware and Software Interface ± Ed. Microchip ± PIC16F84 Data Sheet. www. 09/22/09 Ricardo Pannain 125 . Microchip ± PIC16F8X Data Sheet . Bibliografia ‡ ‡ ‡ ‡ ‡ ‡ ‡ David A.microchip. Morgan Kaufmann. www. Hennessy.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->