cblock...endc é um recurso do MPASM muito utilizado para a geração de blocos de constantes (símbolos seqüenciais com nome). Portanto, não é necessário utilizar várias diretivas equ para que o assembler gerar uma lista de símbolos (com endereços contínuos).
O argumento dado a cblock é o endereço inicial do bloco. Este argumento pode ser omitido significando que o endereço inicial do próximo bloco é imediatamente após o último byte do block anterior conforme demonstrado no exemplo abaixo.
Exemplo de um bloco iniciado no endereço 0x20:
cblock 0x20 ; interrupções - contexto w_temp ; endereço: 0x20 status_temp ; 0x21 ; tempo a ser atrasado, para funções delay_ms e delay_10us delay ; 0x22 endc cblock ; endereço: um byte após o bloco anterior high ; 0x23 endc
Além disso, pode-se utilizar a opção de incremento nos símbolos:
cblock ; endereço: um byte após o bloco anterior var_16:2 ; reserva dois bytes para a variável. endc
Neste caso, o assembler dedicaria 2 bytes para a variável/label.
endereço inicial
no exemplo você usou o bloco 0x20, ele é padrão para todos os pics? Como identifico os endereços disponiveis para eu usar o cblock?
constante 0x20
O número 0x20 se refere ao endereço inicial do bloco. Esse endereço não é padrão para todos os PICs, mas é o mais comum.
Você deve consultar o datasheet do microcontrolador que você utilizará para saber qual é o endereço inicial dos registradores de propósito geral. Essa informação está disponível na seção "DATA MEMORY MAP" dos datasheets da Microchip.
Post new comment