Sie sind auf Seite 1von 30

MDULO M 07

Introduo ao microcontrolador PIC: Portas de E/S

Objetivos Apresentar a estrutura de um microcontrolador PIC; Apresentar o conjunto de instrues do microcontrolador PIC; Compreender como os registradores de configurao afetam o funcionamento do microcontrolar PIC; INTRODUO O PIC pertence a uma classe de microcontroladores de 8 bits, com uma arquitetura RISC. Os blocos bsicos de uma estrutura genrica do PIC so: MEMRIA DE PROGRAMA (FLASH): Para armazenar as rotinas de programa. Como a memria FLASH pode ser programada e limpa mais que uma vez. ela torna-se adequada para o desenvolvimento de dispositivos. EEPROM: Memria dos dados que necessitam ser mantidos quando a alimentao desligada.

RAM: Memria de dados usada por um programa, durante a sua execuo. Na RAM, so guardados todos os resultados intermdios ou dados temporrios durante a execuo do programa e que no so cruciais para o dispositivo, depois de ocorrer uma falha na alimentao. PORTAS DE E/S: So ligaes fsicas entre o microcontrolador e o mundo exterior. CONTADOR/TEMPORIZADOR: So registros de 8 bits no interior do microcontrolador que trabalham independentemente do programa. No fim de cada conjunto de quatro ciclos de relgio do oscilador, ele incrementa o valor armazenado. UNIDADE DE PROCESSAMENTO CENTRAL: Faz a conexo com todos os outros blocos do microcontrolador. Ele coordena o trabalho dos outros blocos durante a execuo do programa.

PORTA A

PORTA B

Esquema de um microcontrolador PIC com duas portas de E/S

Arquiteturas Harvard versus Von Neumann A diferena principal entre microcontroladores e microprocessadores a sua funcionalidade. Para que um microprocessador possa ser usado, outros componentes devem ser adicionados ao circuito, tais como, memria e componentes para receber e enviar dados. O microcontrolador foi projetado para ter tudo em s dispositivo, podendo operar sem outros componentes externos. Outro aspecto que pode diferenciar microcontroladores e microprocessadores a sua arquitetura. Os microcontroladores PIC apresentam uma arquitetura Harvard, onde a memria de dados est separada da memria de programa. Assim, possvel um acesso concorrente as duas memrias e assim, obter uma maior velocidade de funcionamento. A separao da memria de dados da memria de programa, faz com que as instrues possam ser representadas por palavras de mais que 8 bits. O PIC16F877, usa 14 bits para cada instruo, o que permite que todas as instrues ocupem uma s palavra de instruo. tambm tpico da arquitetura Harvard ter um conjunto reduzido de instrues, geralmente executadas em apenas um ciclo de mquina. No caso do PIC 16F877 este conjunto formado por apenas 35 instrues. Esta caracterstica lhe rende tambm a designao de dispositivo RISC (Reduced Instruction Set Computer). Todas as instrues so executadas num nico ciclo de mquina, exceto no caso de instrues de salto e de ramificao.

Estrutura do PIC 16F877 Memria flash para instrues (program memory) com 14 bits/palavra (cada instruo do PIC16F8X tem 14 bits!); 8K x 14 bits de memria flash; 368 x 8 bits de4 memria RAM; 256 x 8 bits de memria EEPROM; Pilha implementada por hardware com 8 nveis (at 8 chamadas de rotinas aninhadas) 5 Portas de E/S; 14 fontes de interrupo (internas e externas); Dois mdulos de Captura/Comparao/PWM; Conversor A/D de 10 bits com entradas multiplexadas; Porta serial sncrona com SPI (master mode) e I2C (master/slave); USART/SCI; Porta paralela com 8 bits de dados e sinais de controle externos (RD, WR e CS); Timer/Counter programvel e um Watchdog Timer embutidos, este com seu prprio oscilador, para aplicaes de Tempo Real crticas; Recursos de hardware para proteo de cdigo, modo de operao com baixo consumo de energia (sleep), programao "in-circuit", alta corrente de sada para LEDs (25 mA), power-on-reset, power-up timer, etc Relgio / Ciclo de instruo O relgio (clock), que determina a freqncia de operao do PIC dividido internamente em quatro fases, Q1, Q2, Q3 e Q4 que no se sobrepem. Estas quatro fases compem um ciclo de instruo (tambm chamado ciclo de mquina), durante o qual uma instruo executada. A execuo de uma instruo, antecedida pela extrao da instruo que est na linha seguinte. O cdigo da instruo extrado da memria de programa em Q1 e escrito no registro de instruo em Q4. A decodificao e execuo dessa mesma instruo, fazem-se entre as fases Q1 e Q4 seguintes. No diagrama abaixo, pode-se observar a relao entre o ciclo de instruo e o clock do oscilador (OSC1) assim como as fases Q1-Q4. O contador de programa (Program Counter ou PC) guarda o endereo da prxima instruo a ser executada.

