Programando o BASIC Stamp

Você programa um BASIC Stamp usando linguagem de programação BASIC. Se você já conhece o BASIC, verá que o seu uso no Stamp é direto, porém limitado. Se você não conhece BASIC, mas conhece outra linguagem como C, Pascal ou Java, então usar BASIC será fácil. Se você nunca programou antes, provavelmente vai querer aprender programação numa máquina desktop antes. Aqui vai um rápido resumo das instruções disponíveis num Stamp BASIC (para a documentação completa, visite Parallax: documentação BASIC Stamp - em inglês).

Instruções BASIC padrão:

  • for...next - instrução normal de looping
  • gosub - ir para uma subrotina
  • goto - ir para um label no programa (ex. - "rótulo:")
  • if...then - decisão normal se/então
  • let - atribuição (opcional)
  • return - retorna de uma subrotina
  • end - finaliza o programa e hiberna

Instruções relacionadas com pinos de E/S:

  • button - lê um botão num pino de entrada, com "debounce" (eliminação de oscilação do sinal) e auto-repetição
  • high - configura um pino de E/S com um sinal em nível alto
  • input - configura a direção de um pino de E/S para entrada
  • low - configura um pino de E/S baixo
  • output - configura a direção de um pino de E/S para saída
  • pot - lê um potenciômetro num pino de E/S
  • pulsin - lê a duração de um pulso vindo de um pino de entrada
  • pulsout - envia um pulso de duração específica para um pino de saída
  • pwm - executa modulação por largura de pulso em um pino de saída
  • reverse - reverte a direção de um pino de E/S
  • serin - lê dados seriais em um pino de entrada
  • serout - grava dados seriais em um pino de saída
  • sound - envia um som de uma freqüência específica para um pino de saída
  • toggle - alterna o bit em um pino de saída

Instruções específicas para o BASIC Stamp:

  • branch - lê uma tabela com derivações
  • debug - envia um string (cadeia de carcteres) de debug para o console num computador desktop
  • eeprom - faz o download de um programa para a EEPROM
  • lookdown - retorna o índice de um valor em uma lista
  • lookup - consulta um array (vetor de dados)  usando um índice
  • nap - hiberna por curto período
  • pause - atrasa pelo período especificado
  • random - escolhe um número aleatório
  • read - lê um valor da EEPROM
  • sleep - desliga pelo período especificado
  • write - escreve dados na EEPROM

Operações:

  • + - adição
  • - - subtração
  • * - multiplicação (low-word)
  • ** - multiplicação (high-word)
  • / - divisão
  • // - módulo
  • max - retorna o máximo entre 2 valores
  • min - retorna o mínimo entre 2 valores
  • & - AND
  • | - OR
  • ^ - XOR
  • &/ - NAND
  • |/ - NOR
  • ^/ - XNOR

Enunciado lógico If (se):

  • =
  • <>
  • <
  • <=
  • >
  • >=
  • AND
  • OR

Variáveis
Todas as variáveis no BS-1 têm nomes pré-definidos (que podem ser substituídos pelos nomes que você desejar). Lembre-se que como há apenas 14 bytes de RAM disponível então todas as variáveis são preciosas. Aqui estão os nomes padrão:

  • w0, w1, w2...w6 - variáveis de palavras (words) de 16 bits
  • b0, b1, b2...b13 - variáveis de byte, de 8 bits
  • bit0, bit1, bit2...bit15 - variáveis de bit, de 1 bit
Como existem apenas 14 bytes de memória, w0 e b0/b1 estão no mesmo local na RAM e w1 e b2/b3 também, e assim por diante. Além disso, bit0 até bit15 residem em w0 (e, portanto, em b0/b1 também).

Pinos de E/S
Você pode ver que 14 das instruções em BS-1 têm a ver com os pinos de E/S. A razão para tal ênfase é o fato que os pinos de E/S são a única maneira de o BASIC Stamp conversar com o mundo. Há oito pinos em BS-1 (numerados de 0 a 7) e 16 pinos em BS-2 (numerados de 0 a 15).

Os pinos são bidirecionais, o que significa que pode-se ler valores de entrada neles ou enviar valores de saída para eles. A maneira mais fácil de enviar um valor a um pino é usar as funções HIGH ou LOW. A declaração high 3 envia 1 (+5 volts) para o do pin 3. LOW envia um 0 (Terra). O pino 3 foi escolhido arbitrariamente aqui - podem-se enviar bits para qualquer pino de 0 a 7.

Há várias instruções interessantes de pinos de E/S. Por exemplo, POT lê a configuração em um potenciômetro (resistor variável) se for conectado a um capacitor como a instrução POT espera. A instrução PWM envia sinais modulados por largura do pulso. Instruções como estas podem facilitar bastante a conexão de controles e motores ao Stamp. Veja o documento indicado para detalhes da linguagem. Também existe o livro Programming and Customizing the BASIC Stamp Computer de Scott Edward que pode ser extremamente útil porque contém exemplos de projetos.