Exercícios de Programação Assembly PIC: Máscaras e Atrasos
Classificado em Eletrônica
Escrito em em
português com um tamanho de 2,61 KB
Exercícios de Programação Assembly PIC
Máscaras e Operações Lógicas
- Para a rotina de máscara abaixo, considerando que a variável VALOR tenha em seu conteúdo um valor binário qualquer representado por x x x x x x x x (onde x pode ser 0 ou 1). Qual deverá ser a sequência binária M, colocada na instrução ANDLW, para que o resultado em W seja x x x x 0 0 0 0?
MOVF VALOR, W ANDLW B'11110000'
Resposta: M = 11110000
- Usando XOR, como proceder para inverter o bit 3 do PORTB?
MOVLW B'00001000' XORWF PORTB, F
- O que está realizando a rotina a seguir?
MOVLW B'10000000' XORWF PORTB, F
Resposta: Está movendo o valor binário para W e utilizando a operação OU exclusivo (XOR) entre W e o PORTB, guardando o resultado em F.
- O que está realizando a rotina a seguir?
MOVLW 0X08 XORWF VALOR, F
Resposta: Está movendo o valor hexadecimal para W e utilizando a operação OU exclusivo entre W e VALOR, guardando o resultado em F.
- Considerando que um registrador chamado TESTE tem um valor e o registrador W tem outro, como verificar se TESTE = W?
Resposta: Aplica-se a instrução XOR entre os dois valores e testa-se se o resultado é zero (bit Z do registrador STATUS).
Rotinas de Atraso (Delay)
- Qual o tempo do atraso total da rotina DELAY (Relógio de 4MHz, tempo de instrução de 1µs)?
DELAY
MOVLW .200
MOVWF TEMPO1
DL1
NOP
NOP
DECFSZ TEMPO1, F
GOTO DL1
RETURNResposta: 1ms
- Modifique a rotina de atraso DL1 para aumentar o tempo de 1ms para 1,5ms. (Dica: altere o TEMPO1).
Resposta: Definir TEMPO1 = 250.
- Qual o tempo do atraso total da rotina DELAY com relógio de 4MHz e CONTADOR = 20?
DELAY
MOVF CONTADOR, W
MOVWF TEMPO2
DL1
MOVLW .200
MOVWF TEMPO1
DL2
NOP
NOP
DECFSZ TEMPO1, F
GOTO DL2
DECFSZ TEMPO2, F
GOTO DL1
RETURNResposta: 20ms
- Analise a rotina de atraso e determine o tempo com relógio de 10 MHz:
DELAY
MOVLW .20
MOVWF D3
MOVLW .109
MOVWF D2
MOVLW .191
MOVWF D1
DECFSZ D1
GOTO $-1
DECFSZ D2
GOTO $-5
DECFSZ D3
GOTO $-9
RETURN- Considerando o relógio de 10MHz, qual o valor deve ser passado na variável X para que o tempo seja de aproximadamente 2,0 segundos?
Resposta: X = 34