Cada ciclo de instruo inclui as fases Q1, Q2, Q3 e Q4. A extrao do cdigo de uma instruo da memria de programa, feita num ciclo de instruo, enquanto que a sua decodificao e execuo, so feitos no ciclo de instruo seguinte. Contudo, devido sobreposio pipelining (o microcontrolador ao mesmo tempo em que executa uma instruo extrai simultaneamente da memria o cdigo da instruo seguinte), pode-se considerar que, para efeitos prticos, cada instruo demora um ciclo de instruo para ser executada. No entanto, se a instruo provocar uma mudana no contedo do contador de programa (PC), ou seja, se o PC no tiver que apontar para o endereo seguinte na memria de programa, mas sim para outro (como no caso de saltos ou de chamadas de subrotinas), ento dever considerar-se que a execuo desta instruo demora dois ciclos. Isto acontece, porque a instruo vai ter que ser processada de novo, mas, desta vez, a partir do endereo correto. O ciclo de chamada comea na fase Q1, escrevendo a instruo no registro de instruo (Instruction Register IR). A decodificao e execuo continuam nas fases Q2, Q3 e Q4 do clock.

Fluxograma

das

Instrues

no

Pipeline

TCY0: lido da memria o cdigo da instruo MOVLW 55h;

TCY1: executada a instruo MOVLW 55h e lida da memria a instruo MOVWF PORTB; TCY2: executada a instruo MOVWF PORTB e lida a instruo CALL SUB_1; TCY3: executada a chamada (call) de um subprograma CALL SUB_1 e lida a instruo BSF PORTA,BIT3. Como esta instruo no a prxima instruo a ser executada (primeira instruo do subprograma SUB_1), a leitura de uma instruo tem que ser feita de novo. Este um exemplo de uma instruo que precisa de mais que um ciclo. TCY4: este ciclo de instruo totalmente usado para ler a primeira instruo do subprograma no endereo SUB_1; TCY5: executada a primeira instruo do subprograma SUB_1 e lida a instruo seguinte. Unidade Central de Processamento A unidade central de processamento (CPU) o crebro do microcontrolador. Essa parte responsvel por extrair a instruo da memria de programa, decodificar essa instruo e execut-la.

Registros

Direto
Registro

Indireto

Registro

Esquema da unidade central de processamento CPU A principal funo da unidade central de processamento a de decodificar as instrues do programa. A cada uma das instrues do conjunto do microcontrolador, corresponde um conjunto de aes para a implementao da instruo. Estas aes podem envolver transferncias de dados de um local de memria para outro, de um local de memria para as portas, e diversos clculos. Unidade Lgica e Aritmtica (ULA) A ULA do PIC possui 8 bits de largura e um nico acumulador denominado w (working register). Ela faz operaes aritmticas de soma e subtrao (em 2- complemento) e operaes lgicas como rotate, and, or, xor etc. Nas operaes lgicas e aritmticas com 2 operandos, o acumulador w sempre um dos operandos e qualquer um dos 80 registradores f pode ser o 2 operando (ou uma constante de 8 bits ou literal, codificada na prpria instruo).

Instrues lgico/aritmticas com um s operando (por exemplo inc, dec, clr, com, bit set, etc) tomam como operando ou o acumulador w ou um registrador f. As instrues lgicas e aritmticas podem atualizar os bits Z (zero) , C (carry) e DC (digit carry) do registrador de estado (f = 03). Uma caracterstica interessante das instrues com dois operandos envolvendo w e um registrador f que um bit na instruo permite escolher se o resultado vai para o acumulador w (bit= 0) ou para o registrador f (bit = 1), permitindo algumas operaes pouco convencionais como: f - w => w. Nos mnemnicos das instrues do PIC o destino do resultado designado genericamente pela letra d e especificamente pelas letras f ou w ( conveniente, portanto, definir nos programas em assembler duas constantes w e f com as diretivas: w equ 0 e f equ 1). Por exemplo: a instruo movf f, w move o contedo de um registrador genrico f para o acumulador w, a instruo movwf f move o contedo do acumulador w para um registrador genrico f e a instruo movlw k move uma constante k para w. Obs: Existem dois paradigmas largamente utilizados para codificao simblica de instrues com dois operandos: o paradigma da Intel, onde uma instruo genrica do tipo: opr dest, source significa: dest <= dest opr source (interprete o smbolo <= como "recebe" e opr como a operao feita pela instruo) e o paradigma do minicomputador PDP11 e seus seguidores como os microprocessadores Motorola MCHC11 e MC68000, onde uma instruo do tipo: opr source, dest significa: source opr dest => dest ( interprete o smbolo => como "vai para" ) O PIC 16F8X adota o paradigma do PDP11, porm de forma no ortogonal como pode ser notado claramente nas 3 instrues vistas anteriormente.

Unidade lgica-aritmtica

Diagrama de blocos do PIC 16F877

Registradores f especiais (SFR - Special File Registers) Os registradores f de nmero 0 a 0xb so especiais, mas podem ser (na sua maioria) lidos/alterados por qualquer instruo envolvendo um registrador f. Alguns refletem o estado da CPU e so particularmente importantes para o programador assembler: Registrador STATUS

