Curso de Microcontroladores PIC 16F84A João Neto Caetano Jnetcaetano@hotmail.com Marciel Gonçalves Azevedo Marcielgazevedo@hotmail.com Célio Rodrigues Pinto Treinamentos em geral, suporte a alunos universitários e técnicos e projetos personalizados em eletrônica.
Principais parâmetros Apenas 35 palavras de instruções; Todas as instruções usam ciclos de programa simples Opera em clock de 4 MHz ou de 20 MHz; Possui 1024 palavras em memória de programa; Possui 68 bytes em memória RAM; Possui 64 bytes memória EEPROM;
Principais parâmetros As instruções são de 14-bits 5 bits para comandos-instruções; 8 bits para dados. Possui 15 registradores para funções especiais; Possui quatro fontes de interrupção; - Externa RB0/INT - TMR0 timer por estouro de contagem - PORTB<7:4> interrupt-on-change - Data EEPROM escrita completa
Principais parâmetros Periféricos: Possui 13 pinos de I/O (entrada ou saída) que podem ser configurados independentemente; Alta corrente capaz de ligar um LED; - 25 ma por pino de I / O; Contador de tempo TMR0: com 8-bits; Programador / divisor de tempo prescaler.
Pinagem do CI RA2-1 18-RA1 RA3-2 17-RA0 RA4-TOCK1-3 16-OSC1/CLKIN 15-OSC2/CLKOUT MCLR-4 VSS-5 RB0-INT-6 PIC 16F84A 14-VDD 13RB7 RB1-7 12-RB6 RB2-8 11-RB5 RB3-9 10-RB4
Organização das memórias. 000 Memória de programa Flash EEprom 00 Registros 0B 80 Registros CB 0C 8C 14 Bits Memória RAM 8bits 1023 4F - CF 00 Memória EEprom 8bits 63
Organização das memórias. 00 - End indireto 01 - Tmer 0 02 - PCL 03 - Status 04 - FSR 05 - Port_A 06 - Port_B 07 - ----08 - EEdata 09 - EEADR 0A - PCLATH 0B Intcon Banco 0 0C Memória 80 - End indireto 81 Option_reg 82 - PCL 83 - Status 44 - FSR 85 - Tris_A 86 - Tris_B 87 - ----88 EEcon1 89 EEcon2 8A - PCLATH 8B Intcon Banco 1 8C Memória RAM uso Geral Banco 0 RAM uso Geral acesso junto ao Banco 0 4F Total 68 Bytes CF Total 68 Bytes
Registros de funções TMR0 O Timer0 é um módulo contador de 8 bits conta de 0 a 255, que pode iniciar a contagem em qualquer nº desde que este seja inserido via programa na posição de memória 01 do banco 0. Ele pode ser configurado para trabalhar com clock interno ou externo. E o seu clock pode ser subdividido em até 1-256 através do prescaler.
Registros de funções OPTION_REG É usado para configurar os registradores internos associados ao Tmr0, definindo o tipo de clock, o nº de divisões do clock, etc. PCL É o contador do programa, a cada instrução ele é incrementado a cada instrução ou é carregado com o novo endereço quando a instrução envolve algum salto.
Registros de funções STATUS Este registrador permite selecionar diretamente os bancos de memória, indica se houve estouro do contador de proteção Walt dog e as condições associadas ao resultado das operações lógicas e aritméticas. FSR FSR é um registrador para auxiliar o endereçamento indireto pelo registrador INDF (que não é um endereço físico)
Registros de funções PORTA e TRISA. PORT_A é um registrador com 5-bits que podem ser acessados pelos pinos externos em modo bidirecional, dependendo dos bits escritos no registrador interno Tris_A. Quando um bit de Tris_A (= 1) o bit corespondente no port_a será configurado como entrada. Quando um bit de Tris_A (= 0) o bit corespondente no port_a será configurado como saída.
Registros de funções PORTA e TRISA. No port_a o pino RA4 é multiplxado com o registrador de módulo do clock do Timer0 clock RA4/T0CKI. PORT_B- TRIS_B O funcionamento do Port_B e o Tris_B é idêntico ao Port_A e ao Tris_Ais porém p port_b possui 8-bits bi-direcionais.
Registros de funções PORT_B- TRIS_B Um bit de controle RBPU# (OPTION <7>) pode ligar os pull-ups que são automaticamente desligados quando os pinos são configurados como saídas. Os pull-ups também são desabilitados no Power-on Reset.
Registros de funções PORT_B- TRIS_B Quatro pinos do PORTB, RB7:RB4 tem uma característica de interrupção na mudança de estado. Apenas os pinos configurados com entrada podem causar esta interrupçaõ. Os pinos de entrada (RB7:RB4) são comparados com o valor antigo armazenado no latch, na última leitura do PORTB.
Registros de funções Registradores da EEprom EEdata registro de dados para escrita ou para leitura na EEprom. EEcon1 registro controle de escrita e leitura. Unimplemented: Bits 7-6-5 Read as '0' EEIF: bit 4 EEPROM Bit de flag operação de escrita 1 = A operação de escrita está completa 0 = A operação de escrita não está completa
Registros de funções Registradores da EEprom EEcon1 registro controle de escrita e leitura. WRERR: Bit 3 flag de erro da EEprom 1 = quando a operação de escrita é terminada de forma prematura pelo MCLR ou pelo reset do WDT 0 = a operação de escrita completou normalmente. WREN: bit 2 EEPROM habilita a escrita 1 = abilita o ciclo de escrita. 0 = inibe a ecriuta na Eeprom.
Registros de funções Registradores da EEprom EEcon1 registro controle de escrita e leitura. WR: Bit 1 Bit de contrle da escrita. 1 = inicia um ciclo de escrita. Este bit será zerado pelo hardware somente quando a escrita for completada ele apenas pode ser setado pelo software. 0 = quando o ciclo de escrita da EEprom esta completo RD: bit 0 controle de leitura 1 = inicia a leitura da EEprom este pino é zerado pelo hardware quando a leitura da EEprom esta completa. 0 = não inicia a leitura da EEprom
Registros de funções Registradores da EEprom EEcon2 registro de controle2 Para iniciar a operação de escrita é necessário escrever neste registrador a seguinte sequencia de dados 55H e deposis AAH EEADR registro localização de endereço na memória Eeprom 00 3F.
Registros de funções Leitura da EEprom Para ler um dado na memória EEprom é necessário escrever a posição da memória no registrador EEADR (end-09h) Passar para o banco 1 de memória, setar o bit 0 do registro EEcon1 (end-89h) habilitando a leitura Retornar ao banco 0 da memória e mover o dado do registro EEdata (end-08h) para a Work.
Registros De Funções Escrita Na EEprom Para escrever um dado na memória EEprom é necessário escrever a localização da memória no registrador EEADR (end-09h) Escrever o dado a ser gravado na memória no registro EEdata (end-08h) Ativar o bit2 do registrador EEcon1.
Registros De Funções Escrita Na EEprom Setar o bit 1 do EEcon1 (controle de escrita) Habilitar as interrupções no intcon GIE. Chamar a rotina de tempo para escrita
Registros De Funções PCLATH O contador de programa do PIC 16F84A possui 13 pinos, porém o PC (contador de programa é apenas de 8bits então para acessar os endereços acima de 255 utiliza-se outro registrador que formará dos bits 8 ao 12.
Registros De Funções INTCON O INTCON é um registrador que pode serescrito ou lido, e serve para habilitar e desabilitar vários tipos de interrupção bit 7. GIE : BIT7 desabilita todas as interrupções 1 = Permite habilitar todas as interrupções 0 = Desabilita todas interrupçõs EEIE: BIT6 habilita ou desabilita a escrita na EEprom 1 = habilita a interrupção de escrita na EEprom 0 = Desabilita a interrupção de escrita na EEprom
Registros De Funções INTCON T0IE: BIT5 Habilita ou desabilita interrupção de estrouro de contagem do TMR0. 1 = Habilita a interrupção do TMR0. 0 = Habilita a interrupção do TMR0. INTE:BIT4 habilita ou desabilita a interrupção externa RB0/INT. 1 = Habilita a interrupção externa RB0/INT. 0 = Desabilita a interrupção externa RB0/INT. RBIE:BIT3 RB Port Change Interrupt Enable bit 1 = Enables the RB port change interrupt 0 = Disables the RB port change interrupt
Registros De Funções INTCON bit 2 T0IF: Flag de estouro de contagem do TMR0. 1 = Houve um estouro de contagem do TMR0 Deve ser zerado pelo software. 0 = Não houve estouro de contagem do TMR0 INTF:BIT1 Flag de interrupção externa RB0/INT. 1 = Ocorreu uma interrupção externa em RB0/INT Deve ser zerado pelo software. 0 = Não ocorreu interrupção externa em RB0/INT RBIF:BIT0 RB Port Change Interrupt Flag bit 1 = At least one of the RB7:RB4 pins changed state (must be cleared in software) 0 = None of the RB7:RB4 pins have changed state