Sei sulla pagina 1di 56

MICROCONTROLADORES

Baseado no PIC18F4520

ARQUIVO 2 -PIC18F4520
1

SOBRE ESTE MATERIAL


Este material para uso individual. Todos os direitos reservados. Proibida a distribuio total ou parcial deste material, por qualquer meio ou processo, sem a expressa autorizao do autor. Essas proibies aplicam-se tambm s caractersticas grficas da obra e sua editorao. A violao dos direitos autorais punvel como crime (art. 184 e pargrafos, do Cdigo Penal, cf. Lei no 6.895, de 17.12.80) com pena de priso e multa, conjuntamente com busca e apreenso e indenizaes diversas (artigos 102, 103 pargrafo nico, 104, 105, 106 e 107 itens 1, 2 e 3 da Lei no 9.610, de 19/06/98, Lei dos Direitos Autorais). Certos materiais contidos neste arquivo foram includos com a permisso da Microchip Technology Incorporated. Nenhuma distribuio, reimpresso ou reproduo do material citado pode ser feita sem o consentimento por escrito da Microchip Technology Inc.

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

SUMRIO ARQUIVO 2

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

OBJETIVOS

Ao final da aula o aluno dever ser capaz de: 1. Mapear a memria do microcontrolador segundo o seu tipo e funo. 2. Classificar os diferentes tipos de Resets . 3. Determinar a funo dos circuitos especiais dedicados a evitar travamento. 4. Configurar os pinos do microcontrolador como pinos digitais.

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

MEMRIAS DO PIC18F4520

O PIC18F4520 possui trs tipos de memria integrados. So elas: memria de programa Flash-ROM, memria de dados RAM e memria no-voltil EEPROM. A memria neste microcontrolador est dividida da seguinte forma: Memria de programa (Flash-ROM): 32kx16 Memria RAM (de dados): 1536x8 Memria EEPROM: 256x8

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

MEMRIA DE PROGRAMA
32k (0000h - 7FFFh) de memria de programa com capacidade de armazenamento de 16 bits em cada localidade. O vetor Reset o endereo 0000h. Incio do processamento. Dois vetores de interrupo: os endereos 0008h (alta prioridade) e 0018h (baixa prioridade). Plha (stack) de 31 nveis. Isso permite ter aninhadas at 31 chamadas a sub-rotinas. A memria de programa do PIC18F4520 do tipo Flash-ROM.

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

MEMRIA DE DADOS (SRAM)


16 bancos de 256 localidades cada, com capacidade de armazenamento de 8 bits em cada localidade. O chaveamento entre os bancos efetuado por meio dos bits BSR<3:0>. SFRs (regs. com finalidade especfica) e GPRs (regs. de uso geral). Os SFRs so registradores de controle da CPU e dos perifricos.

GPRs so utilizados para armazenamento de dados temporrios.


Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco

ACCESS BANK
Desenvolvido para facilitar acesso memria quando a aplicao exigir o uso de no mximo 128 localidades de memria de dados. Com o access bank no necessrio o chaveamento entre bancos para acessar uma localidade de memria. Utiliza um segmento do banco 0 e um segmento do banco 15 para formar um nico banco de memria no qual podemos acessar tanto os SFRs quanto os GPRs.

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

ACCESS BANK
O acesso memria de dados via Access Bank no leva em considerao o valor armazenado no registrador BSR, til na otimizao de cdigos em Linguagem C. Possibilidade de copiar uma informao armazenada em uma localidade da memria para outra utilizando uma nica instruo, a MOVFF.

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

REGISTRADORES COM FINALIDADES ESPECFICAS (SFRs)

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

10

MEMRIA EEPROM
O PIC18F4520 possui 256 localidades de memria EEPROM que podem ser utilizadas para o armazenamento de dados que no devem ser perdidos, mesmo que a energia seja desligada. A memria EEPROM classificada na arquitetura interna do PIC18F4520 como um perifrico e ocupa a faixa de endereos 00h - FFh. O acesso memria EEPROM feito por meio de quatro SFRs, que so: EECON1 EECON2 EEADR EEDATA Os SFRs EECON e EECON2 so registradores de controle, enquanto os SFRs EEADR e EEDATA recebem, respectivamente, o endereo e o dado que ser lido ou escrito.
Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco

11