Bit 0 C (Carry) Transporte: Este bit afetado pelas operaes de adio, subtrao e deslocamento. setado (assume o valor 1), quando na subtrao X Y, X menor que Y e resetado (assume o valor 0), quando na subtrao X-Y, X maior que Y. 1= Ocorreu um transporte no bit mais significativo 0= No ocorreu transporte no bit mais significativo O bit C afetado pelas instrues ADDWF, ADDLW, SUBLW e SUBWF. Bit 1 DC (Digit Carry) Transporte de dgito: Este bit afetado pelas operaes de adio e subtrao. Ao contrrio do anterior, DC assinala um transporte do bit 3 para o bit 4 do resultado. Este bit recebe o valor 1, quando na subtrao X Y, X menor que Y e recebe o valor 0, quando na subtrao X-Y, X maior que Y. 1= Ocorreu um transporte no quarto bit mais significativo 0= No ocorreu transporte nesse bit O bit DC afetado pelas instrues ADDWF, ADDLW, SUBLW e SUBWF. Bit 2 Z (bit Zero) Indicao de resultado igual a zero: Este bit recebe o valor 1 quando o resultado da operao lgica ou aritmtica executada igual a 0. 1= resultado igual a zero 0= resultado diferente de zero Bit 3 PD (Bit de queda de tenso Power Down): Este bit recebe 1 quando o microcontrolador alimentado e comea a trabalhar, depois de um reset normal e depois da execuo da instruo CLRWDT. A instruo SLEEP pe este bit em 0 ou seja, quando o microcontrolador entra no regime de baixo consumo / pouco trabalho. Este bit pode tambm ser setado (assume o valor 1), no caso de ocorrer um impulso no pino RB0/INT, uma variao nos quatro bits mais significativos da porta B, ou quando concluda uma operao de escrita na DATA EEPROM ou ainda pelo watchdog. 1 = depois de ter sido ligada a alimentao 0 = depois da execuo de uma instruo SLEEP Bit 4 TO (Time-out - transbordo do Watchdog): Este bit recebe 1, depois da alimentao ser ligada e depois da execuo das instrues CLRWDT e SLEEP. O bit recebe 0 quando

o watchdog consegue chegar ao fim da sua contagem (overflow = transbordar), o que indica que qualquer coisa no esteve bem. 1 = no ocorreu transbordo 0 = ocorreu transbordo bits 5 e 6 RP1:RP0 (bits de seleo de banco de registros): Estes dois bits so a parte mais significativa do endereo utilizado para endereamento direto. Como as instrues que endeream diretamente a memria dispem somente de sete bits, preciso mais um ou dois bits para poder enderear todos os registros (memria RAM) do PIC16F8X. 11 = banco de registros 3 10 = banco de registros 2 01 = banco de registros 1 00 = banco de registros 0 Bit 7 IRP (Bit de seleo de banco de registros):Este bit utilizado no endereamento indireto da RAM interna, como oitavo bit 1 = bancos 2 e 3 0 = bancos 0 e 1 (endereos de 00h a FFh) O registro de estado (STATUS), contm o estado da ALU (C, DC, Z), estado de RESET (TO, PD) e os bits para seleo do banco de memria (IRP, RP1, RP0). Considerando que a seleo do banco de memria controlada atravs deste registro, ele tem que estar presente em todos os bancos. Registrador OPTION

Bits

0 a 2 PS0, PS1, PS2 (bits de seleo do divisor Prescaler): Estes trs bits definem o fator de diviso do prescaler.

Bit 3 PSA (Bit de Atribuio do Prescaler): Bit que atribui o prescaler ao TMR0 ou ao watchdog. 1 = prescaler atribudo ao watchdog 0 = prescaler atribudo ao temporizador TMR0

Bit 4 T0SE (bit de seleo de borda ativa em TMR0): Se for permitido aplicar impulsos em TMR0, a partir do pino RA4/TOCK1, este bit determina se os impulsos ativos so os impulsos ascendentes ou os impulsos descendentes. 1 = Borda descendente 0 = Borda ascendente Bit 5 TOCS (bit de seleo de fonte de clock em TMR0): Este pino escolhe a fonte de impulsos que vai ser ligada ao temporizador. Esta fonte pode ser o clock do microcontrolador (freqncia de clock a dividir por 4) ou impulsos externos no pino RA4/TOCKI. 1 = impulsos externos 0 = do clock interno Bit 6 INDEDG (bit de seleo de borda de interrupo): Se esta interrupo estiver habilitada, possvel definir a borda que vai ativar a interrupo no pino RB0/INT. 1 = borda ascendente 0 = borda descendente Bit 7 RBPU (Habilitao dos resistores de pull-up nos bits da porta B): Este bit introduz ou retira as resistncias internas de pull-up da porta B. 1 = resistncias de pull-up desligadas 0 = resistncias de pull-up ligadas Organizao da Memria O PIC16F877 tem dois blocos de memria separados, um para dados e o outro para o programa. A memria EEPROM e os registros de uso genrico (GPR) na memria RAM constituem o bloco para dados e a memria FLASH constitui o bloco de programa. Memria de programa A memria de programa implementada usando tecnologia FLASH, o que torna possvel programar o microcontrolador muitas vezes antes de se obter a verso definitiva do programa. No PIC 16F877 o tamanho da memria de programa de 8192 endereos de palavras de 14 bits, destes, os endereos zero e quatro esto reservados respectivamente para o reset e para o vetor de interrupo. Memria de dados A memria de dados compreende memria EEPROM e memria RAM. A memria EEPROM consiste em 256 posies para palavras de oito bits. A memria EEPROM no faz parte diretamente do espao de memria mas acessada indiretamente atravs dos registros EEADR e EEDATA. Como a memria EEPROM serve em geral para armazenar dados que devem ser mantidos mesmo aps o desligamento do sistema onde o microcontrolador est inserido, existe um procedimento especfico para escrever na EEPROM que tem que ser seguido de modo a evitar uma escrita acidental. A memria RAM para dados, ocupa um espao no mapa de memria que varia de acordo com o banco de memria usado, conforme indicado na tabela abaixo

