Baixe o app para aproveitar ainda mais
Prévia do material em texto
P1 – Microprocessadores – Prof. Marco Aurélio Seluque Fregonezi – 11/10/2012 Gabarito Cada questão vale um ponto. Algumas questões receberam explicação bastante detalhada. Não será cobrada, na correção, explicação tão detalhada. 1 ‐ A sigla PIC, da Microchip, significa: A. ( ) Program In‐Chip B. ( ) Peripheral Interchange Component C. ( ) Programming Into Computer D. (X) Programmable Interface Controller E. ( ) Programmer Internal Cappable F. ( ) Program Input Control 2 ‐ Qual a arquitetura da PIC16F877? A. ( ) Baseline B. (X) Mid‐Range C. ( ) Enhanced Mid‐Range D. ( ) PIC18 E. ( ) PIC24H/E F. ( ) DsPIC 3 – PIC16F877 – Nas instruções “GOTO k” e “CALL k”, a palavra “k” tem tamanho, em bits: A. ( ) 07 B. ( ) 08 C. ( ) 09 D. (X) 11 E. ( ) 13 F. ( ) 14 As palavras tem tamanho de 14 bits. Os endereços tem tamanho de 13 bits. São quatro páginas. Quatro páginas são endereçadas por dois bits 2n = 4. 13 ‐2 = 11 Como era previsto que alguns alunos confundissem o tamanho do endereço (13) com o da palavra (14), e sabendo que 14 ‐ 2 = 12, esta opção foi eliminada, para ajudar. 4 – PIC16F877 – Na segunda coluna, coloque as letras associadas da primeira coluna (biunívoco). (A) EEPROM (A) Data memory (B) FLASH (D) File register (C) ROM (E) LIFO (D) SRAM (B) Program Memory (E) STACK (C) ULA Os registradores são usados frequentemente e precisam ser colocado na memória de leitura e escrita mais rápida, a SRAM. Os dados de uso menos frequente podem ser armazenados em uma memória de leitura e escrita mais barata e mais lenta, mas que mantenha a informação após o desligamento do chip, isto é, a EEPROM. A memória de programa, também precisa ser mantida após o desligamen‐ to, porém ela precisa ser muito maior do que a memória de dados, e, por isso, precisa ser colocada em um tipo de memória com maior densidade, isto é, a FLASH. A ULA nunca deve ser alterada, sob risco das instruções pararem de funcionar, por isso ela pode ser gravada em uma ROM, a memória mais barata e densa que existe. A pilha (stack) não é uma memória de acesso aleatório, é de acesso sequencial, caracterizando uma LIFO; embora se trate de uma memória estática, não é uma SRAM, pois o acesso não é aleatório. 5 ‐ PIC16F877 – Quais os valores do work register dos bits C (carry), DC (digit carry) e Z (zero) após a operação 3Eh + 7Bh? W=B9h C=0 DC=1 Z=0 O valor de W pode ser obtido diretamente pela calculadora. Será aceita a forma hexadecimal ou a binária ou ambas. Como o resultado é menor do que o valor máximo FFh, então C=0. Como o resultado não é nulo, então não é zero, o bit indicativo de zero deve ser desabilitado, Z=0. Como Eh + Bh é maior do que Fh, então ocorre carry entre os nibbles; DC=1. 6 ‐ Um controlador utiliza Instruções de 18 bits e tem capacidade de armazenamento de 16k instru‐ ções. Determine o tamanho da memória de programa em bytes. Utilize o prefixo correto (k, M, G ou T). (16×1024)instruções × 18bits/instrução = 294912 bits 294912bits / 8 = 36864 bytes 36864bytes/1024 = 36 kbytes 7 ‐ Um processador de 64 bits possui barramento de dados de 16 bits, multiplexados temporalmente. Os bits de seleção do MUX são controlados por um contador síncrono crescente. Quantos são os bits de seleção? 64bits / 16bits = 4 partes 2n = 4 n = 2 bits 8 ‐ Um controlador utiliza Instruções de 20 bits. Nas instruções que fazem acesso aos registros, a instrução emprega 5 bits na codificação da instrução, 3 em opções gerais e o restante no endereça‐ mento de memória. Sabendo que o tamanho da memória é de 8k palavras, em quantos bancos esta memória precisa ser dividida? 20‐(5+3) =12 bits de endereço por banco 212 = 4096 posições por banco 4096 / 1024 = 4k posições por banco Tamanho total = 8k posições (8k)posições / (4k)posições/banco = 2 bancos 9 ‐ Um processador de 8 bits possui 12 bits no barramento de endereço, para memórias externas. Uma memória de 360 bytes é instalada a partir do endereço inicial. Uma segunda memória de 256 bytes deve ser instalada. Para isso, um dos bits do barramento de endereço é usado na seleção do chip (entrada CS), sendo “zero” para o chip de 360 bytes e “um” para o chip de 256 bytes. Para este controle, foi escolhido, dentre os bits não usados do barramento, o menos significativo. Qual o ende‐ reço (Bin e Hex) da primeira posição do chip de 256 bytes no barramento? 360 bytes: 9 bits de endereço (memória maior), nem todas combinações são usadas. 256 bytes: 8 bits de endereço (memória menor). A quantidade de bits usados é dado pela maior memória. 9 bits usados nas entradas de endereço dos chips: Bits <A8:A0> Bit A9 usado na seleção do chip. Posição inicial do barramento: 0000 0000 0000b (12 bits) 000h (3 nibbles) Posição inicial do chip de 256 bytes: 0010 0000 0000b (12 bits) 200h (3 nibbles) 10 ‐ Condicionador de ar inteligente. Um sensor de temperatura, operando na faixa de 10 a 39 graus, com resolução de 1 grau, envia sinal elétrico a um conversor A/D, que gera um sinal digital com bits paralelos, sendo o valor 0d correspondente a 09 graus. Estes bits são decodificados, e cada saída do decodificador aciona uma configuração de potência do climatizador, mantendo a temperatura inter‐ na sempre a 22 graus. O chip do decodificador possui encapsulamento DIP, arquitetura full‐custom e possui, também, entradas para 5V, 0V, CS e OE. Quantos pinos, no mínimo, este chip possui? Valor mínimo: 10 graus Valor máximo: 39 graus Diferença: 39‐10 = 29 graus Posições de temperatura: 29 + 1 = 30 30 posições 5 bits de endereçamento (nem todas combinações são usadas). Decoder: 5 bits de entrada codificada 30 bits de saída decodificada 4 bits axuliares Total: 5 + 30 + 4 = 39 Quem obteve resposta 39 recebe nota 0,9 nesta questão. Pegadinha troll : DIP: Dual in‐line package – Quantidade par de pinos. Pinos: 39 + 1 Resposta: 40 pinos (1,0 ponto). P2 – Microprocessadores – Prof. Marco Aurélio Seluque Fregonezi – 06/11/2012 Gabarito 1– Na segunda coluna, coloque as letras associadas da primeira coluna (biunívoco). (A) P (C) Chip com especialidade matemática (B) MCU (E) Gravador de PIC (C) DSP (B) Incorporação de periféricos (D) ULA (D) Módulo executor de operações (E) ICD (A) Processamento genérico 2 – Qual instrução afeta o bit carry do Statu Register A. ( ) COMF B. ( ) INCF C. (X) ADDWF D. ( ) ANDWF E. ( ) INCFSZ F. ( ) NOP As únicas instruções que afetam o bit Carry são a adição aritmética e subtração aritmética, sendo, nesta última, emprega- do como Borrow em lógica negativa. Nenhuma outra operação emprega o conceito de Carry ou Borrow. 3 – Qual instrução afeta o TOS? A. ( ) SWAPF B. (X) CALL C. ( ) CLRW D. ( ) NOP E. ( ) BTFSC F. ( ) CLRWDT TOS: Top Of the Stack. Somente as intstuções de desvio lidam com a pilha: RETURN, RETFIE, RETLW, CALL. 4 – Quanto às portas paralelas: A. ( ) São somente de entrada B. ( ) São somente de saída C. ( ) Cada palavra (A, B, C, D, E) pode ser configurada como entrada ou saída. D. (X) Cada bit pode ser configurado como entrada ou saída. E. ( ) Cada palavra (A, B, C, D, E) pode ser configurada como entrada, saída ou bidirecional. F. ( ) Cada bit pode ser configurado como entrada, saída ou bidirecional. Os bits dos registradores TRIS permitem o controle do sentido de comunicação das portas A, B, C, D e E, bit a bit. 5 – O comando Make do MPLab serve para: A. (X) Gerar o código de máquina B. ( ) Gravar o programa no chip C. ( ) Executar o progama no computador D. ( ) Executar o programa no chip E. ( ) Ler o programa do chip F. ( ) Reiniciar a execução do programa 6 – Qual parâmetro não pertence ao princípio deoperação de uma entrada analógica? A. ( ) Bit rate B. ( ) Sampling rate C. (X) Duty cycle D. ( ) +Vref E. ( ) –Vref F. ( ) Resolução O bit rate determina quantos bits o conversor A/D usa. O sampling rate determina quantas conversões A/D são feitas por segundo. O duty cycle diz respeito ao controle por viaração do valor médio, usado em saídas PWM. O +Vref determina o valor de tensão que será convertido para o número binário máximo. O –Vref determina o valor de tensão que será convertido para o número binário zero. A resolução é a diferença mínima entre dois valores analógicos que são convertidos para números binários consecutivos. P2 – Microprocessadores – Prof. Marco Aurélio Seluque Fregonezi – 06/11/2012 Gabarito 7 – Quantas linhas de opcode ou de disassembly possui o programa abaixo? ; Operações aritméticas __CONFIG _WDT_ON & _XT_OSC & _LVP_OFF & _BODEN_OFF #INCLUDE <p16f877.inc> ORG 0x05 ;Vetor de Reset #DEFINE marqualrélio 0x45 ;dado 1 #DEFINE operador 0xA0 ;dado 2 BCF STATUS, RP1 BSF STATUS, RP0 MOVLW marqualrélio MOVWF operador #UNDEFINE marqualrélio #UNDEFINE operador END 4 linhas Somente os mnemônicos do dispositivo geram linhas na linguagem de máquina. As outras linhas são recursos adicionais do Assembler usados para facilitar a programação, mas que são auto- maticamente convertidos em configurações válidas para o dispositivo, sem, contudo, criar novas linhas. Os mnemônicos foram fornecidos na segunda folha de prova. 8 – Deseja-se construir um controlador para quatro display’s de 8 segmentos, figura acima, por meio de uma porta paralela de quatro bits de um microcontrolador. A multiplexação temporal é feita por meio da seleção dos segmentos, acionando-se apenas um por vez, para todos os quatro display’s, segundo a palavra de quatro bits fornecida pela porta paralela. A multiplexação temporal é feita por meio de um contador síncrono cres- cente com FF JK de borda negativa com controles de preset e clear em lógica negativa. Quantos são os FF’s necessários para a realização desta multiplexação? 8 segmentos por display 1 estágio para cada segmento Contador de 8 estágios Três bits Três FF’s P2 – Microprocessadores – Prof. Marco Aurélio Seluque Fregonezi – 06/11/2012 Gabarito 9 – PWM por PIC: O ajuste do duty-cycle é feito por 10 bits e a temporização por Timer 2, de 8 bits. Se este contador conta até FFh, e o duty-cycle máximo é 1023, qual o valor da palavra de 10 bits (binária) para um duty-cycle de 40%? Regra de três simples: 6,4091 1%40 1024%100 1%40 11023%100 x x x Valor inteiro mais próximo: 410 Último valor da faixa: 409 Forma binária: 110011001b Quem obteve o valor acima recebe nota 0,9 nesta questão. Pegadinha troll : A palavra é de 10 bits. Forma binária: 0110011001b 10 – No controle PWM por PIC, o ajuste do período PWM é dado por PR2 (Timer 2 Period Register), de 8 bits. O valor máximo de PR2 (FFh) indica que o ajuste do duty-cycle pode variar de 0 a 1023, sinalizando que a máxi- ma resolução PWM é de 10 bits. Para valores menores de PR2 (8 bits), o ajuste do duty-cycle (10 bits) terá va- lor máximo inferior a 1023, proporcionalmente a PR2. Esta diminuição do máximo valor do duty-cycle poderá acarretar em uma diminuição do número de bits usados, reduzindo a máxima resolução PWM. Determine a máxima resolução PWM, em bits, para um PR2 de 3Fh. Tal como foi falado em sala de aula e explicado no enunciado do problema, PR2 e o valor do duty-cycle são proporcionais, isto permite o uso de regra de três simples. bits 8 255 2561 164 1024256 1163 110231255 113 131 PIC-05 apostila 298, Página x x x x xFh FFFFh bits 8 252 63 1023255 3 3 0,9 Vale errada Forma x x xFh FFFFh Como foi visto em outros exemplos em sala de aula e, também, no capítulo sobre memórias e endereçameto, quando se compara tamanhos de memória proporcionais, a comparação deve ser feita sobre o tamanho das mesmas, e isso é feito somando-se “1” ao valor máximo, pois o valor inicial é zero. Outra forma de resolver este exercício é observando que a faixa 0h-3Fh é um quarto da faixa 0h-FF, isto significa que a faixa 0h-3FF deve ser dividida por 4, gerando a faixa 0h-FF, formada por 8 bits. Uma terceira forma de resolver este exercício é observando que, na trasnformação PR2=FFh para PR2 = 3Fh, tem-se PR2 = 11111111b para PR2 = 111111b, dois bits foram retirados. O mesmo deve ser feito com o duty-cycle. Duty-Cycle = 1111111111b para Duty-Cycle = 11111111b, resultando em oito bits. Vide página 299 da apostila 05-PIC. P3 – Microprocessadores – Prof. Marco Aurélio Seluque Fregonezi – 07/11/2012 Gabarito 1 – Usando um demultiplexador 12 de 4 bits e um multiplexador 21 de 4 bits, construa um cir‐ cuito que realiza a operação LR ‐ Left Bit Rotation de 4 bits. Se a entrada A for zero, não há rotação. Se a entrada A for um, ocorre a rotação. 2 – Um contador, em uma MCU, conta de 00h até 45h com um prescaler de 1:16, em 32ms. Em quanto tempo este contador conta até D3h com um prescaler de 1:4? Com prescaler de 1:16, seus passos são 16 vezes mais lentos do que o dos ciclos de instrução. Com prescaler de 1:4, seus passos são 4 vezes mais lentos do que o dos ciclos de instrução. Na alteração de 1:16 para 1:4, o contador torna‐se 4 vezes mais rápido. Com 1:16, ele atinge 45h em 32m. Com 1:4, ele atinge 45h em 432m = 128ms. Para determinar o tempo que ele leva para atingir D3h, basta fazer regra de três. mst t ms t ms 391 211 12869 D3h 12845h 21 44 3 – Um teclado 4x4 é multiplexado temporalmente em duas etapas. Na primeira, é feita a leitura das linhas y1 e y2 sendo “0” a tecla do bit menos significativo, na segunda, são lidas y3 e y4 sendo “8” a tecla do bit menos significativo. Somente uma tecla é lida por vez. A lógica é negativa. Os bits são lidos em uma porta de comunicação paralela configurada como entrada. Os valores digitados são gravados nos registradores da SRAM a partir da posição 20h. A gravação ocorre somente se houver uma tecla apertada. O usuário digita os números da data de hoje (somente números, vide topo da folha), da esquerda para a direita. Preencha a figura abaixo com os valores corretos. Data: 07/11/2012 Sequência: 0 – 7 – 1 – 1 – 2 – 0 – 1 – 2 0 11111110b 254d FEh 7 01111111b 127d 7Fh 1 11111101b 253d FDh 1 11111101b 253d FDh 2 11111011b 251d FBh 0 11111110b 254d FEh 1 11111101b 253d FDh 2 11111011b 251d FBh Como a data da prova estava errada, pois ela foi aplicada em 08/11/2012, será considerada correta, também, esta data, alterando a resolução do problema. Data: 08/11/2012 Sequência: 0 – 8 – 1 – 1 – 2 – 0 – 1 – 2 0 11111110b 254d FEh 8 11111110b 254d FEh 1 11111101b 253d FDh 1 11111101b 253d FDh 2 11111011b 251d FBh 0 11111110b 254d FEh 1 11111101b 253d FDh 2 11111011b 251d FBh 0xFE 254 0x7F 127 0xFD 253 0xFD 253 0xFB 251 0xFE 254 0xFD 253 0xFB 251 0xFE 254 0xFE 254 0xFD 253 0xFD 253 0xFB 251 0xFE 254 0xFD 253 0xFB 251 P3 – Microprocessadores – Prof. Marco Aurélio Seluque Fregonezi – 07/11/2012 Gabarito 4 – Uma DSP recebe informações vindas de um sensor de viscosidade. O conversor fornece palavras de 12 bits obtidas a cada segundo e as grava em uma memória de 1kbyte. Quando a memória está cheia, ela é apagada automaticamente e o processo é retomado. Qualé o período de preenchimento desta memória, em minutos? 8 bits: 1 byte 12 bits: 1 palavra 12 bits: 1 byte e meio 3 bytes: 2 palavras 1 kbyte: 1024 bytes 1 kbyte/3 = 1024/3 = 341,3... bytes É preciso arredondar para baixo, pois, para cima, superará a capacidade de memória. 1 kbyte/3 = 341 bytes São 341 conjuntos de 3 bytes na memória de 1k byte. Cada conjunto de 3 bytes armazena 2 palavras. São, então, 2341 = 682 palavras. Uma palavra é gravada por segundo. São necessários 682 segundos para gravar as 682 palavras. Período = 682s/60 = 11,37 minutos. 5 – A figura do trollface possui 342 colunas por 301 linhas e usa quatro tons de cin‐ za, endereçados por dois bits. Ao término de cada linha, inclusive a última, existe uma palavra de 8 bits que sinaliza quebra de linha. No início do arquivo, são acres‐ centados 16 bits para o cabeçalho do arquivo. Qual o tamanho do arquivo, em by‐ tes? Use o prefixo necessário. 342 301 = 102942 pontos 2 bits por ponto Tamanho = 2 102942 = 205884 bits Tamanho = 205884 bits / 8 = 25735,5 bytes Quebra de linha: 301 1 byte = 301 bytes Cabeçalho: 16 bits /8 = 2 bytes Total: 25735,5 bytes + 301 bytes + 2 bytes = 26038,5 bytes É preciso arredondar para cima, pois, para baixo, faltará bits no arquivo. Total = 26039 bytes Total = 26039 bytes/1024 = 25,429 kbytes Se não arredondar, também será considerado certo. Total = 26038,5 bytes Total = 26038,5 bytes/1024 = 25,428 kbytes P1 – Microprocessadores – Prof. Marco Aurélio Seluque Fregonezi – 27/02/2013 Gabarito 1)Ligue os pontos da coluna da direita com os pontos da coluna da esquerda. Biunívoco. PIC16F877‐20/P. 1 Quantidade de bits usados na seleção do destiny em instruções lógicas e aritméticas do tipo WF. 2 Quantidade de bits usados na seleção de páginas da program memory. 3 Quantidade de bits usados na seleção de um bit em operações sobre bits individualmente. 4 Quantidade de páginas da file registers. 5 Tamanho da palavra PCH. 7 Quantidade de bits usados no endereçamento do file em instruções lógicas e aritméticas. 8 Tamanho das palavras do file registers. 9 Quantidade de bits de endereço de um registrador da SRAM. 10 Bits do conversor A/D da PIC mid‐range architecture. 11 Quantidade de bits usados no endereçamento do destino em instruções de desvio. 13 Quantidade de bits usados no endereçamento de uma instrução na program memory. 14 Tamanho das palavras da program memory. 2)Ligue os pontos da coluna da direita com os pontos da coluna da esquerda. Biunívoco. DEC Um bit de saída selecionado por vez por meio da palavra de entrada. ENC A palavra de saída é definida por meio do bit de entrada escolhido. MUX Uma das palavras de entrada é selecionada e colocada na palavra de saída. DEMUX Uma das palavras de saída é selecionada para receber a palavra de entrada. REG A palavra de entrada é copiada para a palavra de saída, onde é mantida. COUNT A palavra de saída é o seu valor anterior sofrido de alguma operação. ROM Uma palavra de dados de saída, uma palavra de entrada de endereço. RAM Uma palavra de dados de entrada, uma palavra de dados de saída, uma palavra de entrada de endereço. STACK A palavra lida é a última a ter sido escrita. BUS Conexão de uma palavra de saída de um bloco para uma palavra de entrada de outro bloco. 3)Explique o que é um PUSH e um POP. Cite uma instrução que realize cada uma dessas ações. PIC16F877‐20/P. PUSH: Colocação do endereço da próxima instrução (PC+1) no TOS (topo da pilha) antes de efetuar o desvio. Usado em CALL. POP: Obtenção do endereço da próxima instrução a partir do TOS (topo da pilha). Usado em RETURN, por exemplo. 4) Uma instrução BCF é feita sobre um file cujo valor é 64h. O parâmetro “b” é 101b. Qual o valor final para o file, na forma hexadecimal? PIC16F877‐20/P. 64h = 0110 0100 b 101b = 5d O bit 5 sofrerá um clear. 7654 3210 0100 0100 0100 0100 b = 44h. 5)Um banco de memórias é formado por 4 chips idênticos e com faixas de endereços contíguas, sem intervalos. O último ende‐ reço global (no barramento de endereços) é 5FFFFh. O primeiro chip possui a primeira palavra com endereço global 00000h e o último chip possui a última palavra com endereço global 5FFFFh. Qual é o endereço global (no barramento de endereços) da última palavrado segundo chip? 5FFFFh = 393215d Tamanho = 393215d + 1 = 393216 Tamanho do chip: 393216 / 4 = 98304 2 chips: 98304 * 2 = 196608 Última posição: 196608-1 =196607d 196607d = 2FFFFh P1 – Micrprocessadores – Prof. Marco Aurélio Seluque Fregonezi – 27/02/2013 Gabarito Todas as questões referem‐se ao PIC16F877‐20/P e têm o mesmo peso. Algumas questões estão com um nível de explicação aprofundado para fins didáticos, não tendo sido exigido tal aprofundamento na avaliação. 1) O Program Counter possui 13 bits (bit0 a bit12) e é referenciado pelos registradores PCL (low) e PCH (high). O PCL é acessível, porém o PCH não. O registrador PCLATH possui 5 bits (bit0 a bit4) e é acessível; ele é copia‐ do para o PCH nas instruções de desvio ou quando se acessa o PCL. No caso de desvio (CALL e GOTO), a instru‐ ção recebe, como argumento, uma constante de 11 bits (bit0 a bit10). Quais são os bits de PCLATH enviados ao PCH nas instruções CALL e GOTO? Bits 3 e 4. Vide apostila 06‐IDE slides 85 a 89 versão 25/04/2013. 2) Explique o erro no programa abaixo: #include <p16f877.inc> org 0x5 #define ondecadê1 0x20 bcf STATUS, RP1 bcf STATUS, RP0 movf 0xBE, W movwf ondecadê #undefine ondecadê end A instrução MOVF usa, como endereço, BE16 = 0101111112, o que significa que RP1=0 e RP0=1 e isto requer o comando bsf STATUS, RP0. Trata‐se de um erro de endereçamento. Houve um erro de digitação, onde era para constar “#define ondecadê 0x20”, ficou “#define ondecadê1 0x20”. Por esse motivo, quem considerou que o erro está na definição da variável, também acertou. 3) Algumas instruções enquadram‐se na categoria 2TCY. O que é 2TCY? É a categoria de instruções que requerem, na execução, dois ciclos de instrução (two instruction‐cycle period). Cada ciclo de instrução usa 4 ciclos de clock. O termo genérico “ciclo” se refere, por padrão, ao relógio, pois é o período que serve de referência para os demais temporizadores (exceto WDT). Como existem dois tipos de ciclo (de instrução e de clock), a resposta sem essa especificação vale metade, pois subentende‐se tratar‐se do relógio. 4) A instrução RETURN requer que uma outra instrução tenha sido executada em algum momento anterior. Que instrução é essa? Explique qual problema acontece se essa condição não for respeitada. Todo RETURN está associado a um CALL. O CALL faz o push no stack, o RETURN faz o pop. Para cada push, deve haver um pop. Se houver um RETURN sem CALL, haverá um pop sem push, o que provoca um stack underflow. Vide apostila 06‐IDE slides 80, 92 e 93 versão 25/04/2013. 5) Explique por que motivo o decaimento da frequência de relógio (clock) não faz com que o WDT demore mais para gerar um reset ou um wake‐up? Para segurança, o WDT possui relógio próprio, configurável. O oscilador do WDT é do tipo RC. O WDT prosse‐ gue a contagem mesmo durante o modo sleep. Vide apostila 07‐Recursos slide 74 versão 25/04/2013. Marco Aurelio Callout file só pode ter 7 bits na instrução 6) Explique a função dos pinos VREF+ e VREF‐. São as tensões de referência para o conversor AD. Todo conversor AD requer uma referência para tensões mínima (ADRES=00016) e máxima (ADRES=3FF16). Por default, esses valores são VSS e VDD, que assumem níveis TTL (0V e 5V, respectivamente, comentados na última aula). Caso sejam necessários valores diferentes, tais níveis de tensão devem ser aplicados às entradas VREF‐ e VREF+, respectivamente. É preciso respeitar a faixa de tensões toleradapelo chip (ver datasheet). Se essas entradas forem usadas, duas entradas analógicas são perdidas. Todas entradas analógicas (8 no máximo) usam as mesmas tensões de referência. Vide apostila 07‐Recursos slides 45 a49 versão 25/04/2013. 7) O TRM2 pode ser usado como um gerador de onda dente‐de‐serra com frequência configurável por meio do registrador PR2. Supondo que a frequência mínima é de 19,5kHz , qual deve ser o valor de PR2 para que esta frequência seja de 35kHz? Usar arredondamento segundo norma ABNT. Vide apostila 07‐Recursos slides 113 a 116 versão 25/04/2013. Como não se falou em prescaler nem postscaler, esses valores não são alterados, são os mesmos para 19,5kHz e para 35kHz. Altera‐se, apenas, o PR2. É mais conveniente lidar‐se com períodos ao invés de frequências. fMIN = 19,5kHz TMÁX = 51,28s. f2 = 35kHz T2 = 28,57s. TMR2 conta de 00h até o valor de PR2 (slide 121) A quantidade de passos de contagem de TMR2 é PR2 + 1. Para PR2+1 = 1, TMR2 tem 1 passo TMÍN. Para PR2+1 = 256, TMR2 tem 256 passos TMÁX = 51,28s. Para PR2+1 = X, TMR2 tem X passos TMÁX = 28,57s. Regra de três: 256 51,28 X 28,57 X = 142,6 PR2+1 = 142,6 PR2 = 141,6 Arredondando para o inteiro mais próximo: PR2 = 142d ou PR2 = 8Eh P1 – Micrprocessadores – Engenharia de Telecomunicações – Prof. Marco Aurélio S. Fregonezi – 08/07/2013 Gabarito Uma ULA de um processador hipotético trabalha com palavras de 16 bits, e usa operações lógicas bit‐a‐bit, sobre pala‐ vras, sobre bit em palavras e aritméticas, de uma e duas entradas. A ULA fornece quatro bits de sinalização, obtidos com o resultado da última operação realizada. Uma entrada de dados vem do acumulador, a outra entrada é multiplexada com a outra entrada de dados, vinda do data bus e a palavra de decodificação da instrução, selecionados por meio de um bit. Quantos são, ao todo, os bits usados pela ULA em um determinado instante? (3 16) + 4 = 52 Explique porque, para um determinado programa construído em linguagem de montagem (assembler) para um controla‐ dor/processador RISC, o tamanho do programa montado (em bits) não difere muito do tamanho do programa montado por meio de um assembler para um controlador/processador CISC com similar capacidade de processamento. RISC: Muitas linhas de programa com pequeno opcode por linha. CISC: Poucas linhas de programa com grande opcode por linha. O produto das linhas pela quantidade de bits por opcode é parecido nos dois casos. PIC16F877-20/P – No endereço 18C3h da program memory, é executado um comando CALL. As próximas 5 instru‐ ções são todas do tipo 1TCY, após as quais é realizado um RETURN. Qual é o valor do PCL, na forma hexadecimal? PC+1 = 18C3h + 1 = 18C4h. PCL = C4h. Utilize um MUX para transformar várias ROM 2k8bits em uma ROM 8k8bits. Empregue a letra “A” para nomear todos os bits usados para o endereçamento, começando pelo índice 0 no bit menos significativo. Um banco de memórias é formado por uma memória de 1,5k palavras e outra memória de 2,75k palavras, selecionadas por meio de um bit. Determine as faixas de endereços proibidos, por meio do primeiro e último valor da faixa, na forma hexadecimal, usando todos os bits do barramento de endereço e todos os nibbles. 1,5k: 0600h a 0FFFh 2,75k: 1B00h a 1FFFh P1 – Micrprocessadores – Engenharia de Mecatrônica – Prof. Marco Aurélio Seluque Fregonezi – 10/07/2013 Gabarito Um microcontrolador hipotético possui a memória de registradores (file registers) de 2048 posições, dividida em oito bancos. O opcode é formado por dois bits (mais significativos) que indicam a família de instruções (conjunto de instruções agrupadas por similaridade). Em uma dessas famílias, o opcode é formado pelos bits identificadores da família, pelos bits identificadores do registrador escolhido usando endereçamento direto, e pelos bits identificadores da operação dentro desta família, que são 32. Não há nenhuma irrelevância (X) em nenhum opcode desta família de instruções. Todas as famílias possuem opcode de igual tamanho. Quantos são os bits de opcode para este microcontrolador? 2048 posições: 11 bits 8 bancos: 3 bits Bits por banco: 11 – 3 = 8 Outra forma: 2048 / 8 = 256 posições 8 bits Família: 2 bits 32 operações em uma família: 5 bits Opcode: 2 + 5 + 8 = 15 bits Explique o motivo que justifica o uso de uma memória flash e o motivo que justifica o uso de uma EEPROM como parte integrante da PIC16F877-20/P. A flash possui uma densidade maior do que a EEPROM, sendo indicada para o armazenamento do programa, cujos requi‐ sitos de capacidade de armazenamento podem ser grandes. A memória densa ocupa pouco espaço no chip, reduzindo seu custo de fabricação. Como não é comum a gravação da memória de programa durante a execução do programa, sua morosidade só é um problema durante a programação do chip. A EEPROM possui uma rapidez de acesso bem maior do que a flash, principalmente na gravação, indicada quando o pro‐ grama precisa realizar constantes gravações em uma memória não volátil. Como a capacidade de armazenamento para esta finalidade não precisa ser grande, a baixa densidade da EEPROM não é um problema. Um pendrive possui uma capacidade de armazenamento de 1,5MB comerciais. Seu barramento de endereço possui a quantidade mínima de bits suficiente para endereçar todas as palavras. Determine a faixa de endereços proibidos, por meio do primeiro e último valor, na forma hexadecimal. Primeiro endereço proibido = 1,51000^2 = 16E360h Último endereço proibido = 1FFFFFh Uma ULA de 4 bits de 32 funções de uma ou duas entradas é implementada em uma PROM GA AND‐OR, na qual a matriz de entrada consiste do decodificador completo de todos os bits de entrada. Neste circuito, não é feita a transformação tudo NAND ou tudo NOR. Não há bits de saída de sinalização nem de entrada de controle. Diga quantas são as portas NOT, AND e OR, e quantas entradas as portas AND e OR possuem. Bits de entrada: 4 + 4 + 5 = 13 NOT: 13 portas 2^13 = 8192 AND: 8192 portas de 13 entradas. Bits de saída: 4 OR: 4 portas de 8192 entradas. Uma memória de programa de um processador hipotético é dividida em oito páginas e usa opcode de 20 bits. Se cada página utiliza 8 bits de endereçamento, determine o tamanho da memória em bytes (se necessário, utilize o prefixo ade‐ quado). 8 + 3 = 11 bits de endereço. (2^11)20 bits = 40960 bits 40960 bits / 8 = 5120 bytes 5120 bytes / 1024 = 5k bytes P2 – Micrprocessadores – Engenharia de Telecomunicações – Prof. Marco Aurélio Seluque Fregonezi – 02/09/2013 Gabarito SUBWF 00 0010 dfff ffff DECF 00 0011 dfff ffff IORWF 00 0100 dfff ffff ANDWF 00 0101 dfff ffff XORWF 00 0110 dfff ffff ADDWF 00 0111 dfff ffff MOVF 00 1000 dfff ffff COMF 00 1001 dfff ffff INCF 00 1010 dfff ffff DECFSZ 00 1011 dfff ffff RRF 00 1100 dfff ffff RLF 00 1101 dfff ffff SWAPF 00 1110 dfff ffff INCFSZ 00 1111 dfff ffff NOP 00 0000 0xx0 0000 MOVWF 00 0000 1fff ffff CLRW 00 0001 0xxx xxxx CLRF 00 0001 1fff ffff BCF 01 00bb bfff ffff BSF 01 01bb bfff ffff BTFSC 01 10bb bfff ffff BTFSS 01 11bb bfff ffff MOVLW 11 00xx kkkk kkkk RETLW 11 01xx kkkk kkkk IORLW 11 1000 kkkk kkkk ANDLW 11 1001 kkkk kkkk XORLW 11 1010 kkkk kkkk SUBLW 11 110x kkkk kkkk ADDLW 11 111x kkkk kkkk RETURN 00 0000 0000 1000 RETFIE 00 0000 0000 1001 SLEEP 00 0000 0110 0011 CLRWDT 00 0000 0110 0100 CALL 10 0kkk kkkk kkkk GOTO 10 1kkk kkkk Kkkk INDF 000 INDF 080 INDF 100 INDF 180 TMR0 001 OPTION_REG 081 TMR0 101 OPTION_REG 181 PCL 002 PCL 082 PCL 102 PCL 182 STATUS 003 STATUS 083 STATUS 103 STATUS 183 FSR 004 FSR 084 FSR 104 FSR 184 PORTA 005 TRISA 085 105 185 PORTB 006 TRISB 086 PORTB 106 TRISB 186 PORTC 007 TRISC 087 107 187 PORTD 008 TRISD 088 108 188 PORTE 009TRISE 089 109 189 PCLATH 00A PCLATH 08A PCLATH 10A PCLATH 18A INTCON 00B INTCON 08B INTCON 10B INTCON 18B PIR1 00C PIE1 08C EEDATA 10C EECON1 18C PIR2 00D PIE2 08D EEADR 10D EECON2 18D TMR1L 00E PCON 08E EEDATH 10E 18E TMR1H 00F 08F EEADRH 10F 18F T1CON 010 090 TMR2 011 SSPCON2 091 T2CON 012 PR2 092 SSPBUF 013 SSPADD 093 SSPCON 014 SSPSTAT 094 CCPR1L 015 095 CCPR1H 016 096 CCP1CON 017 097 RCSTA 018 TXSTA 098 TXREG 019 SPBRG 099 RCREG 01A 09A CCPR2L 01B 09B CCPR2H 01C 09C CCP2CON 01D 09D ADRESH 01E ADRESL 09E ADCON0 01F ADCON1 09F 1 – PIC16F877 – Preencha, entre parênteses, “C” caso o módulo pertença ao núcleo (core) ou “P” se for um periférico. (C) WDT watchdog timer (P) TMR0 timer 0 (P) TMR1 timer 1 (P) TMR2 timer 2 (P) A/D converter (P) CCPx capture‐compare‐PWM (C) ALU arithmetic logic unit (P) EEPROM memory (C) FLASH memory (P) USART serial (C) STACK (C) SFR special function registers (P) GPR general purpose registers (C) WREG work register (P) ICD in‐circuit debugger (P) LVP low‐voltage programming 2 – PIC16F877 – Diga quais são as instruções do tipo 2TCY. BTFSC, BTFSS, DECFSZ, INCFSZ, CALL, GOTO, RETURN, RETLW, RETFIE 3 – PIC16F877 – Diga qual instrução (incluindo argu‐ mento), na sintaxe do MPASM, vale por dois NOP’s se‐ guidos. GOTO $+1 4 – Escreva o código disassembly para o programa abaixo, sabendo que RP1=STATUS<6>, RP0=STATUS<5>, WR=EECON1<1>. Es‐ pecifique a linha da program memory. ; Programa da P2 #include <p16f877.inc> org 0x5 #define ondecadê 0x05 ;endereço da EEPROM #define marqualrélio 0xca ;dado para a EEPROM ;Verifica se está em processo de escrita BSF STATUS, RP1 BSF STATUS, RP0 BTFSC EECON1, WR GOTO $-1 MOVLW ondecadê ;W = ondecadê1 MOVWF EEADR ;SRAM(EEADR) = W MOVLW marqualrélio ;W = marqualrélio MOVWF EEDATA ;SRAM(EEDATA) = W #undefine ondecadê #undefine marqualrélio end 0005 BSF 0x3, 0x6 0006 BSF 0x3, 0x5 0007 BTFSC 0xc, 0x1 0008 GOTO 0x7 0009 MOVLW 0x5 000A MOVWF 0xd 000B MOVLW 0xca 000C MOVWF 0xc 5 – PIC16F877 – Um conversor A/D de 10 bits foi configurado para que o valor mínimo da palavra binária de 10 bits esteja atribuído à tensão de 3V e o valor máximo a 23V. O bit ADFM (A/D Result Format Select Bit) (ADCON1<7>) foi con‐ figurado para right justified (ADFM=1). A fim de aumentar a rapidez do processamento, descarta‐se ADRESH usando, apenas, ADRESL. Qual o máximo valor de tensão que este conversor A/D pode receber? Forma 1: Faixa configurada: 23V – 3V = 20V Nível quântico: 20V/1023 = 19,55mV ADRESL: 8 bits Palavra máxima de 8 bits: 11111111b = FFh = 255d Fazendo VREF‐ = 0V: V = 25519,55mV = 4,9853V Fazendo VREF‐ = 3V: V = 4,9853V+3V = 7,9853V Forma 2: Faixa configurada: 23V – 3V = 20V Fazendo VREF‐ = 0V: VREF+ = 20V 102320V 255V V = 4,9853V Fazendo VREF‐ = 3V: V = 4,9853V+3V = 7,9853V Marco Aurelio Text Box Estude o gabarito antes de procurar o professor. P2 – Micrprocessadores – Engenharia Mecatrônica – Prof. Marco Aurélio Seluque Fregonezi – 04/09/2013 Gabarito SUBWF 00 0010 dfff ffff DECF 00 0011 dfff ffff IORWF 00 0100 dfff ffff ANDWF 00 0101 dfff ffff XORWF 00 0110 dfff ffff ADDWF 00 0111 dfff ffff MOVF 00 1000 dfff ffff COMF 00 1001 dfff ffff INCF 00 1010 dfff ffff DECFSZ 00 1011 dfff ffff RRF 00 1100 dfff ffff RLF 00 1101 dfff ffff SWAPF 00 1110 dfff ffff INCFSZ 00 1111 dfff ffff NOP 00 0000 0xx0 0000 MOVWF 00 0000 1fff ffff CLRW 00 0001 0xxx xxxx CLRF 00 0001 1fff ffff BCF 01 00bb bfff ffff BSF 01 01bb bfff ffff BTFSC 01 10bb bfff ffff BTFSS 01 11bb bfff ffff MOVLW 11 00xx kkkk kkkk RETLW 11 01xx kkkk kkkk IORLW 11 1000 kkkk kkkk ANDLW 11 1001 kkkk kkkk XORLW 11 1010 kkkk kkkk SUBLW 11 110x kkkk kkkk ADDLW 11 111x kkkk kkkk RETURN 00 0000 0000 1000 RETFIE 00 0000 0000 1001 SLEEP 00 0000 0110 0011 CLRWDT 00 0000 0110 0100 CALL 10 0kkk kkkk kkkk GOTO 10 1kkk kkkk Kkkk INDF 000 INDF 080 INDF 100 INDF 180 TMR0 001 OPTION_REG 081 TMR0 101 OPTION_REG 181 PCL 002 PCL 082 PCL 102 PCL 182 STATUS 003 STATUS 083 STATUS 103 STATUS 183 FSR 004 FSR 084 FSR 104 FSR 184 PORTA 005 TRISA 085 105 185 PORTB 006 TRISB 086 PORTB 106 TRISB 186 PORTC 007 TRISC 087 107 187 PORTD 008 TRISD 088 108 188 PORTE 009 TRISE 089 109 189 PCLATH 00A PCLATH 08A PCLATH 10A PCLATH 18A INTCON 00B INTCON 08B INTCON 10B INTCON 18B PIR1 00C PIE1 08C EEDATA 10C EECON1 18C PIR2 00D PIE2 08D EEADR 10D EECON2 18D TMR1L 00E PCON 08E EEDATH 10E 18E TMR1H 00F 08F EEADRH 10F 18F T1CON 010 090 TMR2 011 SSPCON2 091 T2CON 012 PR2 092 SSPBUF 013 SSPADD 093 SSPCON 014 SSPSTAT 094 CCPR1L 015 095 CCPR1H 016 096 CCP1CON 017 097 RCSTA 018 TXSTA 098 TXREG 019 SPBRG 099 RCREG 01A 09A CCPR2L 01B 09B CCPR2H 01C 09C CCP2CON 01D 09D ADRESH 01E ADRESL 09E ADCON0 01F ADCON1 09F 1 – PIC16F877 – Qual a instrução (e argumentos) do opcode 3800h? Qual o opcode da instrução BTFSC 0xc, 0x1? IORLW 0x0 188C 2 – PIC16F877 – Um sistema de controle de uma máquina recebe uma informação analógica de um sensor, aplica uma função de controle por meio da MCU e gera um sinal controlado para a máquina. 10 bits são usados como palavra na função de controle. Qual é o bloco da PIC que recebe a informação vinda do sensor e qual o bloco que envia a informação para o atuador? Recebimento da informação do sensor: Conversor A/D. Envio da informação para o atuador: PWM. 3 – O que é um WDT time‐out? Para que ele serve? O que ocorre com a MCU após o WDT time‐out? É o overflow do WDT. Serve para evitar travamentos. Após o WDT time‐out, ocorre um WDT reset. 4 – O que é um contador prescaler? Para que serve? Como ele pode ser construído? É o acréscimo de bits menos significativos a outro contador, tornando‐o mais lento. Um contador que tem por função tornar mais lento o passo de contagem de outro contador. Pode ser construído com FF’s, ligando o bit de saída mais significativo à entrada de relógio do outro contador. 5 – PIC16F877 – Módulo CCP1, função PWM. PR2 = 30h. DC = 34h. Qual a máxima resolução do PWM, em bits? Qual o valor do dutty‐cycle, em porcentagem? TMR2 conta de 00h a PR2. TMR2 conta de 00h a 30h (48d) (110000b). TMR2 usa apenas 6 bits (de 8). DC usa 6 + 2 = 8 bits (de 10). bits. 10 de DC do valor último o é Este 19510 110148 1024256 11018 1024256 108 108 passos usados passos usados passos totais passos totais dbitx bitx bitxbitx dd bitsbits bitsbits %53,26 52 %1001195 DC %100DC passos 1 em passos totais cycledutty cycledutty cycledutty Marco Aurelio Text Box Estude o gabarito antes de procurar o professor. P3 – Micrprocessadores – Engenharia de Telecomunicações – Prof. Marco Aurélio Seluque Fregonezi – 09/09/2013 Gabarito SUBWF 00 0010 dfff ffff DECF 00 0011 dfff ffff IORWF 00 0100 dfff ffff ANDWF 00 0101 dfff ffff XORWF 00 0110 dfff ffff ADDWF 00 0111 dfff ffff MOVF 00 1000 dfff ffff COMF 00 1001 dfff ffff INCF 00 1010 dfff ffff DECFSZ 00 1011 dfff ffff RRF 00 1100 dfff ffff RLF 00 1101 dfff ffff SWAPF 00 1110 dfff ffff INCFSZ 00 1111 dfff ffff NOP 00 0000 0xx0 0000 MOVWF 00 0000 1fff ffff CLRW 00 0001 0xxx xxxx CLRF 00 0001 1fff ffff BCF 01 00bb bfff ffff BSF 01 01bb bfff ffff BTFSC 01 10bb bfff ffff BTFSS 01 11bb bfff ffff MOVLW 11 00xx kkkk kkkk RETLW 11 01xx kkkk kkkk IORLW 11 1000kkkk kkkk ANDLW 11 1001 kkkk kkkk XORLW 11 1010 kkkk kkkk SUBLW 11 110x kkkk kkkk ADDLW 11 111x kkkk kkkk RETURN 00 0000 0000 1000 RETFIE 00 0000 0000 1001 SLEEP 00 0000 0110 0011 CLRWDT 00 0000 0110 0100 CALL 10 0kkk kkkk kkkk GOTO 10 1kkk kkkk Kkkk INDF 000 INDF 080 INDF 100 INDF 180 TMR0 001 OPTION_REG 081 TMR0 101 OPTION_REG 181 PCL 002 PCL 082 PCL 102 PCL 182 STATUS 003 STATUS 083 STATUS 103 STATUS 183 FSR 004 FSR 084 FSR 104 FSR 184 PORTA 005 TRISA 085 105 185 PORTB 006 TRISB 086 PORTB 106 TRISB 186 PORTC 007 TRISC 087 107 187 PORTD 008 TRISD 088 108 188 PORTE 009 TRISE 089 109 189 PCLATH 00A PCLATH 08A PCLATH 10A PCLATH 18A INTCON 00B INTCON 08B INTCON 10B INTCON 18B PIR1 00C PIE1 08C EEDATA 10C EECON1 18C PIR2 00D PIE2 08D EEADR 10D EECON2 18D TMR1L 00E PCON 08E EEDATH 10E 18E TMR1H 00F 08F EEADRH 10F 18F T1CON 010 090 TMR2 011 SSPCON2 091 T2CON 012 PR2 092 SSPBUF 013 SSPADD 093 SSPCON 014 SSPSTAT 094 CCPR1L 015 095 CCPR1H 016 096 CCP1CON 017 097 RCSTA 018 TXSTA 098 TXREG 019 SPBRG 099 RCREG 01A 09A CCPR2L 01B 09B CCPR2H 01C 09C CCP2CON 01D 09D ADRESH 01E ADRESL 09E ADCON0 01F ADCON1 09F 1 – PIC16F877 – A frequência de operação da MCU é de 16MHz. O TMR1 prescaler está configurado para 1:8. TMR1 está configurado para ser um temporizador, T1CON<1>, TMR1CS=0. No presente momento, TMR1L=3Bh, TMR1H=19h. As interrupções estão habilitadas. Em quanto tempo, após o presente momento, será acionada a interrupção de overflow de TMR1 TMR1IF? TMR1 = 193Bh TMR1máximo = FFFFh TMR1overflow = FFFFh + 1 = (1)0000h Passos até TMR1overflow = 10000h – 193Bh = E6C5h Tosc por TCY: 4 TCY por passo: 8 Tosc por passo: 8*4 = 32 Tosc = 1/16MHz = 62,5ns Tempo por passo: 62,5ns*32 = 2µs Tempo: 2µs*59077 = 118,154ms. 2 –Explique qual a função de um buffer em uma entrada digital. Explique qual função especial tem um buffer Schimitt Trigger em uma entrada digital. O buffer serve para ajustar os níveis de tensão e corrente aplicados à entrada para os níveis aceitos pelo circuito digital, bem como fazer o casamento de impedâncias. O buffer Schimitt Trigger apresenta uma histerese que filtra oscilações de alta frequência na entrada, protegendo o circuito contra superaquecimento, disparos indesejados e outros problemas. 3 – PIC16F877 – Sabendo que PR2=FFh, dutty‐cycle = 1/5 aproximadamente, determine os valores de CCPR1L e de CCP1CON<5:4> na forma hexadecimal. PR2 de 10 bits vai de 0d a 1023d. Passos totais: 1024 1024/5 = 204,8 205 passos. A saída PWM vale “1” quando PR2 de 10 bits está entre 0d e 204d (205 passos). Quando PR2 de 10 bits atinge 205d, a saída PWM vai a zero. 205d = 0011001101b (10 bits). CCPR1L = 00110011b = 33h (os 8 bits mais significativos). 4 – Desenhe o formato de onda típico de um oscilador RC. 5 – PIC16F877 – Faça um círculo sobre o(s) erro(s) no programa abaixo. Faça um traço sobre a(s) linha(s) que pode(m) ser removidas sem alterar o resultado do programa a não ser pelos TCY’s da(s) linha(s) removida(s). ; Programa da P3 #_include <p16f887.inc> org 0x0 #define marqualrélio 0x45 #define operador 0xae #define ondecadê 0xA0 CLRF ondecadê MOVLW marqualrélio MOVWF ondecadê CLRF ondecadê+1 SUBLW operador MOVWF ondecadê+1 #undefine marqualrélio #undefine operador #undefine ondecade end. Erros P3 – Micrprocessadores – Engenharia Mecatrônica – Prof. Marco Aurélio Seluque Fregonezi – 11/09/2013 Gabarito SUBWF 00 0010 dfff ffff DECF 00 0011 dfff ffff IORWF 00 0100 dfff ffff ANDWF 00 0101 dfff ffff XORWF 00 0110 dfff ffff ADDWF 00 0111 dfff ffff MOVF 00 1000 dfff ffff COMF 00 1001 dfff ffff INCF 00 1010 dfff ffff DECFSZ 00 1011 dfff ffff RRF 00 1100 dfff ffff RLF 00 1101 dfff ffff SWAPF 00 1110 dfff ffff INCFSZ 00 1111 dfff ffff NOP 00 0000 0xx0 0000 MOVWF 00 0000 1fff ffff CLRW 00 0001 0xxx xxxx CLRF 00 0001 1fff ffff BCF 01 00bb bfff ffff BSF 01 01bb bfff ffff BTFSC 01 10bb bfff ffff BTFSS 01 11bb bfff ffff MOVLW 11 00xx kkkk kkkk RETLW 11 01xx kkkk kkkk IORLW 11 1000 kkkk kkkk ANDLW 11 1001 kkkk kkkk XORLW 11 1010 kkkk kkkk SUBLW 11 110x kkkk kkkk ADDLW 11 111x kkkk kkkk RETURN 00 0000 0000 1000 RETFIE 00 0000 0000 1001 SLEEP 00 0000 0110 0011 CLRWDT 00 0000 0110 0100 CALL 10 0kkk kkkk kkkk GOTO 10 1kkk kkkk Kkkk INDF 000 INDF 080 INDF 100 INDF 180 TMR0 001 OPTION_REG 081 TMR0 101 OPTION_REG 181 PCL 002 PCL 082 PCL 102 PCL 182 STATUS 003 STATUS 083 STATUS 103 STATUS 183 FSR 004 FSR 084 FSR 104 FSR 184 PORTA 005 TRISA 085 105 185 PORTB 006 TRISB 086 PORTB 106 TRISB 186 PORTC 007 TRISC 087 107 187 PORTD 008 TRISD 088 108 188 PORTE 009 TRISE 089 109 189 PCLATH 00A PCLATH 08A PCLATH 10A PCLATH 18A INTCON 00B INTCON 08B INTCON 10B INTCON 18B PIR1 00C PIE1 08C EEDATA 10C EECON1 18C PIR2 00D PIE2 08D EEADR 10D EECON2 18D TMR1L 00E PCON 08E EEDATH 10E 18E TMR1H 00F 08F EEADRH 10F 18F T1CON 010 090 TMR2 011 SSPCON2 091 T2CON 012 PR2 092 SSPBUF 013 SSPADD 093 SSPCON 014 SSPSTAT 094 CCPR1L 015 095 CCPR1H 016 096 CCP1CON 017 097 RCSTA 018 TXSTA 098 TXREG 019 SPBRG 099 RCREG 01A 09A CCPR2L 01B 09B CCPR2H 01C 09C CCP2CON 01D 09D ADRESH 01E ADRESL 09E ADCON0 01F ADCON1 09F 1 – PIC16F877 – A frequência de operação da MCU é de 16MHz. O TMR0 prescaler está configurado para 1:8. TMR0 está configurado para ser um temporizador, Option_Reg<5>, T0CS=0. No presente momento, TMR0 acabou de ser reiniciado. As interrupções estão habilitadas. Em quanto tempo, após o presente momento, será acionada a interrupção de overflow de TMR0 TMR0IF? TMR0 = 00h TMR0máximo = FFh TMR0overflow = FFh + 1 = (1)00h Passos até TMR0overflow = 100h (de 000h até 100h) TCY por passo: 8 Tosc por passo: 8*4 = 32 Tosc = 1/16MHz = 62,5ns Tempo por passo: 62,5ns*32 = 2µs Tempo: 2µs*100h = 512µs. 2 –Explique qual a função de um resistor de pull‐up. Como um transistor pode agir como uma resistência ativa? Como um transistor pode operar como um resistor de pull‐up habilitável? O resistor de pull‐up impede o surgimento de uma alta impedância em um nó do circuito, levando o estado de alta impedância para o nível alto. Um transistor pode agir como uma resistência ativa quando RDS ou RCE é usado como um resistor. A resistência ativa pode agir como um pull‐up habilitável por meio de VGS ou VBE, que alteram o valor de RDS ou RCE. 3 – PIC16F877 – Sabendo que VREF+=5V, VREF‐=0V, VAN=3V, left justified, determine os valores de ADRESH e de ADRESL na forma hexadecimal. 3FFh VREF+ x V 1023 5V x 3V x=613,8 Outra forma: VMÍN = 5V/1023 = 4,8876 x = 3V/4,8876V = 613,8 x614d=266h x=10011001_10b ADRESH=10011001b = 99h ADRESH=10000000b = 80h 4 – PIC16F877 – Explique o significado do valor zero e do valor um no bit EEIF e como esses valores são alterados. Zero: Não houve uma escrita bem sucedida na EEPROM ou na FLASH. Um: Houve uma escrita bem sucedida na EEPROM ou na FLASH. De zero para um: Feito automaticamente pela PIC, não pode ser feito pelo usuário. De um para zero: Feito pelo usuário, para que se possa identificar uma nova escrita bem sucedida. 5 – PIC16F877 – Identifique os endereços dos registradores de uso geral envolvidos no programa abaixo, na forma hexadecimal, bem como seus respectivos valores após a execução do programa, na forma hexadecimal. ; Programa da P3 #include <p16f877.inc> org 0x5 #define dado1 0x1 #define dado2 0x2 #define dado3 0x4 #define ondecadê1 0x31 #define ondecadê2 0x32 #define ondecadê3 0x33BSF STATUS,RP1 BCF STATUS,RP0 MOVLW dado1 MOVWF ondecadê1 ADDLW dado2 MOVWF ondecadê2 IORLW dado3 MOVWF ondecadê3 #undefine dado1 #undefine dado2 #undefine dado3 #undefine ondecadê1 #undefine ondecadê2 #undefine ondecadê3 end Endereços Valores 131h 1h 132h 3h (1h + 2h) 133h 7h (3h OR 4h = 11b OR 100b = 111b = 7h) Gabarito_P1_2012_S1 Gabarito_P2_2012_S1 Gabarito_P3_2012_S1 Gabarito_P1_2012_S2 Gabarito_P2_2012_S2 Gabarito_P1_2013_S1 Gabarito_P2_2013_S1 Gabarito_P3_2013_S1
Compartilhar