Real
#define TECLA PORTB,0 //Define que o bit correspondente do PORTB,sendo este 0,é da TECLA org 0x0000 //Informação de cabeçalho.Este trecho diz ao compilador onde o programa irá começar a rodar no PIC
INICIO: // Inicio do programa
MOVLW 0x0F //Move valor literal correspondente a 00001111 em binário para o registrador W
MOVWF ADCON1 //Move o conteúdo do registrador W para o registrador ADCON1, desse modo este registrador, quando setado de acordo com os bits enviados a ele, dirá quais pinos do PORT se comportarão como entradas/saídas digitais ou analógicas. Nesse caso, mandando 0x0F, serão considerados entradas/saídas digitais todos os pinos do PORT ( pg 262 do datasheet possui a tabela de referência )
REPETE:
BSF TRISB,0 //Coloca o Bit zero para ser uma entrada, usando o registrador TRIS, que seta os bits como entrada ou saída
BTFSC TECLA //Testará o bit referente ao label TECLA. Se o mesmo for igual a zero, o programa irá pular a próxima linha de programação e continuar normalmente a execução. Se não for igual a zero, executará a linha seguinte de programação normalmente.
BRA S1_LIBERADA //Vai para o trecho do programa onde o label é denominado "S1_LIBERADA"
BRA S1_PRESSIONADA //Vai para o trecho do programa onde o label é denominado "S1_PRESSIONADA"
ATRASO:
MOVLW 0 //Move o valor literal zero para o registrador W
LOOP:
ADDLW 1 //Adiciona 1 para o valor armazenado no registrador W
BNZ LOOP //Vai para o comando Loop se o valor da operação/comparação aritmética anterior com o registrador W não for zero
BRA REPETE // Vai para o trecho do programa onde o label é denominado "REPETE"
S1_PRESSIONADA:
BCF TRISB,0 //Coloca o bit zero para ser uma saída,