Banco 0 1 2 3

Faixa de endereos da RAM 0x20 a 0x7F 0xA0 a 0xEF 0x110 a 0x16F 0x190 a 0x1F0

Os locais da memria RAM so tambm chamados registros GPR (General Purpose Registers = Registros de uso geral). Os registros GPR podem ser acessados sem referenciar o banco de memria em que o mesmo se encontra. Registros SFR Os registros que ocupam 12 primeiras localizaes nos bancos 0 a 4 so registros especiais e tm a ver com a manipulao de certos blocos do microcontrolador. Estes registros so os SFR (Special Function Registers ou Registros de Funes Especiais).

Mapa de Registros do PIC 16F877

Contador de Programa O contador de programa (PC = Program Counter), um registro de 13 bits que contm o endereo da instruo que vai ser executada. Pilha O PIC16F877 tem uma pilha (stack) de 13 bits e 8 nveis de profundidade, o que corresponde a 8 locais de memria com 13 bits de largura. O seu papel bsico guardar o valor do contador de programa quando ocorre um salto do programa principal para o endereo de um subprograma a ser executado. Depois de ter executado o subprograma, para que o microcontrolador possa continuar com o programa principal a partir do ponto em que o deixou, ele tem que buscar na pilha esse endereo e carreg-lo no contador de programa. Quando ocorre o desvio de um programa para um subprograma, o contedo do contador de programa salvo na da pilha (um exemplo disto a instruo CALL). Quando so executadas instrues tais como RETURN, RETLW ou RETFIE no fim de um subprograma, o contador de programa retirado da pilha, de modo que o programa possa continuar a partir do ponto em que a seqncia foi interrompida. Estas operaes de colocar e extrair da pilha o contador de programa, so designadas por PUSH (colocar na pilha) e POP (retirar da pilha), estes dois nomes provm de instrues com estas designaes, existentes em alguns microcontroladores de maior porte. Programao no Sistema Para programar a memria de programa, o microcontrolador tem que entrar num modo especial de funcionamento no qual o pino MCLR posto a 13,5V e a voltagem da alimentao Vdd deve permanecer estvel entre 4,5V e 5,5V. A memria de programa pode ser programada em srie, usando dois pinos data/clock que devem ser previamente separados do dispositivo em que o microcontrolador est inserido, de modo que no possam ocorrer erros durante a programao. Modos de endereamento Os locais da memria RAM podem ser acessados direta ou indiretamente. Endereamento Direto O endereamento direto feito atravs de um endereo de 9 bits. Este endereo obtido juntando aos sete bits do endereo direto de uma instruo, mais dois bits (RP1 e RP0) do registro STATUS, como pode ser visto na figura que se segue. Qualquer acesso aos registros especiais (SFR), pode ser um exemplo de endereamento direto. Bsf STATUS, RP0 movlw 0xFF movwf TRISA :banco 0 :w = 0xFF :o endereo do registro TRISA retirado do cdigo da instruo movwf TRISA

Registro

Seleo de Banco

Seleo de Registro

Endereamento Direto Endereamento Indireto O endereamento indireto, no retira um endereo do cdigo da instruo. O endereo obtido com a ajuda do bit IRP do registro STATUS e do registro FSR. O local endereado acessado atravs do registro INDF e coincide com o endereo contido em FSR (qualquer instruo que use INDF como registro, na realidade acessa os dados apontados pelo registro FSR). Por exemplo, considere que o registro de uso genrico de endereo 0Fh contm o valor 20. Escrevendo o valor 0Fh no registro FSR, obtm-se um ponteiro para o registro 0Fh e, ao ler o registro INDF, obtm-se o valor 20, o que significa que foi lido o contedo do registro 0Fh, sem o mencionar explicitamente (mas atravs de FSR e INDF).
Registro

Registro FSR

Seleo de Banco

Seleo de Registro

Endereamento Indireto

Interrupes As interrupes so um mecanismo que o microcontrolador possui e que torna possvel responder a alguns eventos no momento em que eles ocorrem. Geralmente, cada interrupo muda a direo de execuo do programa, suspendendo a sua execuo, enquanto o microcontrolador executa um subprograma que a rotina de atendimento de interrupo. Depois deste subprograma ter sido executado, o microcontrolador continua com o programa principal, a partir do local em que o tinha abandonado.
Programa sendo executado

Interrupo externa e seqncia de desvios para atendimento da interrupo e retorno ao programa principal. O registro que controla as interrupes chamado INTCON e tem o endereo 0Bh. O papel do INTCON permitir ou impedir as interrupes e, mesmo no caso de elas no serem permitidas, ele registra os pedidos de interrupo, mudando o valor de alguns dos seus bits. Registrador INTCON

Bit

0 RBIF (flag que indica variao na porta B): Bit que informa que houve mudana nos nveis lgicos nos pinos 4, 5, 6 e 7 da porta B. 1= pelo menos um destes pinos mudou de nvel lgico 0= no ocorreu nenhuma variao nestes pinos Bit 1 INTF (flag de interrupo externa INT): Ocorrncia de uma interrupo externa 1= ocorreu uma interrupo externa

0= no ocorreu uma interrupo externa Se uma transio ascendente ou descendente for detectada no pino RB0/INT, o bit INTF ajustado para 1 (o tipo de sensibilidade, ascendente ou descendente definida atravs do bit INTEDG do registro OPTION). O subprograma de atendimento desta interrupo, deve resetar este bit, afim de que a prxima interrupo possa ser detectada. Bit 2 TOIF (Flag de interrupo por transbordo de TMR0): O contador TMR0, transbordou. 1= o contador mudou a contagem de FFh para 00h 0= o contador no transbordou Para que esta interrupo seja detectada, o programa deve resetar este bit. Bit 3 RBIE (bit de habilitao de interrupo por variao na porta B): Habilitao da interrupo por variao dos nveis lgicos nos pinos 4, 5, 6 e 7 da porta B. 1= habilita a interrupo por variao dos nveis lgicos 0= inibe a interrupo por variao dos nveis lgicos A interrupo s pode ocorrer se RBIE e RBIF estiverem simultaneamente em 1 lgico. Bit 4 INTE (bit de habilitao da interrupo externa INT): Bit que habilita uma interrupo externa no bit RB0/INT. 1= interrupo externa habilitada 0= interrupo externa desabilitada A interrupo s pode ocorrer se INTE e INTF estiverem simultaneamente em1 lgico. Bit 5 TOIE (bit de habilitao de interrupo por transbordo de TMR0): Bit que habilita a interrupo por transbordo do contador TMR0. 1= interrupo habilitada 0= interrupo desabilitada A interrupo s pode ocorrer se TOIE e TOIF estiverem simultaneamente em 1 lgico. Bit 6 PEIE (bit de habilitao de interrupo dos perifricos): Bit que habilita as interrupes geradas pelos perifricos. 1= habilita todas as interrupes dos perifricos 0= desabilita todas as interrupes dos perifricos Se EEIE e EEIF (que pertence ao registro EECON1) estiverem simultaneamente em 1, a interrupo pode ocorrer. Bit 7 GIE (bit de habilitao global de interrupo): Bit que habilita ou desabilita todas as interrupes. 1= todas as interrupes so permitidas 0= todas as interrupes impedidas

De um modo geral, cada fonte de interrupo tem dois bits associados. Um habilita a interrupo e o outro assinala quando a interrupo ocorre. Existe um bit comum a todas as interrupes chamado GIE que pode ser usado para desabilitar ou habilitar todas as interrupes, simultaneamente. Este bit muito til quando se est escrevendo um programa porque permite que todas as interrupes sejam impedidas durante um perodo de tempo, de tal maneira que a execuo de uma parte crtica do programa no possa ser interrompida. Quando a instruo que faz GIE= 0 executada (GIE= 0 impede todas as interrupes), todos os pedidos de interrupo pendentes, sero ignorados. Memria de dados EEPROM O PIC16F877 tem 256 bytes de localizaes de memria EEPROM, correspondentes aos endereos de 00h a FFh e onde podemos ler e escrever. A caracterstica mais importante desta memria de no perder o seu contedo quando a alimentao desligada. Na prtica, isso significa que os dados escritos permanecem no microcontrolador, mesmo quando a alimentao desligada. Sem alimentao, estes dados permanecem no microcontrolador durante mais de 40 anos (especificaes do fabricante do microcontrolador PIC), alm disso, esta memria suporta at 10000 operaes de escrita. A memria EEPROM colocada num espao de memria especial e pode ser acessada atravs dos registros especiais: EEDATA (endereo 10Ch): Contm o byte menos significativo do dado de 14 bits a ser lido/escrito na EEPROM; EEDATAH (endereo 10Eh): Contm o byte mais significativo do dado de 14 bits a ser lido/escrito na EEPROM; EEADR (endereo 10Dh): Contm o byte menos significativo do endereo de 13 bits da posio de memria da EEPROM a ser lida/escrita; EEADRH (endereo 10Fh): Contm o byte mais significativo do endereo de 13 bits da posio de memria da EEPROM a ser lida/escrita; EECON1 (endereo 18Ch): Registrador de controle de acesso a memria EEPROM; EECON2 (endereo 18Dh): Este registro no existe fisicamente e serve para proteger a EEPROM de uma escrita acidental. O registro EECON1 ocupa o endereo 18Ch e um registro de controle com cinco bits implementados. Os bits 4, 5 e 6 no so usados e, se forem lidos, so sempre iguais a zero. Os bits do registro EECON1, devem ser interpretados do modo que se segue.

Bit 0 RD (bit de controle de leitura): Ao setar este bit (Bit 0 = 1), tem incio a transferncia do dado do endereo definido em EEADRH:EEADR para o registro EEDATAH:EEDATA.

