Instruction Set - acmlira/pic16f628a GitHub Wiki
If you don't speak portuguese, all information in this spot can be found compiled here.
Set de instruções
Todas as informações aqui estão compiladas no datasheet do microcontrolador e podem ser encontradas aqui.
Termos gerais
As seguintes letras compõe as instruções:
Letra | Descrição |
---|---|
f | Register file address, endereço de registrador |
W | Registrador de trabalho (acumulador) |
b | Bit de registrador de 8-bits |
k | Constante, dados literais ou labels |
d | Destino de operação 0 ou W; guarda em W. 1 ou f; guarda em f |
¬TO | Bit de Time-out |
¬PD | Bit de Power-down |
Tabelas de instruções
Instruções de byte:
Mnemônico | Descrição | Ciclos de máquina | Flag no STATUS |
---|---|---|---|
ADDWF f, d | d = W + f | 1 | C, DC, Z |
ANDWF f, d | d = AND f com W | 1 | Z |
CLRF f | f = B'00000000' | 1 | Z |
CLRW | W = B'00000000' | 1 | Z |
COMF f, d | Inverte os bits de f | 1 | Z |
DECF f, d | d = f - 1 | 1 | Z |
DECFSZ f, d | if((d = f - 1) == 0){pula uma linha} | 1(2) | Nenhum |
INCF f, d | d = f + 1 | 1 | Z |
INCFSZ f, d | if((d = f + 1) == 0){pula uma linha} | 1(2) | Nenhum |
IORWF f, d | d = OR f com W | 1 | Z |
MOVF f, d | d = f | 1 | Z |
MOVWF | F = W | 1 | Nenhum |
NOP | Consome 1 ciclo de máquina | 1 | Nenhum |
RLF f, d | d = a rotação dos bits do carry de f para esquerda | 1 | C |
RRF f, d | d = a rotação dos bits do carry e de f para direita | 1 | C |
SUBWF f, d | d = f - W | 1 | C, DC, Z |
SWAPF f, d | d = nibbles de f trocados (aaaabbbb -> bbbbaaaa) | 1 | Nenhum |
XORWF f, d | d = XOR f com W | 1 | Z |
Instruções de bit:
Mnemônico | Descrição | Ciclos de máquina | Flag no STATUS |
---|---|---|---|
BCF f, b | Limpa bit b do registrador f | 1 | Nenhum |
BSF f, b | Seta bit b do registrador f | 1 | Nenhum |
BTFSC f, b | if((bit b do registrador f) == 0){pule uma linha} | 1(2) | Nenhum |
BTFSS f, b | if((bit b do registrador f) == 1){pule uma linha} | 1(2) | Nenhum |
Instruções de literal:
Mnemônico | Descrição | Ciclos de máquina | Flag no STATUS |
---|---|---|---|
ADDLW k | W = W + k | 1 | C, DC, Z |
ANDLW k | W = AND W com k | 1 | Z |
CALL k | Chama uma sub rotina k | 2 | Nenhum |
CLRWDT | Limpa a contagem do Watch Dog Timer | 1 | ¬TO, ¬PD |
GOTO k | Desvia para endereço de k | 2 | Nenhum |
IORLW k | W = OR W com k | 1 | Z |
MOVLW k | W = k | 1 | Nenhum |
RETFIE | Retorno de interrupção | 2 | Nenhum |
RETLW k | Retorna da sub rotina, W = k | 2 | Nenhum |
RETURN | Retorno de sub rotina | 2 | Nenhum |
SLEEP | Ativa modo de economia de energia | 1 | ¬TO, ¬PD |
SUBLW k | W = k - W | 1 | C, DC, Z |
XORLW k | W = XOR W com k | 1 | Z |