RESET
Quando ocorre um Reset, a execuo do programa interrompida e o microcontrolador volta ao incio do processamento. O endereo inicial de processamento dos microcontroladores PIC o 00000h. O PIC18F4520 pode ser resetado de vrias formas diferentes, podendo ser identificadas, por software, a origem do Reset e tomadas as decises pertinentes. Um Reset no PIC18F4520 pode ser provocado por:
Power-on Reset (POR) Reset em operao normal atravs do pino /MCLR

Reset em um dos Power-Managed Modes atravs do pino /MCLR


Reset em operao normal provocado pelo Watchdog Timer (WDT) Reset provocado pelo Brown-out Reset (BOR) Reset provocado pela instruo RESET Stack Full RESET Stack Underflow RESET
Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco

12

BITS ASSOCIADOS AOS RESETS


Condio Contador de Programa Registrador RCON /RI 1 0 1 /TO 1 u 1 /PD 1 u 1 /POR 0 u u /BOR 0 u 0 Power-on Reset 0000h Instruo RESET 0000h Brown-out Reset 0000h Reset durante a execuo dos 0000h u 1 u u u u Power-Managed Modes Reset durante os Power-Managed Idle 0000h u 1 0 u u u modes and Sleep Mode WDT Time-out durante a execuo do 0000h u 0 u u u u Full Power or Power-Managed Mode Reset durante a execuo em Full 0000h u u u u u u Power Stack Full Reset (STVREN = 1) 0000h u u u u u 1 Stack Underflow Reset (STVREN = 1) 0000h u u u u u u Stack Underflow Error (no um Reset real, 0000h u u u u u u STVREN = 0) WDT Time-out durante os PowerPC + 2 u 0 0 u u u Managed Idle or Sleep Modes Sada da interrupo dos PowerPC + 2(1) u u 0 u u u Managed Modes Legenda: u - no alterado. Nota 1: Quando um wake-up ocorre devido a uma interrupo e os bits GIEH e GIEL esto setados, o PC carregado com vetor de interrupo (008h ou 0018h). Registrador STKPTR STKFUL STKUNF 0 0 u u u u u u u u u 1 1 u u

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

13

POWER-ON RESET
O POR o primeiro Reset que ocorre no microcontrolador. Em outras palavras, o POR ocorre quando o circuito energizado. A figura abaixo mostra um circuito que pode e deve ser usado como opo para a criao de um delay para o POR. Esse um circuito que, alm criar um delay no POR, ajuda a proteger o microcontrolador contra travamento em caso de queda na tenso de alimentao por breves perodos de tempo. O valor recomendado pelo fabricante para o resistor R deve ser menor que 40k para que no sejam violadas as especificaes eltricas do componente. O resistor R1 deve ser menor que 1k para limitar a corrente no pino /MCLR. O diodo D ajuda a descarregar o capacitor C mais rapidamente quando a tenso de alimentao desligada.
Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco

14

POWER-UP TIMER (PWRT)

O PWRT prov um time-out tpico de 72ms aps o POR. Um circuito RC interno o responsvel pela temporizao.
O PWRT um recurso que precisa ser ativado e o seu objetivo manter o microcontrolador em Reset at que a tenso de alimentao esteja estabilizada. O delay gerado pelo PWRT at o time-out pode variar conforme o chip, com a temperatura ou com a tenso de alimentao VDD. O PWRT ativado na hora da gravao pelos bits de configurao.

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

15

OSCILLATOR START-UP TIMER (OST)

O Oscillator Start-up Timer um circuito que prov um delay de 1024 ciclos de clock do oscilador principal, aps o Power-up Timer, antes de colocar o circuito oscilador em funcionamento. Isso garante que o oscilador esteja estabilizado na sua partida, evitando travamento. O Oscillator Start-up Timer s invocado para os modos de funcionamento do oscilador XT, LP e HS no POR ou quando o microcontrolador acorda aps ter entrado no modo Sleep.

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

16

PLL LOCK TIMER-OUT

Quando o PLL est habilitado, a sequncia time-out que segue o POR diferente dos outros modos de funcionamento do oscilador. Uma parte do Power-up Timer utilizada para prover um time-out suficiente para o PLL estabilizar a frequncia do oscilador principal. O delay gerado para o PLL de 2ms e ocorre aps o Start-up Timer-out (OST).

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

17

