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
    RETURN

Resposta: 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
    RETURN

Resposta: 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

Entradas relacionadas: