Pesquisar este blog

Soluções Assembly

Perguntas e Respostas Relacionadas a Microcontroladores


Questão 1
Qual é a diferença básica entre um microcontrolador e um microprocessador ?
 R: A diferença é que o microprocessador não possui  memória de programa e de dados integrados nele, por isso necessita de memórias externas para o armazenamento de dados e programa, ao passo que o microcontrolador possui internamente memórias de programa e de dados e outros periféricos.

 Questão 2
Que barramento define a capacidade do microcontrolador: dados ou endereços?

R: O barramento que define a capacidade de um microcontrolador é o barramento de endereço, pois é ele que determina quantas posições da memória de programa podem ser acessadas( Determina a Capacidade da  memória de programa) .

Questão 3
A frequência do oscilador “representa” a velocidade do microcontrolador? Porquê?

R: Porque a frequência do oscilador é que determina o tempo de ciclo de instrução ou seja o tempo de execução de uma instrução, sendo assim ele determina a velocidade de execução do programa que é um conjunto de instruções .

Questão 4
O que é que entende por RISC e CISC? Qual é a importância de RISC para os
microcontroladores?

R: RISC significa computador com conjunto de instruções Reduzidas, e CISC, computador com conjunto de instruções complexas, o RISC é muito usado em microcontrolador devido a capacidade reduzida de armazenamento e processamento  que eles possuem.

Questão 5
Um Engenheiro Mecatrónico escreveu um programa em assembly usando o
microcontrolador PIC 16F84, com o objectivo de mostrar o número 10 e 5 no porto A e B,
respectivamente. Foste solicitado em auxiliar se o programa foi escrito corretamente, e o
mesmo é apresentado a seguir:
1. BSF 03,05
2. CLRF 05
3. CLRF 1F
4. BCF 03,06
5. MOVLW H’D’
6. MOVWF 06
7. MOVLW B’0110’
8. MOVF 05
9. NOP
10. END

a) Considerando o objectivo do programa identifique as linhas na qual contêm erros de
programação? Justifique.
b) Representa a informação no PORT A e PORT B em formato nibble

R:a) As  linhas que têm erros são:
  •   - Linha 2 -- como se trata de configuração dos pinos de  I/O devemos zerar  a posição de Memória 85h que é o endereço do registo TRISA, registo destinado  a configuração dos pinos do port A como entrada ou saída e não  a posição 05. Assim o certo seria CLRF  H'85' 
  • - Linha 3 -- como se trata de configuração dos pinos de  I/O devemos zerar  a posição de Memória 86h que é o endereço do registo TRISB, registo destinado  a configuração dos pinos do port B como entrada ou saída e não  a posição 1F. Assim o certo seria CLRF  H'86'
  • - Linha 4 -- como Pretendemos acessar o banco zero da memória RAM onde estão localizados os registos PORTA e PORTB, devemos zerar  o bit 05 do registo STATUS cujo a posição de memória que  ocupa é 03h, uma  vez que o bit 06 já  é  zerado durante a  inicialização do microcontrolador. Assim o certo seria BCF 03,05. 
  • - Linha 5 -- como  o objectivo é escrever o valor 5 decimal no PORTB cujo  o endereço é 06h, devemos Primeiramente  mover o  número Hexadecimal 05 no registo de trabalho W e não o número hexadecimal D. Assim o certo seria MOVLW H'05'.  
  • - Linha 7 -- como  o objectivo é escrever o valor 10 decimal no PORTA cujo  o endereço é 05h, devemos Primeiramente  mover o  número binário  B'00001010' equivalente  ao  número 10 decimal  no registo de trabalho W e não o número binário B'0110' pois este equivale ao número decimal  6. Assim o certo seria MOVLW B'00001010'

  • - Linha 8 -- Uma vez novido o valor 10 decimal no registo de trabalho W, resta-nos apenas mover o conteúdo de W para o registo PORTA cujo  o endereço é 05h, para isso devemos usar o comando MOVWF e não o comando MOVF. Assim o certo seria MOVWF 05.
 A baixo se segue o programa correto e comentado
     
1. BSF 03,05    ; Muda para o banco 1 da memória Ram
2. CLRF H'85'   ;Configura todos os pinos do PORTA como saída
3. CLRF H'86'  ;Configura  todos os pinos do PORTB como saída
4. BCF 03,05   ; Muda para o baco 0 da memória Ram
5. MOVLW H’05’
6. MOVWF 06 ; Move o valor decimal 5 para o PORTB
7. MOVLW B’00001010’
8. MOVF 05  ; Move o valor decimal 10 para o PORTA
9. NOP            ; Aguarda  1 Ciclo de instrução
10. END ; Fim do Programa


R:b)A representação do Número decimal 5 em formato Nibble é: 0000 0101, assim movimentariamos para
o registo de trabalho W o número  B' 00000101' e em seguida  movimentariamos o contéudo de W para o registo PORTB.

A representação do Número decimal 10 em formato Nibble é: 0001 0000, assim movimentariamos para
o registo de trabalho W o número  B' 00010000' e em seguida  movimentariamos o contéudo de W para o registo PORTA.

Questão 6
Implemente um contador binário de 5 bits, com um delay (atraso de 500 ms) usando o
PICBOARD 16F84, como mostra a Fig. 1
.


 


Nenhum comentário:

Postar um comentário

Seguidores