FUNO /MCLR
Em funcionamento normal, o pino /MCLR (Master Clear) precisa estar recebendo nvel '1'. Quando o nvel lgico nele forado a '0', o microcontrolador resetado e s sai do Reset quando o nvel lgico retornar a '1'. A figura abaixo uma proposta para o hardware a ser conectado ao pino /MCLR, incluindo o boto Reset.

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

18

BROWN-OUT RESET (BOR)


O Brown-out Reset um recurso que, quando est ativado, faz o microcontrolador resetar caso a tenso de alimentao caia abaixo de um determinado valor, que pode ser configurado por software. Uma vez que o microcontrolador entrou em Reset devido ao Brown-out Reset, ele s volta ao seu funcionamento normal, ou seja, a executar o programa, quando a tenso de alimentao voltar ao nvel especificado pelo fabricante para correto funcionamento do microcontrolador. Caso esse recurso no esteja ativado o microcontrolador pode travar quando ocorrer uma queda de tenso de alimentao momentnea. Um Reset provocado pelo Brown-out Reset pode ser detectado testando o bit /BOR(RCON<0>) que, quando assumir nvel lgico '1', indica que o ltimo Reset foi provocado pelo Brown-out Reset. O BOR ativado na hora da gravao pelos bits de configurao.

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

19

WATCHDOG TIMER (WDT)


Esse um recurso muito poderoso utilizado para evitar a paralisao do sistema em caso de travamento do oscilador devido a uma interferncia eletromagntica, ou qualquer outro tipo de rudo que o faa parar de oscilar, exceto em caso de defeito no circuito oscilador. O WDT um temporizador que provoca um Reset no programa sempre que ele produzir um time-out, ou seja, quando o tempo programado para o time-out terminar sem que seja executada a instruo CLRWDT. Sua utilizao indicada para sistemas em que o programa no pode parar de ser executado, como no caso de um computador de bordo de um automvel, por exemplo. O WDT possui um oscilador independente do oscilador principal. Isso significa que se, por algum motivo, o oscilador principal travar, o WDT continua em funcionamento. possvel habilitar ou desabilitar o funcionamento do WDT por meio dos bits de configurao.

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

20

INSTRUO RESET

A instruo RESET pertence ao set de instrues dos microcontroladores da srie PIC18. Essa instruo, quando executada, provoca um /MCLR Reset por software. O bit RCON</RI>=0 sinaliza que o ltimo Reset foi provocado pela instruo RESET.

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

21

STACK FULL RESET E STACK UNDERFLOW RESET


O Reset ligado aos eventos Stack Full RESET e Stack Underflow RESET est associado ao recurso Return Adress Stack, o qual permite ao programa efetuar at 31 chamadas sub-rotina ou a funes associadas ocorrncia de uma interrupo.
Quando executada a instruo CALL, a instruo RECALL ou quando ocorre uma interrupo, o programa sai da sequncia normal de execuo e desviado para outro ponto.

Antes de ocorrer o desvio, no entanto, o endereo de retorno armazenado em uma pilha, chamada Return Adress Stack, para que o programa possa voltar ao ponto de onde ocorreu o desvio.
Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco

22

STACK FULL RESET E STACK UNDERFLOW RESET


O registrador STKPTR<4:0> um ponteiro para a posio da pilha onde est armazenado o prximo endereo de retorno. Quando ocorre um desvio com retorno, o endereo de retorno armazenado na pilha e o registrador STKPTR<4:0> incrementado. Da mesma forma, quando ocorre um retorno de uma sub-rotina, o endereo de retorno retirado da pilha e o registrador STKPTR<4:0> decrementado. Se no registrador STKPTR<4:0> for armazenado o valor 31 quando for executado um desvio com retorno, ocorre um overflow no Return Adress Stack. Na sequncia, o bit STKFUL (STKPTR<7>) ser setado e ocorrer um Reset se o bit de configurao Stack Overflow Reset estiver ativado.

Da mesma forma, se no registrador STKPTR<4:0> estiver armazenado o valor 0 e for executado mais um retorno, ocorre um underflow no Return Adress Stack. Na sequncia, o o PC carregado com o valor 0 e o bit STKUNF (STKPTR<6>) ser setado. Ocorrer um Reset se o bit de configurao Stack Overflow Reset estiver ativado.
Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco

23

STACK FULL RESET E STACK UNDERFLOW RESET

Os bits STKFUL e STKUNF, respectivamente STKPTR<7:6>, podem ser testados aps a ocorrncia de um Reset para o programa detectar se o Reset foi provocado por um overflow ou por um underflow no Return Adress Stack e tomar as devidas providncias.

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

24

Modelo simplificado de um pino de I/O genrico sem a interface com Quando um pino do microcontrolador outros perifricos.

PINOS DE I/O

configurado como pino de I/O, ou pino digital, ele pode ser configurado como entrada ou como sada de dados. Quando configurados como digitais, os pinos do PIC18F4520 so divididos em cinco grupos chamados Ports de I/O, identificados como Port A, Port B, Port C, Port D e Port E.

Um pino digital configurado como entrada pode receber informao digital ('0' ou '1'), como aquela vinda de um boto, de um sensor etc.
Um pino digital configurado como sada pode fornecer para uma carga ou para outro elemento do sistema uma informao digital. Informao que pode acionar um LED, ligar um motor, fechar uma eletrovlvula etc.
Fonte: PIC18F2420/2520/4420/4520 Data Sheet DS39631D. Baixado de www.microchip.com
Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco

25

PINO DIGITAIS (pinos de I/O)

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

26

NVEL LGICO versus TENSO

4,5V < VDD < 5,5V Entrada VIL (tenso de entrada baixa) VIH (tenso de entrada alta) Sada VOL (tenso de sada baixa) Mn 0V 2V Mn Mx 0,8V VDD Mx 0,6V Nvel Lgico 0 1 Nvel Lgico 0

VOH (tenso de sada alta)

VDD - 0,7V

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

27

PINO DE I/O CONGIFURADO COMO ENTRADA


O pino RA1 receber nvel lgico 1(VDD) enquanto BT1 estiver solto.

Quando BT1 for pressionado, o pino RA1 ser aterrado, ou seja, o nvel lgico 0 (0V) estar chegando no pino.
Ao ser feito a leitura do pino RA1, ser possvel detectar se ele est solto ou pressionado, dependendo do nvel lgico que estiver presente no pino no momento da leitura.

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

28

PINO DE I/O CONGIFURADO COMO ENTRADA


Quando um pino do MCU est configurado como entrada de I/O ele possui uma impedncia de entrada extremamente alta, da ordem de mega ohms. Dizemos, neste caso, que o pino se encontra num estado de alta impedncia. A figuras abaixo mostram o circuito equivalente para baixas freqncias, do pino RA1, configurado como entrada. Veja o caminho que segue a corrente eltrica com o boto solto (direita) e com o boto pressionado (esquerda).

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

29

PINO DE I/O CONGIFURADO COMO SADA


Quando configuramos um pino do MCU como sada de I/O, ns podemos, por meio do programa, aplicar nvel lgico 1 ou 0 no pino. Independente do nvel lgico presente no pino, a corrente eltrica naquele pino no pode ser superior a 20mA, sob o risco de inutilizar o pino, ou at mesmo o MCU. A impedncia de sada de um pino configurado como sada baixa, menor que 75, independente se no pino est presente o nvel lgico 1 ou 0.

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

30

PORTA
O Port A possui oito pinos bidirecionais (RA7:RA0). Cada pino pode ser configurado como entrada ou sada independente dos demais. O registrador PORTA, mapeado na memria RAM no endereo F80h, o elo entre o software e o hardware. Quando um pino est configurado como sada o nvel lgico aplicado no respectivo bit do registrador PORTA aparece naquele pino. No pino configurado como entrada, quem define o nvel lgico aplicado no pino o hardware externo conectado a ele. O registrador PORTA permite efetuar a leitura do pino configurado como entrada para determinar o nvel logo aplicado nele.
Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco

31

PORTA
Existe um latch ligado em cada pino do Port A de forma que, quando escrevemos um valor no registrador PORTA, a informao armazenada no latch, passando automaticamente para o pino caso ele esteja configurado como sada. Quando um pino est configurado como entrada a informao fica retida no latch, sendo transferida para o pino no momento em que ele for novamente configurado como sada.

No PIC18F4520 os latchs esto mapeados na memria de dados como SFRs. O registrador que d acesso ao latch do Port A, o registrador LATA, est mapeado com o endereo F89h.
Os outros Ports tambm possuem latchs e registradores LATs mapeados na memria RAM.
Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco

32

