1. Memórias do tipo RAM estáticas: 1.

Banco de registradores: 9 bits de endereço e 8 bits de dados: 128 palavras de dados + 4 registradores do processador + 36 registradores de entrada e saída + 4 registradores de entrada e saída que são disponíveis apenas no PIC176F871; 2. Pilha de chamada de subprogramas: 3 bits de endereço que são sempre invisíveis e 8 palavras de 13 bits. 2. Memórias Flash: 1. Memória de programa: 11 bits de endereço e 14 bits de dados, 2K palavras disponíveis; 2. Memória de dados: 6 bits de endereço e 8 bits de dados, 64 palavras. 3. Endereçamento do banco de registradores: Os endereços de nove bits empregados para selecionar um dos registradores podem ser fornecidos de forma direta ou indireta. Na forma direta, os sete bits menos significativos do endereço são fornecidos diretamente na instrução e os dois bits mais significativos vem dos bits denominados RP0 e RP1 do registrador de indicadores. Dessa forma, o espaço de endereçamento fica dividido em quatro partes. Cada uma dessas quatro partes ( denominadas bancos de registradores ) corresponde a 128 endereços e é selecionada por uma das combinações dos valores de RP0 e RP1. Ou seja, os valores dos bits RP0 e RP1 definem qual dos bancos pode ser endereçado de forma direta. Na forma indireta, que é empregada sempre que for realizado um acesso ao pseudo registrador cujo endereço é 00, 80, 100 ou 180, os oito bis menos significativos são fornecidos pelo registrador denominado FSR e o bit mais significativo do endereço vem do bit denominado IRP do registrador de indicadores. Dessa forma, quando essa forma de endereçamento é empregada, o espaço de endereçamento fica dividido em duas metades, cada uma com 256 endereços e o valor do bit IRP define qual dessas metades está correntemente sendo usada. Como apenas seis registradores de entrada e saída só podem ser endereçados empregando endereços maiores que FF e esses registradores normalmente não são endereçados empregando endereçamento indireto, geralmente o bit IRP é fica sempre com valor 0. 4. Endereçamento da pilha A pilha só é empregada durante a execução de chamadas de rotina ( quando o valor do apontador de programa é empilhado ) e retornos de rotina ( quando o valor armazenado no topo da pilha é copiado para o apontador de programa ). Ela é endereçada por um apontador de pilha ( de três bits ) que não é visível. 5. Endereçamento da memória de programa A memória de programa geralmente é endereçada pelo apontador de programa, que é um registrador de 13 bits. Porém também é possível realizar escritas e leituras nessa memória. Nesse caso, essa memória é tratada como se fosse um dispositivo de entrada e saída e os endereços e também os dados a serem escritos ou que foram lidos dessa memória são colocados em pares de registradores de interface específicos. Durante á realização dessas operações de leitura ou escrita nessa memória o processador fica parado ( executando "nops" ) porque não pode ler o código da próxima instrução a ser executada.

1

Sempre que o valor do registrador IPL for alterado por uma instrução o apontador de programa receberá um valor formado pela concatenação dos cinco bits menos significativos do valor armazenado no registrador PCLATH com os oito bits que foram enviados para o registrador PCL. Ciclo de execução das instruções: Cada instrução é normalmente executada em quatro ciclos de relógio. 7. Endereçamento da memória de dados. Durante a execução de cada instrução é realizada simultaneamente a busca do código da próxima instrução a ser executada. essa instrução empregará dois ciclos de instrução ( oito ciclos de relógio ) para ser executada. a duplicação do tempo de execução da instrução só ocorre se o desvio for efetivamente realizado. Informa o endereço do registrador referenciado indiretamente Bits mais significativos do apontador de instrução STATUS 03 | 83 | 103 | 183 FSR PCLATH 04 | 84 | 104 | 184 0A | 8A | 10A | 18A 8. No caso das instruções de desvio condicional. Por causa dessa simultaneidade. 2 . A memória de dados é tratada como se fosse um dispositivo de entrada e saída e os seus endereços e também os dados a serem escritos ou que foram lidos dessa memória são colocados em registradores de interface específicos. o processador executa um "nop" e busca o código da instrução armazenada na posição de memória endereçada pelo novo valor do apontador de instrução. sempre que o apontador de programa é modificado durante a execução de uma instrução.6. Essa duplicação do tempo da execução ocorre tanto no caso de instruções de desvio quanto no caso das instruções que alterem o valor do registrador PCL. Isso é necessário porque o código de instrução buscado durante a execução da instrução foi aquele que está armazenado na posição da memória de programa cujo endereço corresponde ao valor que o apontador de programa tinha antes de ser modificado pela instrução. Registradores do processador Nome W IND PCL Endereço 00 | 80 | 100 | 180 02 | 82 | 102 | 182 Função Registrador de trabalho ( acumulador ) Pseudo registrador usado para referenciar o registrador cujo endereço é igual ao valor armazenado no registrador FSR 8 bits menos significativos do apontador de instrução Registrador de Indicadores Bit Nome Função 0 C Vai um ou não pede emprestado 1 DC Vai um do quarto para o Quinto bit 2 Z Zero 3 PD\ É zerado pela instrução "SLEEP" 4 TO\ É zerado quando ocorre um reset causado pelo Watch dog 5 RP0 Bits mais significativos do endereço usado em endereçamento 6 RP1 direto Bit mais significativo do endereço usado em endereçamento 7 IRP indireto. Durante o ciclo de instrução adicional.

9. se for um. Desvios 1 0 Alvo do desvio Op. indica que esse valor deve ser armazenado em um registrador do banco de registradores Fornece os sete bits mais significativos do valor empregado para Endereço 7 selecionar qual dos registradores deve ser empregado Número do bit 3 Indica qual é o bit que deve ser alterado ou testado Fornece os onze bits menos significativos do valor a ser colocado no Alvo do desvio 11 apontador de instrução para realizar um desvio Fornece uma constante que será diretamente empregada como Constante 8 operando pela instrução 3 . Com literal 1 1 Código de operação Constante 0 São empregados os seguintes valores literais: Nome do valor Tamanho Função literal ( bits ) Se for zero. O conjunto de instruções As palavras de instrução são formadas por 14 bits que contém o código da instrução e valores literais que desempenham o papel de operandos imediatos. 1 registrador W. São empregados cinco formatos de instrução: Número do bit Nome do formato 13 12 11 10 9 8 7 6 5 4 3 2 1 Controle 0 Código de operação Byte 0 Código de operação Dest Endereço oriented Bit Código de 0 1 Número do bit Endereço oriented operação Cod. indica que o valor produzido deve ser armazenado no Dest.

DFFF.0000.00BB.KKKK. DC.1001.KKKK 11.KKKK MOVLW K 11.KKKK.01BB.FFFF 01. Z C.1000.00XX.BFFF.XXXX 00.110X.D DECF F.FFFF 00.B Ciclos 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1|2 1 1 1 1|2 1 1 1|2 1|2 2 2 1 1 1 1 1 1 1 Descrição Nenhuma operação Retorno de subrotina Retorno de interrupção Entra no modo "stand by" Zera o tempo do "watch dog" Move o W para um registrador Zera o W Zera um registrador Soma o complemento a dois de W a um registrador Decrementa um registrador Ou de W com um registrador E de W com um registrador Ou exclusivo de W com um registrador Soma W a um registrador Move um registrador Complementa um registrador Incrementa um registrador Decrementa um registrador e se o resultado for zero.10BB.FFFF 01.FFFF 00.1100.DFFF.1111. DC.D RRF F.0000. pula a próxima instrução Zera um bit de um registrador Coloca um em um bit de um registrador Se o bit especificado for zero.0000.KKKK.D XORWF F.1FFF.1110.0000.DFFF.FFFF 00.111X.FFFF 10. PD\ TO\.D DECFSZ F.1001.1101.BFFF.DFFF.0110. pula a próxima instrução Chama um subprograma Desvia para o alvo especificado Move uma constante para o W Move uma constante para W e retorna do subprograma Ou de uma constante com W E de uma constante com W Ou exclusivo de uma constante com W Soma uma constante ao complemento a dois de W Soma uma constante a W Indicadores alterados TO\.0XX0.1011.1KKK.D MOVF F.1000 00.FFFF 00.D COMF F.0000 00.D SWAPF F.10.KKKK 11.FFFF 00.0011.KKKK.1000. pula a próxima instrução Se o bit especificado for um.D RLF F.DFFF.0001.D IORWF F.B BTFSS F.FFFF 00.B BSF F.KKKK 11.KKKK.DFFF.DFFF.BFFF.D ADDWF F. pula a próxima instrução Rola um registrador para a direita Rola um registrador para a esquerda Troca os Quartetos de um registrador Incrementa um registrador e se o resultado for zero.1001 00.0001.FFFF 00.0000. Z Z Z Z C C CALL K GOTO K 11.FFFF 00.B BTFSC F.FFFF 01.0000.FFFF 00.0000.1010.FFFF 00.0110.KKKK 10.1FFF.0010.1010.KKKK 11.0101.KKKK.D ANDWF F.BFFF.KKKK RETLW K IORLW K ANDLW K XORLW K SUBLW K ADDLW K Z Z Z C.KKKK 11.DFFF.0KKK. PD\ Z Z C.DFFF.FFFF 00.0000.0100 00.0111. Z Z Z Z Z C.FFFF 00.FFFF 00. DC.0XXX.KKKK.FFFF 00. Z 4 .DFFF.DFFF.KKKK Mnemônico e operandos NOP RETURN RETFIE SLEEP CLRWDT MOVWF F CLRW CLRF F SUBWF F.0100.DFFF.0110. DC.FFFF 00.KKKK. Instruções em ordem de código de operação Código 00.D INCFSZ F.01XX.FFFF 01.DFFF.KKKK.0011 00.D INCF F.11BB.DFFF.D BCF F.

Sign up to vote on this title
UsefulNot useful