Cursos / Eletrônica / Projeto de Sistemas Microcontrolados / Aula

arrow_back Aula 05 - Linguagem Assembly e ambientes de programação

Modelo simplificado para construção de programas em Assembly - pt.2

Nas próximas seções, através de um exemplo prático, serão apresentados dois ambientes de programação de microcontroladores: o MPLAB e o Proteus. Nesses ambientes você terá a oportunidade de acompanhar a escrita, simulação e execução de um programa escrito em Assembly utilizando o template mostrado no Quadro 2, mas, se preferir, use o seu template, definido na Atividade 3.

Quando se escreve programas em Assembly para PIC da família 16F, deve-se ter um cuidado especial com as instruções GOTO e CALL (desvio de programa e chamada de sub-rotina, respectivamente). Fiz essa observação na aula anterior, lembra-se? Se não, seria bom fazer uma pequena revisão.

Se a posição chamada não estiver dentro da mesma página, antes de se executar o GOTO ou o CALL, deve-se posicionar através dos bits 3 e 4 do registrador PCLATH essa nova página.

Esse posicionamento é feito de acordo com o seguinte mapa de bits:

PCLATH<4:3> = 00 para a página 0; PCLATH<4:3> = 01 para a página 1; PCLATH<4:3> = 10 para as páginas 2 e; PCLATH<4:3> = 11 para a página 3.

Para o programador não se obrigar a conhecer posicionamentos de memória pois existe uma diretiva, a PAGESEL, que pode ser usada com essa finalidade, como no exemplo mostrado a seguir:

PAGESEL EndereçoDeDesvio ; seleciona página onde está o
; EndereçoDeDesvio
GOTO EndereçoDeDesvio ; desvia para página selecionada

De forma equivalente, a seleção de um banco de dados na memória de dados em um PIC 16F é feita através dos bits RP1 e RP0 do registrador STATUS de acordo com o seguinte mapeamento: STATUS<RP1:RP0> = 00 para o banco 0; STATUS<RP1:RP0> = 01 para o banco 1; STATUS<RP1:RP0> = 10 para o banco 2 e; STATUS<RP1:RP0> = 11 para o banco 3.

Ao invés de alterar diretamente os bits RP1 e RP0, o programador pode usar a diretiva BANKSEL, como mostra a seguinte sequência de instruções:

MOVLW 10h
BANKSEL Variavel_1 ; seleciona banco onde se encontra a
; Variavel_1
MOVWF Variavel_1 ; atua no banco selecionado

Uma vantagem de se usar linguagem C é que esse tipo de preocupação, descrito nos últimos parágrafos, não se aplica, uma vez que o próprio compilador C se encarrega de fazer os devidos posicionamentos.

Versão 5.3 - Todos os Direitos reservados