PORTA
Quando esse pino estiver configurado como digital, executando a funo RA4, ele ser uma entrada Schmitt Trigger quando estiver configurado como entrada. o pino RA4 ser uma sada em coletor aberto(OD) quando estiver configurado como sada. No POR os pinos RA5, RA3:RA0 so configurados como pinos de entrada analgica e lidos como '0', enquanto os pinos RA7, RA6, quando habilitados, e RA4 so configurados como entradas digitais.

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

33

REGISTRADOR TRISA
Uma vez que os pinos do Port estejam configurados como digitais, o registrador TRISx ir configurar os pinos como entrada ou como sada. O registrador TRISA configura os pinos do Port A, o registrador TRISB os pinos do Port B e assim sucessivamente. A figura abaixo mostra a associao dos bits do registrador TRISA, mapeado na memria RAM no endereo F92h, com os respectivos pinos do Port A. Para configurar um determinado pino como entrada deve-se aplicar nvel lgico '1' no respectivo bit do registrador TRISA e, por outro lado, para configurar um determinado pino como sada deve-se aplicar nvel lgico '0' no respectivo bit do mesmo registrador. O mesmo raciocnio vale para os outros Ports.
Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco

34

CONFIGURANDO O PORTA COMO DIGITAL


A frao de cdigo a seguir mostra como inicializar os pinos do Port A como digitais. Observe que para configurar os pinos RA5, RA3:RA0 como digitais preciso inicializar os registradores ADCON1 com o valor 0x0F. Veja tambm que os pinos RA2:RA1 foram configurados como pinos de entrada e os demais pinos do Port A como de sada.

//*********************************************************************************************************************** PORTA = 0; //limpa PORTA LATA = 0; //limpa LATA ADCON1 = 0x0F; //ADCON1 = 0Fh. Configura pinos do RA5 e RA3:RA0 como digitais TRISA = 0x06; //configura RA2:RA1 como entrada e demais pinos do PORTA como sada //************************************************************************************************************************

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

35

REGISTRADORES ASSOCIADOS AO PORTA


Valores no Reset Apndice C Apndice C Apndice C Apndice C Apndice C Apndice C

Bit 7 PORTA LATA TRISA ADCON1 CMCON CVRCON RA7(1) LATA7(1) TRISA7(1) C2OUT CVREN

Bit 6 RA6(1) LATA6(1) TRISA6(1) C1OUT CVROE

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

RA5 RA4 RA3 RA2 RA1 RA0 PORTA Data Latch Register (Read and Write to Data Latch) PORTA Data Direction Register VCFG1 VCFG0 PCFG3 PCFG2 PCFG1 PCFG0 C2INV C1INV CIS CM2 CM1 CM0 CVRR CVRSS CVR3 CVR2 CVR1 CVR0

Legenda: - = no implementado, lido como '0'. Clulas sombreadas no so utilizadas pelo Port A. Nota 1: RA7 e RA6 so habilitados com base na configurao do oscilador; por outro lado, eles so lidos como '0'.

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

36

PORTB
O Port B possui oito pinos bidirecionais (RB7:RB0) que podem ser configurados como entrada ou sada quando esto funcionando como pinos digitais. O registrador PORTB, mapeado na memria RAM no endereo F81h, o elo entre o software e o hardware. A figura a mostra como os bits do registrador PORTB esto associados aos respectivos pinos do Port B. A figura b indica a associao dos bits do registrador TRISB com os respectivos pinos do Port B.

A funo do registrador TRISB, mapeado na memria RAM no endereo F93h, configurar os pinos do Port B como entrada quando aplicado nvel lgico '1' no bit associado ao respectivo pino, ou configurar o pino como sada quando aplicado nvel lgico '0' no respectivo bit.
Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco

37

PORTB

Da mesma forma que no Port A, quando escrevemos um valor no registrador PORTB a informao armazenada no latch, passando automaticamente para os pinos caso eles estejam configurados como sada. Quando um pino est configurado como entrada a informao fica retida no latch, sendo transferida para o pino no momento em que ele for novamente configurado como sada.

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

38

RESISTORES DE PULL-UP NO PORTB


Cada pino do Port B possui internamente um resistor de baixa potncia, chamado pull-up, que pode estar conectado entre o pino do Port B e a tenso positiva de alimentao (VDD). O bit /RBPU(INTCON2<7>), quando setado, desliga simultaneamente as chaves que conectam os resistores de pull-up aos pinos do Port B.

Recomendamos deixar os resistores de pull-up desligados, salvo rarssimas excees.


Se for necessrio conectar um resistor entre um determinado pino do Port B e VDD, que seja feito com um resistor externo.

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

39

CONFIGURANDO O PORTB COMO DIGITAL


No POR os pinos do Port B so configurados como entradas digitais. A frao de cdigo a seguir mostra como inicializar o Port B.

Veja que todos os pinos do Port B foram configurados como pinos de sada.
Observe que mesmo o registrador INTCON2 no tendo sido inicializado, os resistores de pull-ups esto desabilitados no POR porque bit /RBPU inicializado com nvel lgico '1', que desabilita os resistores de pull-up.

//******************************************************************************** PORTB = 0; //limpa PORTB LATB = 0; //limpa LATB TRISB = 0; //configura PORTB como sada //********************************************************************************

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

40

RBPU

REGISTRADORES ASSOCIADOS AO PORTB


Valores no Reset Apndice C Apndice C Apndice C Apndice C Apndice C Apndice C Apndice C

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 LATB PORTB Data Latch Register (Read and Write to Data Latch) TRISB PORTB Data Direction Register INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF INTCON2 /RBPU INTEDG0 INTEDG1 INTEDG2 TMR0IP RBIP INTCON3 INT2IP INT1IP INT2IE INT1IE INT2IF INT1IF ADCON1 VCFG1 VCFG0 PCFG3 PCFG2 PCFG1 PCFG0 Legenda: - = no implementado, lido como '0'. Clulas sombreadas no so utilizadas pelo Port B.

Os registradores INTCON, INTCON2 e INTCON3 so de controle de interrupo, sendo utilizados na configurao das interrupes associadas ao Port B.

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

41

PORTC
O Port C possui oito pinos bidirecionais(RC7:RC0) que podem ser configurados como entrada ou sada quando esto funcionando como pinos digitais. O registrador PORTC, mapeado na memria RAM no endereo F82h, o elo entre o software e o hardware. A figura a exibe como os bits do registrador PORTC esto associados aos respectivos pinos do Port C e a figura b mostra a associao dos bits do registrador TRISC com os respectivos pinos do Port C. A funo do registrador TRISC, mapeado na memria RAM no endereo F94h, configurar os pinos do Port C como entrada quando aplicado nvel lgico '1' no bit associado ao respectivo pino, ou configurar o pino como sada quando aplicado nvel lgico '0' no respectivo bit.
Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco

42

PORTC
Da mesma forma que nos outros Ports, quando escrevemos um valor no registrador PORTC a informao armazenada no latch, passando automaticamente para o pino caso ele esteja configurado como sada.

Quando um pino est configurado como entrada a informao fica retida no latch, sendo transferida para o pino no momento em que ele for novamente configurado como sada.
Todos os pinos do Port C, quando configurados como entrada digital, so Schmitt Trigger. No POR os pinos do Port C so configurados como entradas digitais. A frao de cdigo a seguir mostra como inicializar o Port C. Veja que o nibble alto do PORTC (RC7:RC4) foi configurado como entrada e o nibble baixo do PORTC (RC3:RC0) como sada.
//*********************************************************************************************************************************** PORTC = 0; //limpa PORTC LATC = 0; //limpa LATC TRISC = 0xF0; //configura os pinos RC7:RC4 como entrada e os pinos RC3:RC0 como sada //*********************************************************************************************************************************** Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco

43

RBPU

REGISTRADORES ASSOCIADOS AO PORTC

Bit 7 PORTC LATC TRISC RC7

Bit 6 RC6

Bit 5 RC5

Bit 4 RC4

Bit 3 RC3

Bit 2 RC2

Bit 1 RC1

Bit 0 RC0

Valores no Reset Apndice C Apndice C Apndice C

PORTC Data Latch Register (Read and Write to Data Latch) PORTC Data Direction Register

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

44

PORTD
O Port D possui oito pinos bidirecionais (RD7:RD0) que podem ser configurados como entrada ou sada quando esto funcionando como pinos digitais. O registrador PORTD, mapeado na memria RAM no endereo F83h, o elo entre o software e o hardware. A figura 4.5a indica como os bits do registrador PORTD esto associados aos respectivos pinos do Port D e a figura 4.5b mostra a associao dos bits do registrador TRISD com os respectivos pinos do Port D. O registrador TRISD, mapeado na memria RAM no endereo F95h, configura os pinos do Port D como entrada quando aplicado nvel lgico '1' no bit associado ao respectivo pino, ou configura o pino como sada quando aplicado nvel lgico '0' no respectivo bit.
Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco

45

CONFIGURANDO O PORTD COMO DIGITAL


Da mesma forma que nos outros Ports, quando escrevemos um valor no registrador PORTD a informao armazenada no latch, passando automaticamente para o pino caso ele esteja configurado como sada. Quando um pino est configurado como entrada a informao fica retida no latch, sendo transferida para o pino no momento em que ele for novamente configurado como sada. Todos os pinos do Port D, quando configurados como entrada digital, so Schmitt Trigger. No POR os pinos do Port D so configurados como entradas digitais. A frao de cdigo a seguir mostra como inicializar o Port D. Veja que todos os pinos do Port D foram configurados como sada.
//****************************************************************************** PORTD = 0; //limpa PORTD LATD = 0; //limpa LATD TRISD = 0x00; //configura PORTD como sada //******************************************************************************

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

46

RBPU

REGISTRADORES ASSOCIADOS AO PORTD

Bit 7 PORTD LATD TRISD TRISE(1) CCP1CON

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1 RD1

Bit 0 RD0

RD7 RD6 RD5 RD4 RD3 RD2 PORTD Data Latch Register (Read and Write to Data Latch) PORTD Data Direction Register IBF OBF IBOV PSPMODE TRISE2 P1M1(1) P1M0(1) DC1B1 DC1B0 CCP1M3 CCP1M2

TRISE1 CCP1M1

TRISE0 CCP1M0

Valores no reset Apndice C Apndice C Apndice C Apndice C Apndice C

Legenda: - = no implementado, lido como '0'. Clulas sombreadas no so utilizadas pelo Port D. Nota 1: Estes registradores e/ou bits no so implementados nos microcontroladores de 28 pinos.

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

47

PORTE
O Port E possui quatro pinos, sendo trs bidirecionais (RE2:RE0), podendo ser configurados como entrada ou sada quando esto funcionando como pinos digitais. O quarto pino, o RE3, multiplexado com as funes /MCLR e VPP e s pode ser configurado como entrada. O registrador PORTE, mapeado na memria RAM no endereo F84h, o elo entre o software e o hardware. A figura a mostra como os bits do registrador PORTE esto associados aos respectivos pinos do Port E e a figura b exibe a associao dos bits do registrador TRISE com os respectivos pinos do Port E.

O registrador TRISE, mapeado na memria RAM no endereo F96h, configura os pinos do Port E como entrada quando aplicado nvel lgico '1' no bit associado ao respectivo pino, ou configura o pino como sada quando aplicado nvel lgico '0' no respectivo bit.
Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco

48

CONFIGURANDO O PORTE COMO DIGITAL


Da mesma forma que nos outros Ports, quando escrito um valor no registrador PORTE a informao armazenada no latch, passando automaticamente para o pino caso ele esteja configurado como sada. Quando um pino est configurado como entrada a informao fica retida no latch, sendo transferida para o pino no momento em que ele for novamente configurado como sada. Todos os pinos do Port E, quando configurados como entrada digital, so Schmitt Trigger.

Ao contrrio do registrador PORTE, no qual os bits 7:4 no so implementados fisicamente, com exceo do bit TRISE<3>, os demais bits do registrador TRISE so utilizados na configurao do perifrico Parallel Slave Port.
Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco

49

CONFIGURANDO O PORTE COMO DIGITAL


No POR os pinos do Port E so configurados como entradas analgicas. A frao de cdigo a seguir mostra como inicializar o Port E. Observe que para configurar os pinos RE2:RE0 como digitais necessrio inicializar o registrador ADCON1 com o valor 0x0F. Veja tambm que todos os pinos do PORTE foram configurados como sada, com exceo do RE3 que s pode ser configurado como entrada. Sendo assim, a configurao como sada para o pino RE3 no surte efeito.

//*********************************************************************************************************************** PORTE = 0; //limpa PORTE LATE = 0; //limpa LATE ADCON1 = 0x0F; //ADCON1 = 0Fh. Configura os pinos RE2:RE0 como digitais TRISE = 0x00; //configura PORTE como sada //***********************************************************************************************************************

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

50

REGISTRADORES ASSOCIADOS AO PORTE

Bit 7 PORTE LATE -

Bit 6 -

Bit 5 -

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