Como o tempo no essencial, tanto na leitura como na escrita, o dado de EEDATAH: EEDATA pode j ser usado na instruo seguinte. 1 = inicia a leitura 0 = no inicia a leitura Este bit resetado, (Bit 0 = 0) por hardware uma vez que a escrita tenha terminado. Bit 1 WR (bit de controle de escrita): Ao setar este bit ( Bit 1 = 1), tem incio a escrita do dado a partir do registro EEDATAH:EEDATA para o endereo especificado no registro EEADRH:EEADR. 1 = inicia a escrita 0 = no inicia a escrita Este bit resetado, (Bit 1 = 0) por hardware uma vez que a escrita tenha terminado. Bit 2 WREN (bit de habilitao de escrita na EEPROM): Permite a escrita na EEPROM. Se este bit no estiver em um lgico, o microcontrolador no permite a escrita na EEPROM. 1 = a escrita permitida 0 = no se pode escrever Bit 3 WRERR (Erro de escrita na EEPROM): Erro durante a escrita na EEPROM Este bit setado (Bit 3 = 1) quando a escrita na EEPROM for interrompida por um sinal de reset ou por um transbordo no temporizador do watchdog (no caso deste estar ativo). 1 = ocorreu um erro 0 = no houve erros Bit 7 EEPGD (Bit que indica acesso a memria de programa (FLASH) ou a memria de dados EEPROM) 1 = Acesso a memria de programa (FLASH) 0 = Acesso a memria de dados (EEPROM) Portas de E/S Alguns pinos das portas de E/S so multiplexados com uma funo alternativa de um perifrico do microcontrolador. Em geral, quando o perifrico habilitado este pino no pode ser utilizado como um pino de E/S de propsito geral. Porta A e o registrador TRISA A porta A uma porta de E/S bidirecional de 6 bits de largura. A direo que os pinos assumem (entrada ou sada) determinada pelos bits do registrador TRISA, setando um bit de TRISA, faz com que o correspondente pino da porta funcione como entrada. Resetando o bit, o respectivo pino funciona como sada. Uma operao de leitura da porta, l o valor dos pinos, enquanto em uma escrita o dado copiado para o latch da porta. O pino RA4 multiplexado com a entrada de clock do mdulo Timer0 (pino RA4/T0CKI). Outros pinos da porta A so multiplexados com entradas analgicas e entradas analgicas VREF. A operao de cada pino selecionada setando/resetando os bits de controle no registrador ADCON1 (A/D Control Register1). O registrador TRISA controla a direo

dos pinos da porta A mesmo quando eles so usados como entradas analgicas, neste caso os respectivos bits do TRISA devem estar setados. EXEMPLO: Inicializao da porta A BCF STATUS, RP0 ; BCF STATUS, RP1 ; Bank0 CLRF PORTA ; Initialize PORTA by clearing output data latches BSF STATUS, RP0 ; Select Bank 1 MOVLW 0x06 ; Configure all pins MOVWF ADCON1 ; as digital inputs MOVLW 0xCF ; Value used to initialize data direction MOVWF TRISA ; Set RA<3:0> as inputs; RA<5:4> as outputs; TRISA<7:6> are always; read as 0. Tabela: Funes dos pinos da porta A

Resumo dos registradores associados a porta A

Porta B e o registrador TRISB A porta B uma porta de E/S bidirecional de 8 bits de largura. A direo que os pinos assumem (entrada ou sada) determinada pelos bits do registrador TRISB, setando um bit de TRISB, faz com que o correspondente pino da porta funcione como entrada. Resetando o bit, o respectivo pino funciona como sada. Uma operao de leitura da porta, l o valor dos pinos, enquanto em uma escrita o dado copiado para o latch da porta. Trs pinos da porta B so multiplexados com a funo de Programao em Baixa Tenso (RB3/PGM, RB6/PGC e RB7/PGD). Cada pino da porta B pode ser ajustado para funcionar com um resistor de pull-up. O bit RBPU (OPTION_REG<7>) controla esta configurao, quando resetado ativa os resistores de pull-up. Os pinos de RB7 a RB4 podem gerar interrupes quando configurados como pinos de entrada. Os valores dos pinos so comparados com o valor da ltima leitura destes pinos,

gravada no latch. As diferenas dos quatro pinos passa por uma operao lgica OU, para gerar a interrupo RB Port Change e ajustar o respectivo bit de flag RBIF (Bit 0 do registrador INTCON). RB0/INT pode ser configurado tambm como um pino de interrupo. A borda que identifica a interrupo configurada a partir do bit INTEDG (bit 6) do registrador OPTION. Tabela: Funes dos pinos da porta B

Resumo dos registradores associados a porta B

Porta C e o registrador TRISC A porta C uma porta de E/S bidirecional de 8 bits de largura. A direo que os pinos assumem (entrada ou sada) determinada pelos bits do registrador TRISC, setando um bit de TRISC faz com que o correspondente pino da porta funcione como entrada. Resetando o bit, o respectivo pino funciona como sada. Uma operao de leitura da porta, l o valor dos pinos, enquanto em uma escrita o dado copiado para o latch da porta. Quando funes de perifricos forem habilitadas, deve ser observado se no h uma sobreposio de configuraes, j que alguns perifricos sobrepem sua configurao originalmente definida no registrador TRISC.

Tabela: Funes dos pinos da porta C

Resumo dos registradores associados a porta C

Porta D e o registrador TRISD A porta D uma porta de E/S bidirecional de 8 bits de largura. A direo que os pinos assumem (entrada ou sada) determinada pelos bits do registrador TRISD, setando um bit de TRISD faz com que o correspondente pino da porta funcione como entrada. Resetando o bit, o respectivo pino funciona como sada. Uma operao de leitura da porta, l o valor dos pinos, enquanto em uma escrita o dado copiado para o latch da porta. A porta D pode ser configurada como uma porta paralela de 8 bits, setando o bit de controle PSPMODE (bit 4) do registrador TRISE. Nesse modo, os buffers de entrada so TTL. Tabela: Funes dos pinos da porta D

Resumo dos registradores associados a porta D

A porta E tem trs pinos, RE0/RD/AN5, RE1/WR/AN6 e RE2/CS/AN7, que so individualmente configurados como entrada ou como sada. A porta de E torna-se entrada de controle para a porta paralela (porta D), quando o bit PSPMODE (bit 4 de TRISE) setado. Nesse modo, os bits de 2 a 0 de TRISE devem estar setados para configurar os respectivos pinos da porta E como entradas digitais e os bits PCFG3:PCFG0 do registrador ADCON1 deve estar ajustados para configurar RE2:RE0 como E/S digital. Os pinos da porta E so multiplexados com entradas analgicas. Quando selecionados como uma entrada analgica, leituras desses pinos retornam 0. O TRISE controla a direo dos pinos RE mesmo quando eles esto sendo usados como entradas analgicas (deve ser garantido que os pinos esto configurados como entradas pelo TRISE, quando os mesmos funcionam como entradas analgicas ). Funo dos bits do registrador TRISE (Endereo 89h)

Tabela: Funes dos pinos da porta E

Resumo dos registradores associados a porta E

Caractersticas especiais da CPU O PIC16F877 possui um conjunto de caractersticas que permite customizar a sua operao sem a necessidade de componentes externos. So elas: Seleo de Oscilador Seleo do modo de Reset o Power-on Reset (POR) o Power-up Timer (PWRT) o Oscillator Start-up Timer (OST) o Brown-out Reset (BOR) Interrupes Watchdog Timer (WDT) SLEEP Proteo de cdigo ID locations Programao serial In-Circuit Programao serial In-Circuit em baixa tenso In-Circuit Debugger O WatchDog timer pode ser desligado apenas ajustando alguns bits de configurao. O mesmo possui o prprio oscilador. H dois Timers que geram os atrasos necessrios quando

o microcontrolador ativado, o OST (Oscilator Start-up Timer), que mantm o PIC em RESST at o oscilador a cristal estabilizar e o PWRT (Power-up Timer), que gera um atraso fixo de 72 ms quando o PIC energizado (mantm o PIC em RESET enquanto a tenso da fonte estabiliza). O modo SLEEP foi desenvolvido para oferecer um consume muito baixo quando o PIC est no modo power-down. A sada do modo SLEEP pode ocorrer por reset externo, Watchdog Timer Wake-up ou atravs de uma interrupo. Diferentes opes de osciladores so disponibilizadas, para permitir uma perfeita adequao do PIC ao sistema. A opo RC diminui custos, enquanto a opo LC economiza energia. Um conjunto de bits de configurao so usados para selecionar as opes. Bits de configurao Os bits de configurao so mapeados na memria de programa, no endereo 2007h. O endereo 2007h est dentro do espao de memria de programa do usurio (pertence ao espao de memria especial de teste e configurao 2000h a 3FFFh), que pode ser acessado apenas durante a programao.

Palavra de configurao

Tipos de osciladores O PIC 16F87X pode ser operado em quatro modos distintos de oscilao. O usurio pode programar um dos modos abaixo a partir dos bits (FOSC1 and FOSC0): LP Low Power Crystal XT Crystal/Resonator HS High Speed Crystal/Resonator RC Resistor/Capacitor Nos modos XT, LP ou HS,um cristal deve ser conectado aos pinos OSC1/CLKIN e OSC2/CLKOUT para estabelecer a oscilao. Quando nos modos XT, LP ou HS, o dispositivo pode ter um fonte externa de clock para acionar o pino OSC1/CLKIN.

Para aplicaes insensveis a variaes de tempo, a opo RC apresenta baixo custo de implementao, no entanto, a freqncia do oscilador variar em funo de variaes da tenso da fonte e dos valores de R e C Reset The PIC16F87X pode operar com vrios tipos de reset: Power-on Reset (POR) MCLR reset during normal operation MCLR reset during SLEEP WDT Reset (during normal operation) WDT Wake-up (during SLEEP) Brown-out Reset (BOR) Alguns registradores no so afetados em algumas condies de reset, Neste caso o status desses registradores desconhecido no POR e no so alterados pelos outros modos de reset. Muitos outros registradores so ajustados para um estado de reset no POR, no MCLR e WDT reset, no NCLR durante o SLEEP e no BOR. Eles so afetados pro um WDT Wake-up, que visto como um reincio de uma operao normal. Os bits TO e PD so setados ou resetados em diferentes situaes de reset como indicado na tabela abaixo. Esses bits so usados para determinar o modo de reset. Bits de status e seu significado