RE3(1) RE2 RE1 RE0 LATE Data Output Register PSPMOD TRISE IBF OBF IBOV TRISE2 TRISE1 TRISE0 E ADCON1 VCFG1 VCFG0 PCFG3 PCFG2 PCFG1 PCFG0 Legenda: - = no implementado, lido como '0'. Clulas sombreadas no so utilizadas pelo Port E. Nota 1: Implementado somente quando a funo /MCLR est desabilitada.

Valores no reset Apndice C Apndice C Apndice C Apndice C

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

51

CONFIGURAO DOS PORT A, PORT B, PORT C, PORT D e PORT E COMO DIGITAIS


O bloco de cdigo apresentado a seguir configura todos os pinos de I/O de todos os Ports como digital.
Ele pode ser utilizado em qualquer aplicao em que seja necessria esta configurao. Veja que os pinos RA2 e RA1 foram configurados como entrada digital e os demais pinos como sada.
{//**********************************************************************************************
TRISA = 0x02; //pino RA1 entrada e demais pinos do PORTA sada TRISB = 0x00; //PORTB sada TRISC = 0x00; //PORTC sada TRISD = 0x00; //PORTD sada TRISE = 0x00; //PORTE sada ADCON1 = 0x0F; //configura os pinos dos PORT A e PORT E como digitais PORTA = 0; //limpa PORTA PORTB = 0; //limpa PORTB PORTC = 0; //limpa PORTC PORTD = 0; //limpa PORTD PORTE = 0; //limpa PORTE } //*********************************************************************************************************

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

52

PINOS NO UTLIZADOS
Os pinos no utilizados em uma determinada aplicao devem ser configurados como digital, configurados como sada e aplicado nvel lgico 0 neles.

Esse procedimento permite que os pinos no utilizados possam ficar desconectados.


Veja no circuito apresentado na figura ao lado. Esto sendo utilizados os pinos RB2:RB0 e RD7:RD5. Como os demais pinos no esto sendo utilizados eles devem ser configurados como sada digital e deve aplicado nvel lgico 0 neles.
Microcontroladores PIC18F4520 com Linguagem C Wagner da Silva Zanco

53

EXERCCIOS
1. Que quantidade de memria de programa integra o PIC18F4520?

2. Em que localidade da memria de programa se encontra a primeira instruo executada quando o microcontrolador energizado?
3. Quantas chamadas sub-rotina podem ser aninhadas no PIC18F4520? 4. Em quantos bancos de memria RAM est dividida a memria de dados do PIC18F4520? 5. Em que consiste o recurso Access Bank? 6. Qual o registrador responsvel pelo chaveamento de memria RAM no PIC18F4520? 7. Qual a faixa de endereos utilizada pela memria EEPROM no PIC18F4520? 8. O que deve ser feito com os pinos no utilizados em uma determinada aplicao?

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

54

EXERCCIOS
8. Qual o nome do Reset que ocorre quando o microcontrolador energizado?

9. Quais os bits responsveis pela sinalizao de um Reset?


10. Qual a funo do Power-up Timer? 11. O que Oscillator Start-up Timer e qual a sua funo? 12. Qual a finalidade do time-out gerado pelo Power-up Timer quando o PLL est habilitado? 13. Qual a funo do pino /MCLR? 14. O que faz o Brown-out Reset quando ele est ativado? 15. O Watchdog Timer pode aumentar a segurana de uma aplicao? Explique.

16. Qual a finalidade da instruo RESET?


17. Explique a finalidade dos recursos Stack Full RESET e Stack Underflow RESET.

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

55

EXERCCIOS
18. Como so identificados os pinos do PIC18F4520 quando configurados como digitais? 19. Qual registrador o responsvel pela configurao dos pinos de um Port como entrada ou sada quando eles estiverem configurados como pinos digitais? 20. Qual a funo dos registradores PORTA, PORTB, PORTC, PORTD e PORTE? 21. O pino RA4, quando configurado como sada digital, uma sada em coletor aberto. O que isso significa? 22. Por que recomendado deixar os resistores de pull-up desabilitados? Qual o bit responsvel por esse desligamento?

23. Qual dos pinos do PIC18F4520 s pode ser configurado como entrada? O que deve ser feito para configurar esse pino como digital?
24. Vrios pinos do PIC18F4520, quando configurados como entrada, so Schmitt Trigger. O que isso significa?

Microcontroladores PIC18F4520 com Linguagem C

Wagner da Silva Zanco

56

Potrebbero piacerti anche