Power-On Reset (POR) Um Power-on Reset pulso gerado internamente ao chip quando uma subida de VDD detectada (na faixa de 1,2V 1,7V). Power-up Timer (PWRT) O Power-up Timer fornece um time-out nominal fixo de 72 ms na energizao do PIC, aps um POR. O chip mantido em reset enquanto PWRT est ativo. O atraso gerado pelo PWRTs time, permite o VDD atingir um nvel aceitvel de tenso para operao. Um bit de configurao provido para permitir habilitar/desabilitar o PWRT. Oscillator Start-up Timer (OST) O Oscillator Start-up Timer (OST) fornece 1024 ciclos de oscilao de atraso (da entrada OSC1) ao fim do atraso do PWRT. Isso garante que o circuito de oscilao a cristal atingiu

a sua estabilidade. O OST time-out invocado apenas nos modos XT, LP e HS e apenas no Power-on Reset ou wake-up de SLEEP. Brown-Out Reset (BOR) O bit de configurao, BODEN, pode habilitar ou desabilitar o circuito Brown-out Reset. Se VDD cai abaixo de VBOR (parmetro D005, aproximadamente4V) por mais do que TBOR (parmetro #35, aproximadamente 100mS), a situao de brown-out resetar o PIC. If VDD cai abaixo de VBOR por menos que TBOR, um reset no poder ocorrer. Uma vez que o brown-out ocorra, o dispositivo permanecer em brown-out reset at VDD subir acima deVBOR. O power-up timer ento mantm o dispositivo em reset por TPWRT (parmetro #33, aproximadamente 72mS). Se VDD deve cair abaixo de VBOR durante TPWRT, o processo de brown-out reset reinicia quando VDD sobe acima de VBOR com o power-up timer reset. O power-up timer est sempre habilitado quando o circuito de brownout reset est habilitado, independente do estado do bit de configurao PWRT A tabela abaixo mostra a condio de reset para os registradores de STATUS, PCON e PC .

As tabelas abaixo mostram as condies de reset para todos os outros registradores.

Power Control/Status Register (PCON) O registrador Power Control/Status, PCON, tem at dois bits, dependendo do dispositivo. O Bit0 o bit de Brown-out Reset Status, BOR. O bit BOR desconhecido no Power-on Reset. Ele deve ser setado pelo usurio e checado em subseqentes resets para ver se o bit BOR est apagando, indicando que um BOR ocorreu. O bit BOR um bit "dont care" e necessrio predizer se a circuitaria do Brown-out Reset est desabilitada (apagando o bit BODEN na palavra de configurao). O bit 1 o POR (Power-on Reset Status bit). Ele apagado no Power-on Reset e no afetado. O usurio deve setar este bit aps um Power-on Reset.
Referncias 1 Microcontrolador PIC 16F8X - Resumo da Arquitetura, ,MC404B - Nov 2001 Guimares. 2 PIC16F87X Datasheet Microchip Technology Incorporated. USA. Nov 1999. 3 - Microcontroladores PIC mikroElektronika , 2003 Prof. Clio

PREPARAO 1. Quantos ciclos de clock no total so gastos para realizar a busca e execuo de uma instruo no PIC? 2. Descreva a condio indicada por cada Flag (bits de 0 a 4) do registrador de STATUS do PIC. 3. Identifique os bits do registrador OPTION que configuram o preescalonador do clock que alimenta o TIMER0 ou WatchDog. 4. Identifique a faixa de endereos de cada bloco de memria de dados (memria RAM) do PIC. 5. O que deve ser feito para programar o pino de uma porta de I/O como: a) Entrada digital; b) Sada digital. 6. Quais os pinos da porta B podem gerar interrupes? 7. Indique em que condio ocorre o Power-on-Reset e o Brown-Out-Reset. 8. Explique que operao realizada pelas instrues C para PIC abaixo: OUTPUT_HIGH (PIN); OUTPUT_LOW (PIN); OUTPUT_BIT (PIN, VALUE); OUTPUT_X (VALUE) (X=A, B, C,...);
9.

Explique que operao realizada pelas instrues C para PIC abaixo: INPUT (PIN); INPUT_X ( ), (X=A, B, C,...); Explique que operao realizada pelas instrues C para PIC abaixo: DELAY_MS(VALOR); DELAY_US(VALOR); Explique que operao realizada pelas instrues C para PIC abaixo: SET_TRIS_x (VALOR) (x=a,b,c,d ou e, representa uma porta de I/O) Elabore uma rotina em C que ao pressionar um boto, acenda um LED da placa de experimentos do PIC e ao apertar um segundo boto, apague o respectivo LED. Considere como pinos de entrada para leitura dos botes os pinos A3 e A4 da porta A. Considere como sada para acender o LED o pino B0 da porta B. Elabore uma rotina em C que incremente um contador (varivel do tipo int, 8 bits) a cada 0,1s (use a instruo delay_ms para gerar o atraso de 0,1s) e o escreva na porta D do PIC quando for pressionado um boto (use o cdigo do item 12). Elabore uma rotina em C que calcule o complemento de 2 do valor de 8 bits gerado pelo contador da rotina acima. Esse valor selecionado a aplicar um sinal 0 (zero) a entrada B0 (conecte um boto ao pino B0 do PIC). Ao pressionar o boto o valor selecionado deve ser apresentado atravs de LEDs usando os 8 bits da porta D e 1 (um) segundo depois, deve ser apresentado o complemento de 2 do nmero, usando tambm a porta D como sada de dados.

10.

11.

12.

13.

14.

Das könnte Ihnen auch gefallen