Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo...

161
Manual do ARMBASIC 1 _________________________________________________________________________ www.basic4ever.com 1) Iniciando Passo 1: Instalando o Software O ARMBASIC é um módulo baseado em ARM que roda programas criados na linguagem BASIC (não é interpretado). A transferência de programas é realizada com o TclTerm, o qual é um emulador de terminal especialmente desenvolvido para o ARMBASIC. Click em Next.

Transcript of Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo...

Page 1: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 1

_________________________________________________________________________ www.basic4ever.com

1) Iniciando

Passo 1: Instalando o Software

O ARMBASIC é um módulo baseado em ARM que roda programas criados na linguagem BASIC (não é interpretado). A transferência de programas é realizada com o TclTerm, o qual é um emulador de terminal especialmente desenvolvido para o ARMBASIC.

Click em Next.

Page 2: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 2

_________________________________________________________________________ www.basic4ever.com

Se você deseja alterar o diretório que deseja instalar o TclTerm, não tem problema algum.

Page 3: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 3

_________________________________________________________________________ www.basic4ever.com

Se você não deseja instalar tanto o TclTerm ou arquivos de ajuda ARMBASIC, aqui é o lugar.

Click Next para começar a instalar os arquivos.

Page 4: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 4

_________________________________________________________________________ www.basic4ever.com

Um momento, por favor.

Viu com é fácil.

Page 5: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 5

_________________________________________________________________________ www.basic4ever.com

Passo 2: Monte o Circuito em um protoboard conforme o esquemático

Page 6: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 6

_________________________________________________________________________ www.basic4ever.com

Veja o circuito montado.

Page 7: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 7

_________________________________________________________________________ www.basic4ever.com

O cabo permite você conectar o ARMBASIC diretamente ao computador. Localize a serial do computador e conecte o cabo (DB9).

Passo 3: Escrevendo seu primeiro programa

Page 8: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 8

_________________________________________________________________________ www.basic4ever.com

Uma vez que você executou o TclTerm, você está habilitado para se comunicar com o ARM ARMBASIC. Para checar isto, resete o ARMBASIC com a opção do botão de Reset.

Se tudo é conectado corretamente, o ARMBASIC exibirá uma mensagem de Bem-vindo e estará pronto para receber comandos ARMbasic, os quais podem ser entrados na Janela de Entrada próxima à palavra Enter (veja abaixo):

Page 9: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 9

_________________________________________________________________________ www.basic4ever.com

Então digite alguma coisa tradicional como PRINT “Hi Mom”. Quando você tecla ENTER, será enviado para o ARMBASIC e ecoado de volta para a Janela de Console: (veja abaixo).

Page 10: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 10

_________________________________________________________________________ www.basic4ever.com

Quando você tecla RUN ou pressiona o botão RUN no topo da tela, você verá a tecla abaixo:

Você pode notar um número de coisas. Primeiro o programa é compilado e escrito na memória FLASH, o qual normalmente levará menos de 1,4 segundos. Depois o programa é executado, como evidenciado pela saída “Hi Mom” no console. ARMBASIC também reportará o tempo de execução, neste caso, de 19ms.

Passo 4: Programando a I/O

Page 11: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 11

_________________________________________________________________________ www.basic4ever.com

Para começar um novo programa, você deve apagar (CLEAR) o programa anterior. Você pode fazer isto com o botão Clear ou ditando CLEAR.

Digite o seguinte programa no console do Windows.

DIR(15)= 1 ' Habilite o pino 15 como saída WHILE X<30 OUT(15) = X AND 1 ' Jogue o pino 15 para alto e vice-versa X=X+1 WAIT(500) LOOP

Page 12: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 12

_________________________________________________________________________ www.basic4ever.com

Agora digite RUN. Você verá o LED do ARMlite piscar 15 vezes.

Para a execução do programa, simplesmente pressione o botão de Stop.

Page 13: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 13

_________________________________________________________________________ www.basic4ever.com

Passo 5: Programação mais complexa

Normalmente é mais fácil enviar um programa para o ARMBASIC usando as opções Send File ou Resend File.

Page 14: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 14

_________________________________________________________________________ www.basic4ever.com

Passo 6: Guia de Manutenção

Page 15: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 15

_________________________________________________________________________ www.basic4ever.com

A COM onde está conectado o ARMBASIC pode ser encontrada em Control Panel>System>Device Manager

Page 16: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 16

_________________________________________________________________________ www.basic4ever.com

A biblioteca Tcl permite apenas as portas COM1 até COM9 serem usadas. A sua serial deve estar em uma destas portas. Pode ser trocada no Painel de Controle do Windows.

Control Panel> System> Hardware> Device Manager> Ports> Port Settings> Advanced

A maioria dos computadores tem um número de portas COM, você pode não ter selecionado a porta correta, você pode trocar para a porta correta em Options>Port Menu.

Page 17: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 17

_________________________________________________________________________ www.basic4ever.com

Em casos raros, quando o Windows Update tem automaticamente dado um boot enquanto o TclTerm estiver rodando, configurações do TclTerm referente à porta serial fica corrompido. Para corrigir este problema, boot novamente o sistema e se o problema persistir, apague o TclTerm “Configurations Settings” (TclTerm.ini será regenerado quando você rodar o TclTerm). Este arquivo está localizado em Program Files\Coridium directory.

Bom divertimento!

2) O compilador

Sobre

ARMbasic é um compilador de 32 bits para processadores ARM. Foi desenvolvido para ser uma portátil, alternativa para Hardware Debugger, mas tem

Page 18: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 18

_________________________________________________________________________ www.basic4ever.com

rapidamente crescido como um poderoso controlador programável, incluído também suporte para serial assíncrona, I2C, SPI, PWM, Timer e operações de contagem. Roda em um processador ARM.

ARMbasic é simples de usar, e roda totalmente no ARMBASIC, podendo ser programado pela porta serial. Aplicações destinos incluem funções de controle, desta forma, performance e um poderoso conjunto de rotinas de Hardware tem sido incluídas. Apesar de tem a sintaxe a mais compatível possível com MS-Visual e Pbasic, ARMbasic introduziu vários novas funções como rotinas específicas para Hardware, suporte a String, ponteiros limitados e muitas outras coisas.

ARMbasic é escrito em ANSI-C compilado com GCC.

Principais caracteristicas

Simplicidade

• Muitas aplicações de controle pode ser amparadas por um programa muito pequeno.

• ARMbasic pode ser instalado em minutos e resolver seus problemas de controle rapidamente.

• Enquanto o BASIC é considerado uma linguagem simples, ARMbasic com funções de Hardware e a velocidade de código compilado pode ser uma solução de alta performance que muitas outras linguagens complexas.

• É ótimo para Debugar programas. Por que aprender um novo desenvolvimento de sistema se você pode entrar com os comandos diretamente com um emulador de terminal ou usar um editor de texto que você está familiar

Compatibilidade com o BASIC

• ARMbasic da Coridium não é uma nova linguagem BASIC. Não é necessário você aprender alguma coisa nova se você está familiarizado com alguma variação do Microsoft Basic. Se você não tem conhecimento da linguagem BASIC, suas construções são fáceis de aprender e usar.

• ARMbasic é Case-Insensitive; variáveis escalar não necessita ser dimensionadas ou declaradas antes do uso; uma função MAIN não é necessária. A sintaxe segue muito da Microsoft.

A maioria das funções PBASIC tem sido adicionada:

• Pino de controle de direção de INPUT e OUTPUT • Pino de controle de nível HIGH ou LOW

Page 19: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 19

_________________________________________________________________________ www.basic4ever.com

• I2C para qualquer um dos grupos de 2 pinos dos 15 pinos • SPI para qualquer um dos grupos de 3 pinos dos 15 pinos • PWM tem qualquer pino com 256 níveis • FREQOUT em qualquer pino de até 100KHz • PULSIN e PULSOUT medirão ou vão gerar um pulso de saída • SHIFTIN, SHIFTOUT podem ser usados para dispositivos SPI ou MicroWire • OWIN ou OWOUT suporta dispositivos One-Wire • SERIN, SEROUT podem ser usados para comunicação serial em qualquer

pino de até 9600 Baud • RCTIME medirá o delay capacitivo

Suporte para variáveis de 32 bits e Strings

• Integer: (32-bit math) • Suporte a String • Conversão Automática de tipos

Arrays

• Arrays estáticas são suportadas, até 32Kb de tamanho.

Direto acesso ao Hardware

• Usa a mesma sintaxe dos ponteiros em C

Suporte a Debug

• A facilidade e velocidade do Interpretador • Rápido acesso às variáveis

Geração de código Optimizado

• Enquanto ARMbasic não é um compilador de otimização, faz várias espécies de otimizações para gerar código rápido nas CPU ARM. Roda mais de 10 milhões de instruções por segundo.

Incluído com qualquer módulo

• Cada módulo tem o ARMbasic internamente, então nada mais há para se comprar. A interface com TclTerm foi escrita pela Coridium e liberado como fonte, sendo necessário que o comentário sobre sua origem ser mantida. Outro emulador de terminal tendo suporte a XON/XOFF pode ser utilizado usado no lugar.

Requerimentos

Page 20: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 20

_________________________________________________________________________ www.basic4ever.com

• O compilador ARMbasic roda na plataforma de Hardware e simplesmente requer uma conexão a um emulador de terminal através de uma USB ou porta serial.

• TclTerm é um emulador de terminal escrito em Tcl e tem sido portado para Windows. Outros emuladores de terminal podem ser usados.

ARMbasic e outros BASICs

ARMbasic e Visual BASIC têm diferentes fins. Visual BASIC é uma linguagem de propósito geral que inclui acesso aos vários elementos da Microsoft e seus programas de aplicações. ARMbasic é uma pequena linguagem criada para controle de Hardware. ARMbasic é um Subset do Visual Basic. Alguns elementos de BASICs recentes não se aplicam para o Visual Basic, mas se aplicam para o ARMbasic. Nestes elementos incluem palavras chaves como RUN e CLEAR.

Tipos de Dados

• Visual BASIC tem um rico conjunto de tipos de dados bem como extensões orientadas a objetos.

• Em ARMbasic o tipo de dado default é 32 bits (INTEGER) e também suporta Arrays de Integer S e Strings.

Diferenças de Design

• Um objetivo do ARMbasic é ser uma simples, fácil de usar linguagem, mas ainda ser uma poderosa ferramenta para controlar Hardware. Para isto, um simples Subset do Basic tem sido escolhido, com extensões para controle de Hardware.

• O sufixo $ é usado para declarar Strings usando o Statement DIM • Apenas dimensões simples de Arrays são suportadas

Diferenças com o PBASIC

Embora ARMbasic tem ama similaridade com a sintaxe ao PBASIC, há algumas pequenas diferenças, de forma que alguma mudança deve ser feita para compilar 100%.

32-bits vs. 16-bits

• ARMbasic foi escrito para um Hardware de 32 bits e não pode utilizar código o qual depende do truncamento de 16 bits.

• O topo de dado default é 32 bits, em vez de 16 bits em PBASIC.

Trocas devido a ambiguidade

Page 21: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 21

_________________________________________________________________________ www.basic4ever.com

• FOR..NEXT é ambíguo para STEP negativo. Para clarificar, use DOWNTO • A sintaxe do IN0, DIR0, OUT0 no PBASIC tem problemas com

parametrização. Foram substituídos pelo uso de IN(0), DIR(0) e OUT(0). • A Entrada formatada de vários comandos PBASIC, em vários casos, ficarão

numa espera infinita se não estiver no formato correto. É melhor aceitar qualquer ou todas as entradas e então analisar mais tarde, mas o PBASIC não tem esta habilidade. Um conjunto de funções de String tem sido adicionadas para entrada interpretada do ARMbasic.

Diferenças de Design

• Variáveis Integer não necessitam serem declaradas. Isto é comum para a maioria dos BASICs. ARMbasic não requer que as variáveis sejam declaradas antes.

• Como há muito espaço para variáveis disponível, tipos BIT, NIBBLE, BYTE não são suportados. Arrays de BYTE também chamados de String, são suportados.

• Declaração de Array são suportados usando DIM, diferente da sintaxe do PBASIC.

• Declaração PIN é substituída pelo tratamento de pinos como uma Array de IN(x) vs INx. Isto faz a parametrização de pinos mais simples.

• A sintaxe CONST padrão da maioria dos BASICs é usada em vez da sintaxe CONST do PBASIC

• Múltiplos Statements em uma simples linha NÂO são suportados. • O PRINT padrão é usado no lugar do PBASIC DEBUGOUT. • O sufixo $ é usado para declarar Strings no Statement DIM. • Strings usam NULL como “terminador”. • CLEAR é usado para resetar todas as varíáveis e o Stack. • Em um interpretador há uma vantagem em ter funções como &\ |\ ^\ ** *\

DIG e DCD , mas estes podem ser facilmente feitos no BASIC compilado e tem nenhuma penalidade na performance ou espaço.

x = NOT (a & b) ' equivalente a &\ b

x = a * b >> 16 ' equivalente a ** b (para valores de 16 bits)

x = a * b >> 8 ' equivalente a */ b (para valores de 16 bits)

x = y /1000 mod 10 ' equivalente a y DIG 4

x = 1<<6 ' equivalente a DCD 6

• HYP, TAN e NCD não são implementados em ARMbasic • Valores -$hex não são suportados

Page 22: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 22

_________________________________________________________________________ www.basic4ever.com

Simplificações no Design

• Apenas 1 comando por linha é aceito • “run-on Statements“ não são permitidos • Entrada formatada é substituída por funções de Strings elementares

Outros comandos

• DTMFOUT não é suportado • ON e BRANCH pode ser codificados usando SELECT CASE. • LOOKUP pode usar Arrays ou Strings • LOOKDOWN pode ser codificado usando SELECT CASE • GET, PUT podem ser substituido com Arrays

FAQs

O que é ARMbasic? ARMbasic é um compilador incluído em uma família de módulos usando uma CPU ARM da Coridium Corp. O compilador roda em um processador ARM e simplesmente necessita de um Host que tenha uma porta serial ou USB serial. Além da sintaxe compatível com VISUAL BASIC, ARMbasic introduziu várias características do PBASIC, incluindo I2C,SERIAL, PWM, IN, OUT e FREQOUT. ARMbasic foi escrito em ANSI C, compilado com GCC

Quem é responsável pelo ARMbasic? Coridium Corp. Distribui e mantém o ARMbasic.

Posso eu usar o ARMbasic? ARMbasic tem várias vantagens sobre as alternativas.

o É rápido o Produz código compilado e não interpretado (Tokens) o É simples o Tem funções de Hardware poderosas para os mais populares bus

seriais o Baixo custo o Fácil de usar

Por que eu usaria ARMbasic em vez de GCC ?

Não há questões que alguns problemas requerem linguagens mais complexas. Mas muitos controles de problemas são simples e isto é o que pode

Page 23: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 23

_________________________________________________________________________ www.basic4ever.com

atender. Em muitos casos ARMbasic irá rodar muito mais rápido que um programa em C compilado. Como isto é possível, você perguntará? A resposta é que ARMbasic tem apenas o escopo global, não há Stack na maioria do código do usuário. Transferência de controle pode produzir código mais rápido que chamadas as procedures em C ou Java. ARMbasic é comprometido com velocidade e tamanho do código, mas se compara a programas escritos em C.

O quanto rápido é o ARMbasic?

O loop mais rápido usa WHILE ... LOOP, com um loop simples rodando 4 milhões de interações por segundo, loops levam um número de instruções para executar, quando rodando simples instruções, como X= X+1, irá rodar a velocidade excedendo 13 milhões de linhas por segundo.

ARMbasic suporta Programação Orientada a Objetos?

ARMbasic não suporta

Scopo das Variáveis

• Todos os Labels e variáveis são globais no ARMbasic. A grande vantagem é que há um pequeno Overhead para o Stack, o qual dá uma maior performance.

Matemáticas com ponto Flutuante

• ARMbasic usa matemática de 32 bits para todas as operações matemáticas.

Qual o futuro do ARMbasic?

• mais funções para String • mais seriais BUS • mais funções de Hardware • networking • Funções analógicas

Tipos das variáveis no ARMBASIC

NAME BITS FORMAT MIN VAL MAX VAL

Page 24: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 24

_________________________________________________________________________ www.basic4ever.com

INTEGER 32 signed Integer -2147483648 +2147483647

ARRAY Fixed length signed Integer -2147483648 +2147483647

STRING variable/max length 256 bytes

zero terminated 0 +255

Page 25: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 25

_________________________________________________________________________ www.basic4ever.com

3) A linguagem

STATEMENTS SIMPLES

Atribuição

Sintaxe lvalue = expression

Descrição Este comando altera o valor da variável, String, elemento de uma Array ou Registrador de Hardware. Exemplo A$ = "this is a string" A$(8) = "1" ' faz ele com uma String “1” IN(0) = 1 'seta o pino 0 como Alto x = 100+(x*z-3)

Page 26: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 26

_________________________________________________________________________ www.basic4ever.com

END Sintaxe END

Descrição END é usado para terminar o programa.

Quando o ARMbasic é usado para controlar uma aplicação, o END pode ser normalmente encontrado. Como a maioria das aplicações pode ser um loop bem como pode terminar, o qual vai requerer ao usuário dar um reboot.

Exemplo PRINT "An unrecoverable error has occurred " END

Page 27: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 27

_________________________________________________________________________ www.basic4ever.com

EXIT Sintaxe EXIT

Descrição Deixa um código do bloco como DO...LOOP, FOR...NEXT, ou WHILE...LOOP

Exemplo 'O comando PRINT não será executado DO EXIT ' Exit do DO...LOOP PRINT "Eu nunca serei executado" LOOP

Page 28: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 28

_________________________________________________________________________ www.basic4ever.com

GOSUB Sintaxe GOSUB label

Descrição A execução pula para uma subrotina marcada por um Label. Sempre usa RETURN para sair de um GOSUB, a execução continuará no próximo Statement após o GOSUB. Exemplo

GOSUB message END message PRINT "Welcome! return

Page 29: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 29

_________________________________________________________________________ www.basic4ever.com

GOTO Sintaxe GOTO label

Descrição A execução pula para o Label

Goto pode ser substituído poder estruturas mais modernas, como DO...LOOP, FOR...NEXT, e WHILE...LOOP.

Exemplo GOTO message message: PRINT "Welcome!

Page 30: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 30

_________________________________________________________________________ www.basic4ever.com

DEBUGIN variable Sintaxe DEBUGIN variable Descrição Normalmente, os programas que rodam no ARMBASIC não tem nenhuma interação humana. Porém, durante a fase de testes o usuário que entrar com diferentes valores. Então, uma versão simplificada do comando Basic tradicional INPUT tem sido adicionado, chamado de DEBUGIN. Exemplo DIM yn$(10) DO PRINT "Please enter a number: "; DEBUGIN a PRINT "and another "; DEBUGIN b PRINT "Thank you" PRINT PRINT "The total is "; a + b PRINT PRINT DO PRINT "Would you like to enter some more numbers"; DEBUGIN yn$ UNTIL (yn$(0) = "y") OR (yn$(0) = "n") UNTIL (yn$(0) <> "y")

Page 31: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 31

_________________________________________________________________________ www.basic4ever.com

PRINT Sintaxe PRINT [expressionlist] [(, | ;)] ...

Descrição Prints expressionlist para tela Expressionlist pode ser uma constante String, constante número, variáveis, variáveis Strings ou expressões consistindo de variáveis e números. Separados por “,” ou “;”.

Usando virgula (,) como separador ou no final da expressionlist colocará o cursor na próxima coluna (a cada 5 caracteres), usando ponto e vírgula (;), não moverá o cursor. Se nenhum dos deles for utilizado, então um new-line será impresso.

Exemplo DIM A$(10) A$ = "World" '' new-line PRINT "Hello World!"PRINT "Hello World!" '' no new-line PRINT "Hello"; "World"; "!"; PRINT '' column separator PRINT "Hello!", "World!" PRINT "3+4 =",3+4 y=4321 x=1234 PRINT "sum=",x+y

Page 32: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 32

_________________________________________________________________________ www.basic4ever.com

READ Sintaxe READ {constant,} variable_list

Descrição

Lê um dado armazenado na aplicação com o comando DATA. A Constant pode ser usado para alterar a localização dentro da Array de dados que será lido.

Os elementos de variable_list devem ser dos tipos básicos, numéricos, Strings ou elementos de Array. Cada elemento lido será preenchido de um valor de 32 bits no espaço de 4K usado para armazenar os Statements de DATA. Todos os Statements de DATA no programa se comportam como uma lista simples.

Após o último elemento de a lista ser lido, o primeiro elemento da lista será lido.

O Statement RESTORE reseta o ponteiro do próximo elemento da lista para o começo do DATA. Isto permite o usuário alterar a ordem no qual os DATA são READ.

Exemplo ' Cria uma Array de 5 Integer s e uma String para guardar dados DIM h(4) DIM hs$(30) ' Configura o loop para ocorrer 5 vezes (para 5 número... check o dado) FOR read_data = 0 TO 4 ' Lê um inteiro READ h(read_data) ' Mostra ele PRINT "Number"; read_data;" = "; h(read_data) NEXT ' Espaço PRINT ' Lê uma String READ hs$

Page 33: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 33

_________________________________________________________________________ www.basic4ever.com

' Imprime PRINT "String = " + hs$ ' Espera uma tecla SLEEP ' Sai do programa END ' Bloco de Dados DATA 3, 234, 4354, 23433, 87643, "Bye!"

Page 34: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 34

_________________________________________________________________________ www.basic4ever.com

RESTORE

Sintaxe RESTORE Descrição Reseta o ponteiro do próximo elemento da lista para o começo do DATA

Exemplo ' Cria 2 Arrays de Inteiros e Strings para armazenar dados DIM h(4) DIM h2(4) ' Configura o loop para ocorrer 5 vezes (para 5 números) FOR read_data1 = 0 TO 4 ' Le um inteiro READ h(read_data1) ' Mostra ele PRINT "Bloc 1, number"; read_data1;" = "; h(read_data1) NEXT ' Seta o ponteiro para o início RESTORE ' Mostra ele PRINT "Bloc 1 String = " + hs ' Espaço PRINT Print ' Seta o ponteiro para o inicio RESTORE ' Configura o loop para ocorrer 5 vezes (para 5 números) FOR read_data2 = 0 TO 4 ' Lê um Inteiro

Page 35: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 35

_________________________________________________________________________ www.basic4ever.com

READ h2(read_data2) ' Mostra PRINT "Bloc 2, number"; read_data2;" = "; h2(read_data2) NEXT DATA 3, 234, 4354, 23433, 87643 DATA 546, 7894, 4589, 64657, 34554

Page 36: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 36

_________________________________________________________________________ www.basic4ever.com

RETURN Sintaxe RETURN Descrição

RETURN é usado para retornar ao Statement imediatamente ao GOSUB.

Exemplo PRINT "Let's Gosub!" GOSUB MyGosub PRINT "Back from Gosub!" END MyGosub: PRINT "In Gosub!" RETURN

STATEMENT COMPOSTOS

Page 37: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 37

_________________________________________________________________________ www.basic4ever.com

DO...LOOP Sintaxe

[DO] WHILE condition [Statement block] LOOP DO [Statement block] [LOOP] UNTIL condition

DO [Statement block] LOOP

Descrição Repete um bloco de Statements until/while a condition é encontrada. As três sintaxes acima exibem tipos diferentes. O DO .. LOOP sem um WHILE ou UNTIL entrará em loop para sempre, a não ser que um Statement EXIT é executado.

Exemplo ' Imprimirá a mensagem "hello" no console até que a condição seja encontrada ‘ (a > 10) a = 1 DO PRINT "hello" a += 1 LOOP UNTIL a > 10

Page 38: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 38

_________________________________________________________________________ www.basic4ever.com

FOR...NEXT Sintaxe

FOR counter = startvalue TO endvalue [STEP stepvalue] [Statement block] NEXT [counter]

FOR counter = startvalue DOWNTO endvalue [STEP stepvalue] [Statement block] NEXT [counter]

Descrição O loop FOR [...] NEXT inicializa counter para startvalue, então executa o Statement block's, incrementando counter por stepvalue até que alcance endvalue. Se stepvalue não esta explicitamente declarado, é ““setado”” para 1.

Se DOWNTO é usado, então o counter é decrementado pelo valor stepvalue ou 1 se nada é especificado.

Exemplo PRINT "contando de 3 a 0, com passo de -1" FOR i = 3 DOWNTO 0 STEP 1 PRINT "i is "; i NEXT i

Page 39: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 39

_________________________________________________________________________ www.basic4ever.com

IF...THEN Sintaxe IF expression THEN Statement(s) [ELSE Statement(s) ] IF expression THEN Statement(s) [ELSE] Statement(s) [ELSEIF expression THEN] Statement(s) ENDIF

Descrição

IF...THEN é o meio de tomar decisões. É um mecanismo para executar um Statement ou conjunto de Statements (bloco) somente se a condição é True.

Exemplo x = 5 'Número a ser descoberto PRINT "Entre com o número entre 0 e 10" DO 'Inicia o loop DEBUGIN "guess"; y 'Ente um numero! IF x = y THEN PRINT "Correto!" 'Parabens!!!! EXIT ELSEIF y > 10 THEN PRINT "O número nao pode se maior que 10” ELSEIF x > y THEN PRINT "Muito baixo!!!" ELSEIF x < y THEN PRINT "Muito alto!!! " ENDIF LOOP 'Repete o loop

Page 40: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 40

_________________________________________________________________________ www.basic4ever.com

SELECT [CASE] Sintaxe SELECT [CASE] expression [CASE expressionlist] [Statements] [CASE ELSE] [Statements] ENDSELECT

Descrição Select case executa código específico dependendo do valor da expression. Se a expression iguala ao primeiro case então o código executado, caso contrário os próximos case são comparados e se um iguala então o código é executado. Se nenhuma condição iguala e há um case else no final, então será executado, caso contrário o completo bloco select case será pulado. Sintaxe da lista de expressão expression [{TO expression | relational operator expression}][, ...] exemplos de lista de expressões

CASE "A" CASE 5 TO 10 CASE > "e" CASE 1, 3 TO 10 CASE 1, 3, 5, 7, 9

Exemplo PRINT "Escolha um número de 1 a 10: " DEBUGIN choice SELECT choice CASE 1 PRINT "numero é 1" CASE 2 PRINT " numero é 2" CASE 3, 4 PRINT " numero é 3 ou 4" CASE 5 TO 10 PRINT " numero está de 5 a 10" CASE <= 20 PRINT "numero esta de 11 a 20" CASE ELSE

Page 41: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 41

_________________________________________________________________________ www.basic4ever.com

PRINT "numero esta fora de 1 a 20 " ENDSELECT

Page 42: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 42

_________________________________________________________________________ www.basic4ever.com

WHILE...LOOP Sintaxe [DO] WHILEcondition [Statements] LOOP

Descrição WHILE [...] LOOP repetirá os Statements entre WHILE e LOOP, enquanto a condição condition é True. Se a condition não é verdade quando o Statement WHILE começa, nenhum dos Statements será executado. O DO é opcional no ARMbasic. Exemplo WHILE x = 0 x = 1 LOOP

OUTROS STATEMENTS

Page 43: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 43

_________________________________________________________________________ www.basic4ever.com

CLEAR Sintaxe CLEAR

Descrição Este é um comando em tempo de compilação que apaga o atual programa em BASIC na memória Exemplo PRINT "hi there" RUN CLEAR

Page 44: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 44

_________________________________________________________________________ www.basic4ever.com

CONST Sintaxe CONST symbolname = value

Descrição Declara um constante em tempo de compilação que pode ser um inteiro Exemplo CONST Count = 5 FOR I = 1 TO Count PRINT I NEXT I -- Imprimirá 1 2 3 4 5

Page 45: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 45

_________________________________________________________________________ www.basic4ever.com

DATA Sintaxe DATA constant_expression1 [,constant_expression2]...

Descrição Armazena uma lista de constantes numéricos ou expressões alfabéticas que são avaliadas em tempo de compilação e armazenadas como constantes que podem ser lidas dentro de variáveis usando READ. DATA é normalmente usado para inicializar variáveis. Exemplo ' Cria uma Array de 5 inteiros DIM h(5) ' Configura laço para 5 ocorrências FOR read_data = 0 TO 4 ' Lê um Inteiro READ h(read_data) ' Display it. PRINT "Number"; read_data;" = "; h(read_data) NEXT DATA 3, 234, 435/4, 23+433, 87643

Page 46: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 46

_________________________________________________________________________ www.basic4ever.com

DIM Sintaxe

Declarando Arrays: DIM symbolname (size )

Declarando Strings: DIM symbolname$ (size )

Descrição Declara uma variável e aloca memória para acomodá-lo. Embora ARMbasic não requer a declaração de variáveis inteiras, DIM é usado para atribuir Arrays de Inteiros e Strings (Array de Bytes). O size é o número de elementos da Array mais 1. Permite indexação de 0 até size.

Todas Strings devem ter como último caractere ‘$’.

Apenas uma variável pode ser declarada por cada Statement DIM

Memória para variáveis simples é alocada a partir do início do Heap e Strings ou Arrays são alocadas a partir do topo do Heap. Strings são empacotadas como bytes e são sempre alinhadas em Word, você deve permitir espaço suficiente para acomodar o tamanho máximo esperado da String mais 1 Byte para o NULL.

Exemplo DIM a$ (10) DIM b$ (20) DIM c$ (30) a$ = "Hello World" b$ = "... from ARMbasic!" c$ = a$ + b$ print c$ ' Mostra Hello World

Page 47: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 47

_________________________________________________________________________ www.basic4ever.com

LABEL: Sintaxe name : Descrição

GOTO e GOSUB vão para um label. Qualquer parte no código é um label destino. Um label pode ser qualquer um nome de variável válido seguido por dois pontos “:”. Um label pode ser o único elemento na linha.

MAIN: é um caso especial de label que irá iniciar a execução do programa em algum lugar deferente da primeira linha de código.

Exemplo ... GOSUB sayHello .... sayHello: PRINT "Hello" RETURN

Page 48: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 48

_________________________________________________________________________ www.basic4ever.com

MAIN Sintaxe: MAIN:

Descrição Normalmente o programa ARMbasic irá executar o primeiro Statement. Isto pode ser mudado tendo um MAIN: em qualquer parte no programa. Quando o MAIN não é encontrado, o programa iniciará no primeiro Statement. Exemplo SUB1: PRINT "Hello from sub1" RETURN MAIN: GOSUB SUB1 END

Page 49: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 49

_________________________________________________________________________ www.basic4ever.com

RESTORE Sintaxe RESTORE

Descrição

O Statement RESTORE reseta o ponteiro do próximo elemento da lista para o começo do DATA. Isto permite o usuário alterar a ordem no qual os DATA são READ.

Exemplo ' Cria 2 Arrays de Inteiros DIM h(4) DIM h2(4) ' Configura laço de 5 loops FOR read_data1 = 0 TO 4 ' Lê um inteiro READ h(read_data1) ' O Mostra PRINT "Bloc 1, number"; read_data1;" = "; h(read_data1) NEXT ' Seta o ponteiro para o início RESTORE ' Imprime PRINT "Bloc 1 String = " + hs ' Espaços. PRINT Print

Page 50: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 50

_________________________________________________________________________ www.basic4ever.com

' Seta o ponteiro do DATA para o início RESTORE ' Configura laço de 5 loops FOR read_data2 = 0 TO 4 ' Lê um Inteiro READ h2(read_data2) ' Mostra PRINT "Bloc 2, number"; read_data2;" = "; h2(read_data2) NEXT DATA 3, 234, 4354, 23433, 87643 DATA 546, 7894, 4589, 64657, 34554

Page 51: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 51

_________________________________________________________________________ www.basic4ever.com

RUN Sintaxe RUN

Descrição Execute o programa que foi carregado na memória.

Exemplo PRINT "hi there" RUN CLEAR

OPERADORES

Page 52: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 52

_________________________________________________________________________ www.basic4ever.com

& (Concatenação de String) Sintaxe string1 & String 2

Descrição Retorna uma String da concatenação das duas variáveis. Se uma das duas variáveis não é uma String, a função STR é chamada automaticamente para converter a variável para String. Podem incluir funções LEFT, RIGHT, HEX e STR. Exemplo DIM A$(20) DIM C$(20) A$="The result is: " B=1243 C$=A$ & B PRINT C$ SLEEP O resultado é: The result is: 1243

Page 53: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 53

_________________________________________________________________________ www.basic4ever.com

* (Multiplicação)

Sintaxe

argument1 * argument2

Descrição O operador de multiplicação é usado para multiplicar 2 números. Os argumentos argument1 e argument2 podem ser qualquer expressão numérica válida.

Exemplo n = 4 * 5 PRINT n SLEEP O resultado é: 20

Page 54: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 54

_________________________________________________________________________ www.basic4ever.com

+ (Adição) Sintaxe argument1 + argument2

Descrição O operador adição é usado para achar a soma de 2 números. Os argumentos argument1 e argument2 podem ser qualquer expressão numérica válida.

Exemplo

n = 454 + 546 PRINT n SLEEP O resultado é: 1000

Page 55: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 55

_________________________________________________________________________ www.basic4ever.com

+ (Concatenação de String) Sintaxe string1 + string2

Descrição Retorna uma String da concatenação das duas variáveis. Se uma das duas variáveis não é uma String, a função STR é chamada automaticamente para converter a variável para String. Podem incluir funções LEFT, RIGHT, HEX e STR Exemplo DIM A$(20) DIM B$(20) DIM C$(30) A$="Hello," B$=" World!" C$=A$+B$ PRINT C$ SLEEP O resultado é: Hello, World!

Page 56: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 56

_________________________________________________________________________ www.basic4ever.com

- (Negação) Sintaxe - número

Descrição O operador de negação é usado para transformar o número em negativo. number pode ser qualquer expressão numérica válida.

Exemplo PRINT -5 n = 6543256 n = - n PRINT n SLEEP O resultado é: -5 -6543256

Page 57: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 57

_________________________________________________________________________ www.basic4ever.com

- (Subtração) Sintaxe argument1 - argument2

Descrição O operador de subtração é usado para achar a diferença entre dois números. Os argumentos argument1 e argument2 podem ser qualquer expressão numérica válida.

can be any valid numerical expression.

Exemplo n = 4 - 5 PRINT n SLEEP

Page 58: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 58

_________________________________________________________________________ www.basic4ever.com

/ (Divisão) Sintaxe argument1 / argument2

Descrição O operador de divisão é usado para dividir dois números e retorna um número inteiro. Os argumentos argument1 e argument2 podem ser qualquer expressão numérica válida. Se um outro argumento é uma variável não inicializada, o argumento será avaliado como zero. Se argument2 é zero, uma mensagem de divisão por zero será exibido.

Exemplo PRINT n / 5 n = 600000 / 23 PRINT n SLEEP

Page 59: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 59

_________________________________________________________________________ www.basic4ever.com

< (Menor que) Sintaxe expressionLEFT < expressionRT

Descrição O operador < (Menor que) avalia 2 expressões, compara e então retorna o resultado da condição. A condição é False (0) se left-hand é maior que right-hand, ou True (1) se é menor que right-hand.

Exemplo O operador >= (maior ou igual) é o complemento de < (menor que) e o funcionamento é idêntico quando combinado com o operador NOT (Bit-wise Complement).

IF( 69 < 420 ) THEN PRINT "( 69 < 420 ) is True." IF NOT( 69 >= 420 ) THEN PRINT "not( 69 >= 420 ) is True."

Page 60: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 60

_________________________________________________________________________ www.basic4ever.com

<= (menor ou igual) Sintaxe expressionLEFT <= expressionRT

Descrição O operador <= (Menor ou igual) avalia 2 expressões, compara e então retorna o resultado da condição. A condição é True se left-hand é menor ou igual a right-hand, ou False (0) se é maior que right-hand.

Exemplo O operador > (maior que) é o complemento de <= (menor ou igual), e o funcionamento é idêntico quando combinado com o operador NOT (Bit-wise Complement).

IF( 69 <= 420 ) THEN PRINT "( 69 <= 420 ) is True." IF NOT( 60 > 420 ) THEN PRINT "not( 420 > 69 ) is True."

Page 61: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 61

_________________________________________________________________________ www.basic4ever.com

> (Maior que) Sintaxe expressionLEFT > expressionRT

Descrição O operador > (Maior que) avalia 2 expressões, compara e então retorna o resultado da condição. A condição é False (0) se left-hand é maior que right-hand, ou True (1) se é menor que right-hand.

Exemplo O operador <= (menor ou igual) é o complemento de > (maior que), e o funcionamento é idêntico quando combinado com o operador NOT (Bit-wise Complement).

IF( 420 > 69 ) THEN PRINT "( 420 > 69 ) is True." IF NOT( 420 <= 69 ) THEN PRINT "not( 420 <= 69 ) is True."

Page 62: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 62

_________________________________________________________________________ www.basic4ever.com

>= (maior ou igual) Sintaxe expressionLEFT >= expressionRT

Descrição O operador >= (Maior ou igual) avalia 2 expressões, compara e então retorna o resultado da condição. A condição é True se left-hand é maior ou igual a right-hand, ou False (0) se é menor que right-hand.

Exemplo O operador < (menor) é o complemento de >= (maior ou igual), e o funcionamento é idêntico quando combinado com o operador NOT (Bit-wise Complement).

IF( 420 >= 69 ) THEN PRINT "( 420 >= 69 ) is True." IF NOT( 420 < 69 ) THEN PRINT "not( 420 < 69 ) is True."

Page 63: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 63

_________________________________________________________________________ www.basic4ever.com

<> (Diferente)

Sintaxe expressionLEFT <> expressionRT

Descrição O operador <> avalia duas expressões, compara se são diferentes e retorna o resultado condicional. A condição é True (1) se a expressão left-hand é diferente de right-hand, ou False (0) se são iguais.

Exemplo IF( guess <> secret_number ) THEN PRINT "Sorry, Try again." O operador = (igual) é o complemento do operador <> e a funcionalidade é idêntica quando combinada com o operador NOT (Bit-wise Complement). IF( 420 <> 69 ) THEN PRINT "( 420 <> 69 ) is True." IF NOT( 420 = 69 ) THEN PRINT "not( 420 = 69 ) is True."

Page 64: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 64

_________________________________________________________________________ www.basic4ever.com

= (Igual)

Sintaxe expressionLEFT = expressionRT

Descrição O operador = avalia duas expressões, compara se são iguais e retorna o resultado condicional. A condição é True (1) se a expressão left-hand é igual a right-hand, ou False (0) se são diferentes.

Exemplo IF( guess = secret_number ) THEN PRINT "Cool, found! " O operador <> (diferente) é o complemento do operador = e a funcionalidade é idêntica quando combinada com o operador NOT (Bit-wise Complement). IF( 420 <> 69 ) THEN PRINT "( 420 <> 69 ) is True." IF NOT( 420 = 69 ) THEN PRINT "not( 420 = 69 ) is True."

Page 65: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 65

_________________________________________________________________________ www.basic4ever.com

ABS Sintaxe ABS ( number )

Descrição O valor absoluto de um número é sua magnitude sem sinal. Por exemplo, ABS(-1) e ABS(1) retornam 1. O argumento pode ser qualquer expressão numérica válida. Se number é uma variável não inicializada, zero é retornado. ABS retorna o valor que é o mesmo tipo do argumento number. Exemplo PRINT ABS ( -1 ) PRINT ABS ( 42 ) PRINT ABS ( N ) N = -69 PRINT ABS ( N ) O resultado é: 1 42 0 69

Page 66: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 66

_________________________________________________________________________ www.basic4ever.com

AND Sintaxe number AND number

Descrição AND é uma operação booleana, uma função lógica que pega dois bits e produz um bit resultante. Se dados dois bits, a função retorna True se ambos são True e False para qualquer outra combinação. A tabela verdade abaixo mostra todas as combinações. Bit1 Bit2 Result 0 0 0 1 0 0 0 1 0 1 1 1 Ele retorna True para expressões condicionais no ARMbasic. Quando usando "And" dentro de um bloco If, While loop, ou Do loop, se comportará assim: "IF condition1 AND condition2 THEN expression1" É traduzido como: IF condition1 é True, AND condition2 é True, THEN executa expression1 Quando dadas duas expressões, números ou variáveis que retornam um valor que é mais que um simples bit, AND é realizado “bitwise”. Uma operação “bitwise” compara cada bit se um número, como cada bit de outro número, realizando uma operação lógica para cada bit. A expressão matemática booleana abaixo descreve isto 00001111 AND 00011110 -------- igual 00001110 Exemplo: ' Usando o operador AND em dois valores numéricos numeric_value1 = 15 '00001111 numeric_value2 = 30 '00011110

Page 67: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 67

_________________________________________________________________________ www.basic4ever.com

'Result = 14 = 00001110 PRINT numeric_value1 AND numeric_value2 END ' Usando o operador em duas expressões condicionais numeric_value1 = 15 numeric_value2 = 25 IF numeric_value1 > 10 AND numeric_value1 < 20

THEN PRINT "Valor numérico 1 esta entre 10 e 20" IF numeric_value2 > 10 AND numeric_value2 < 20

THEN PRINT " Valor numérico 2 esta entre 10 e 20" END O resultado é: Valor numérico 1 esta entre 10 e 20

Page 68: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 68

_________________________________________________________________________ www.basic4ever.com

OR Sintaxe number OR number

Descrição OR é uma operação booleana, uma função lógica que pega dois bits e produz um bit resultante. Se dados dois bits, a função retorna True qualquer um deles for True e False para qualquer outra combinação. A tabela verdade abaixo mostra todas as combinações. Bit1 Bit2 Result 0 0 0 1 0 1 0 1 1 1 1 1 Ele retorna True para expressões condicionais no ARMbasic. Quando usando "OR" dentro de um bloco If, While loop, ou Do loop, se comportará assim: "IF condition1 OR condition2 THEN expression1" É traduzido como: IF condition1 é True OU condition2 é True, THEN executa expression1 Quando dadas duas expressões, números ou variáveis que retornam um valor que é mais que um simples bit, OR é realizado “bitwise”. Uma operação “bitwise” compara cada bit se um número, como cada bit de outro número, realizando uma operação lógica para cada bit. A expressão matemática booleana abaixo descreve isto 00001111 OR 00011110 -------- igual 00011111 Exemplo: ' Usando o operador OR em dois valores numéricos numeric_value1 = 15 '00001111 numeric_value2 = 30 '00011110 'Result = 31 = 00011111

Page 69: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 69

_________________________________________________________________________ www.basic4ever.com

PRINT numeric_value1 OR numeric_value2 END ' Usando o operador em duas expressões condicionais numeric_value = 10 IF numeric_value = 5 OR numeric_value = 10 THEN PRINT "Numeric_Value equals 5 or 10" END O resultado é: Numeric_Value equals 5 or 10

Page 70: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 70

_________________________________________________________________________ www.basic4ever.com

NOT Sintaxe NOT expression

Descrição NOT, é uma função lógica que pega um bit e retorna o bit invertido. A função retorna True se o bit é False e False se o bit é True. Também NOT pode ser utilizado em expressões condicionais. Quando usando NOT em um bloco If, While loop, ou Do loop, se comportará assim: IF NOT condition1 THEN expression1 É traduzido como: IF condition1 é False THEN executa expression1 Quando dada uma expressão, número, ou variável que retorna um número que é mais que um simples bit, NOT é realizado "bitwise". Uma operação “bitwise” realiza uma operação lógica para cada bit. A expressão matemática booleana abaixo descreve isto: 00001111 NOT -------- igual 11110000 A mesma lógica é também usado quando trabalhando com condições. NOT, quando usado “bitwise”, é executado com inteiros positivos, como UInteger, UByte, ou ULongInt. Pode, de qualquer forma, ser usado com qualquer tipo numérico.

Exemplo ' Usando o operador NOT sobre um valor numérico numeric_value = 15 '00001111 'Resultado = -16 = 111111111111111111111111111110000 (Complemento de ‘2) PRINT NOT numeric_value END ' Usando o operador NOT em expressões condicionais numeric_value1 = 15 numeric_value2 = 25

Page 71: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 71

_________________________________________________________________________ www.basic4ever.com

IF NOT numeric_value1 = 10 THEN PRINT "Numeric_Value1 is not equal to 10" IF NOT numeric_value2 = 25 THEN PRINT "Numeric_Value2 is not equal to 25" END O resultado é: Numeric_Value1 is not equal to 10

Page 72: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 72

_________________________________________________________________________ www.basic4ever.com

MOD Sintaxe argument1 MOD argument2

Descrição MOD é modulo ou operador aritmético que retorna o resto de argument1 dividido por argument2. Exemplo PRINT 47 MOD 7 PRINT 56 MOD 2 PRINT 5 MOD 3 O resultado é: 5 0 2

Page 73: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 73

_________________________________________________________________________ www.basic4ever.com

COS Sintaxe COS ( expression )

Descrição ARMbasic usa inteiros, mas pode haver a necessidade delas em certas funções que normalmente usam cálculos com ponto flutuante. Uma destas é a função coseno, a qual normalmente opera em graus ou radianos. Mas para simplicidade no mundo binário, estes valores devem ser normalizados para preencher um valor do tipo byte. Então o argumento é 0-255, que é igual o número de graus vezes 0.7103 (256/360). O resultado deveria estar normalmente entre -1 e 1, mas no caso é expresso como -127 a +127 ou o cos() multiplicado por 127.

Exemplo PRINT "Please enter an angle in degrees: "; DEBUGIN a r = a * 256 / 360 'Convert the degrees to "binary radians" PRINT "" PRINT "The cosine of a" ; a; " degree angle is"; COS ( r ) END

O resultado é: Please enter an angle in degrees: 30 The cosine of a 30 degree angle IS 110

Page 74: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 74

_________________________________________________________________________ www.basic4ever.com

SIN Sintaxe SIN ( number )

Descrição ARMbasic usa inteiros, mas pode haver a necessidade delas em certas funções que normalmente usam cálculos com ponto flutuante. Uma destas é a função coseno, a qual normalmente opera em graus ou radianos. Mas para simplicidade no mundo binário, estes valores devem ser normalizados para preencher um valor do tipo byte. Então o argumento é 0-255, que é igual o número de graus vezes 0.7103 (256/360). O resultado deveria estar normalmente entre -1 e 1, mas no caso é expresso como -127 a +127 ou o sin() multiplicado por 127.

Exemplo PRINT "Please enter an angle in degrees: "; DEBUGIN a r = a * 256 / 360 'Convert the degrees to Radians PRINT "" PRINT "The sine of a" ; a; " degree angle is"; SIN ( r ) END O resultado é: Please enter an angle in degrees: 30 The sine of a 30 degree angle IS 64

Page 75: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 75

_________________________________________________________________________ www.basic4ever.com

XOR Sintaxe number XOR number

Descrição XOR é uma operação booleana, uma função lógica que pega dois bits e produz um bit resultante. Se dados dois bits, a função retorna True forem diferentes e False se forem iguais. A tabela verdade abaixo mostra todas as combinações. Bit1 Bit2 Result 0 0 0 1 0 1 0 1 1 1 1 0 Ele retorna True para expressões condicionais no ARMbasic. Quando usando "XOR" dentro de um bloco If, While loop, ou Do loop, se comportará assim: "IF condition1 XOR condition2 THEN expression1" É traduzido como: IF condition1 é True XOR condition2 é True, THEN executa expression1 Quando dadas duas expressões, números ou variáveis que retornam um valor que é mais que um simples bit, XOR é realizado “bitwise”. Uma operação “bitwise” compara cada bit se um número, como cada bit de outro número, realizando uma operação lógica para cada bit. A expressão matemática booleana abaixo descreve isto 00001111 XOR 00011110 -------- igual 00010001 Exemplo: ' Usando o operador XOR em dois valores numéricos numeric_value1 = 15 '00001111 numeric_value2 = 30 '00011110 'Result = 17 = 00010001

Page 76: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 76

_________________________________________________________________________ www.basic4ever.com

PRINT numeric_value1 AND numeric_value2 END ' Usando o operador em duas expressões condicionais numeric_value1 = 10 numeric_value2 = 15 IF numeric_value1 = 10 XOR numeric_value2 = 20 THEN PRINT "Numeric_Value1 equals 10 or Numeric_Value2 equals 20" END O resultado é: "Numeric_Value1 equals 10 or Numeric_Value2 equals 20"

Page 77: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 77

_________________________________________________________________________ www.basic4ever.com

<< Sintaxe number << places

Descrição << shifts todos os bits do argumento inteiro number para esquerda por um número de vezes places. Isto tem o efeito de multiplicar o argumento number por 2 para cada shift dado em argumentos places. Ambos argumentos numbers e places são inteiros. Isto é mais fácil ver em um número binário. Por exemplo, %0101 << 1 retorna o número binário %01010. Na base 10, número com este 5 << 1 retorna 10 Exemplo FOR i = 1 TO 10 PRINT 1 << i NEXT i SLEEP O resultado é: 2 4 8 16 32 64 128 256 512 1024

Page 78: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 78

_________________________________________________________________________ www.basic4ever.com

>> Sintaxe number >> places

Descrição >> shifts todos os bits do argumento inteiro number para direita por um número de vezes places. Isto tem o efeito de dividir o argumento number por 2 para cada shift dado em argumentos places. Ambos argumentos numbers e places são inteiros. Isto é mais fácil ver em um número binário. Por exemplo, %0101 >> 1 retorna o número binário %010. Na base 10, número com este 5 >> 1 retorna 2 Exemplo FOR i = 1 TO 10 PRINT 1000 >> i NEXT i SLEEP O resultado é: 500 250 125 62 31 15 7 3 1 0

Page 79: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 79

_________________________________________________________________________ www.basic4ever.com

REV Sintaxe ( value ) REV ( number of bits )

Descrição A função retorna a cópia espelhada de uma quantidade específica de bits do valor, começando pelo bit mais à direita (LSB). Exemplo: 0xFEED REV 4 retorna 0xB (1011) que é o espelho de 0xD (1101) Em 0xFEED, os number of bits mais a direita de 0xFEED é D. D em binário é 1101, o espelho de 1101 é 1011.

TIPOS DE DADOS

Page 80: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 80

_________________________________________________________________________ www.basic4ever.com

Constantes Descrição Constantes são números que não podem ser alterados após eles serem definidos. Por exemplo, 5 será sempre o mesmo número.

No ARMbasic, nomes de variáveis podem ser ditos constantes definindo-os com o comando CONST. Cada constante é disponível globalmente, significa que uma vez definida você pode usar a palavra para se referir a constante em qualquer parte do seu programa. Após sendo definido com o comando CONST, constantes não podem ser alteradas. Se o código tenta alterar a constante, uma mensagem de erro irá resultar durante a compilação do código.

Exemplo CONST FirstNumber = 1 CONST SecondNumber = 2 PRINT FirstNumber, SecondNumber 'Irá imprimir 1 e 2

Page 81: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 81

_________________________________________________________________________ www.basic4ever.com

Variáveis Descrição Variáveis são valores os quais podem ser manipulados. Elas são referenciadas usando nomes compostos de letras, números e caractere "_". Tipo de dado numérico de 32-bit tem sinal. Pode guardar valores de -2147483648 até 2147483647. Variáveis são declaradas automaticamente no primeiro uso. Não é necesário um Statement DIM.

Exemplo FirstNumber = 1 SecondNumber = 2 PRINT FirstNumber, SecondNumber, ThirdNumber 'Irá imprimir 1 2 0

Page 82: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 82

_________________________________________________________________________ www.basic4ever.com

Arrays Descrição Arrays são variáveis as quais contem mais que um valor. O valor é decidido através do uso de um índice o qual é um número inteiro entre 0 e o número de elementos da Array. Em ARMbasic, qualquer Array deve ser declarada antes de seu primeiro uso, com o comando DIM O melhor meio de conceituar uma Array é olhando ela com uma planilha. Por exemplo, se você tem uma Array chamada myArray a qual contém elementos (1 até 10), e foi preenchida com números randômicos, você pode ver algo como: Indice Dado 1 5 2 2 3 6 4 5 5 9 6 1 7 0 8 4 9 5 10 7 Tenha em mente que os números na coluna Dados são completamente arbitrários neste exemplo. Quando você criar uma Array no ARMbasic usando o comando DIM, todos os elementos são inicializados com 0. Se você olhar myArray(1), você verá que é 5. Se você olhar myArray(5), você verá que é 9. No ARMbasic , você tratar uma parte de uma Array como se fosse uma variável simples. Exemplo: DIM Numbers( 10) DIM OtherNumbers( 10) Numbers(1) = 1 Numbers(2) = 2 OtherNumbers(1) = 3 OtherNumbers(2) = 4 GOSUB PrintArray FOR a = 1 TO 10 PRINT Numbers(a) NEXT a PRINT OtherNumbers(1)

Page 83: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 83

_________________________________________________________________________ www.basic4ever.com

PRINT OtherNumbers(2) PRINT OtherNumbers(3) PRINT OtherNumbers(4) PRINT OtherNumbers(5) PRINT OtherNumbers(6) PRINT OtherNumbers(7) PRINT OtherNumbers(8) PRINT OtherNumbers(9) PRINT OtherNumbers(10) PrintArray: FOR i = 1 TO 10 PRINT otherNumbers(i) NEXT i RETURN

Page 84: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 84

_________________________________________________________________________ www.basic4ever.com

Strings Sintaxe DIM symbolname$ ( maxlength )

Descrição

Uma String é uma Array de caracteres e limitado para 256 caracteres.

Um implícito CHR(0) (NULL) é incluído no final da STRING, para permitir uma String de tamanho variável.

STRINGS não são checadas pelo tamanho durante tempo de execução, desta forma, cuidado com o preenchimento da String para não ultrapassar o valor máximo.

Nome de Strings devem terminar com o sinal de Dólar $

A$(12) retorna o caractere da posição 12, começando na posição 0.

Exemplo DIM a$ (20) a$ = "Hello" a$ = a$+chr(32)+ "World" PRINT a$ ' = "Hello World"

Page 85: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 85

_________________________________________________________________________ www.basic4ever.com

Acesso ao Hardware do ARMBASIC

Descrição EnquantoARMbasic provê acesso para várias funções de Hardware, há casos onde o usuário pode querer ter o controle sobre registradores diretamente. Exemplo DayOfWeek = * ($E0024034) ' Lê o registrador DIA DA SEMANA do RTC

Page 86: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 86

_________________________________________________________________________ www.basic4ever.com

4) Runtime Library Funções de Data e Hora (Necessita colocar cristal de 32768Hz em J3, pino 1 e 2) DAY Sintaxe DAY

Descrição A Função configura ou retorna o dia do mês. Pode ser de 1 a 28, 29, 30, ou 31

Exemplo

SECOND = 30 MINUTE = 15 HOUR = 13 DAY = 14 MONTH = 4 YEAR = 2006 SELECT WEEKDAY CASE 0 dayname$ = "Sunday" CASE 1 dayname$ = "Monday" CASE 2 dayname$ = "Tuesday" CASE 3 dayname$ = "Wednesday" CASE 4 dayname$ = "Thursday" CASE 5 dayname$ = "Friday" CASE 6 dayname$ = "Saturday" CASE ELSE dayname$ = "not possible" ENDSELECT PRINT "This is "; dayname$

Page 87: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 87

_________________________________________________________________________ www.basic4ever.com

PRINT MONTH; "/"; DAY; "/"; YEAR PRINT "The time is "; HOUR; ":"; MINUTE; ":"; SECOND O resultado é: This is Friday 4/14/2006 The time is 13:15:30

Page 88: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 88

_________________________________________________________________________ www.basic4ever.com

MONTH Sintaxe MONTH

Descrição A função configura ou retorna o mês. Valores vão de 1 a 12

Exemplo SECOND = 30 MINUTE = 15 HOUR = 13 DAY = 14 MONTH = 4 YEAR = 2006 SELECT WEEKDAY CASE 0 dayname$ = "Sunday" CASE 1 dayname$ = "Monday" CASE 2 dayname$ = "Tuesday" CASE 3 dayname$ = "Wednesday" CASE 4 dayname$ = "Thursday" CASE 5 dayname$ = "Friday" CASE 6 dayname$ = "Saturday" CASE ELSE dayname$ = "not possible" ENDSELECT PRINT "This is "; dayname$ PRINT MONTH; "/"; DAY; "/"; YEAR PRINT "The time is "; HOUR; ":"; MINUTE; ":"; SECOND O resultado é:

Page 89: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 89

_________________________________________________________________________ www.basic4ever.com

This is Friday 4/14/2006 The time is 13:15:30

Page 90: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 90

_________________________________________________________________________ www.basic4ever.com

YEAR Sintaxe YEAR = 2006

PRINT YEAR

Descrição Configura ou retorna o ano

Exemplo SECOND = 30 MINUTE = 15 HOUR = 13 DAY = 14 MONTH = 4 YEAR = 2006 SELECT WEEKDAY CASE 0 dayname$ = "Sunday" CASE 1 dayname$ = "Monday" CASE 2 dayname$ = "Tuesday" CASE 3 dayname$ = "Wednesday" CASE 4 dayname$ = "Thursday" CASE 5 dayname$ = "Friday" CASE 6 dayname$ = "Saturday" CASE ELSE dayname$ = "not possible" ENDSELECT PRINT "This is "; dayname$ PRINT MONTH; "/"; DAY; "/"; YEAR PRINT "The time is "; HOUR; ":"; MINUTE; ":"; SECOND O resultado é:

Page 91: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 91

_________________________________________________________________________ www.basic4ever.com

This is Friday 4/14/2006 The time is 13:15:30

Page 92: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 92

_________________________________________________________________________ www.basic4ever.com

HOUR Sintaxe HOUR

Descrição Configura ou retorna a hora. Valores vão de 0 a 23.

Exemplo SECOND = 30 MINUTE = 15 HOUR = 13 DAY = 14 MONTH = 4 YEAR = 2006 SELECT WEEKDAY CASE 0 dayname$ = "Sunday" CASE 1 dayname$ = "Monday" CASE 2 dayname$ = "Tuesday" CASE 3 dayname$ = "Wednesday" CASE 4 dayname$ = "Thursday" CASE 5 dayname$ = "Friday" CASE 6 dayname$ = "Saturday" CASE ELSE dayname$ = "not possible" ENDSELECT PRINT "This is "; dayname$ PRINT MONTH; "/"; DAY; "/"; YEAR PRINT "The time is "; HOUR; ":"; MINUTE; ":"; SECOND O resultado é:

Page 93: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 93

_________________________________________________________________________ www.basic4ever.com

This is Friday 4/14/2006 The time is 13:15:30

Page 94: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 94

_________________________________________________________________________ www.basic4ever.com

MINUTE

Sintaxe

MINUTE

Descrição Configura ou retorna o minuto. Valores vão de 0 a 59

Exemplo SECOND = 30 MINUTE = 15 HOUR = 13 DAY = 14 MONTH = 4 YEAR = 2006 SELECT WEEKDAY CASE 0 dayname$ = "Sunday" CASE 1 dayname$ = "Monday" CASE 2 dayname$ = "Tuesday" CASE 3 dayname$ = "Wednesday" CASE 4 dayname$ = "Thursday" CASE 5 dayname$ = "Friday" CASE 6 dayname$ = "Saturday" CASE ELSE dayname$ = "not possible" ENDSELECT PRINT "This is "; dayname$ PRINT MONTH; "/"; DAY; "/"; YEAR PRINT "The time is "; HOUR; ":"; MINUTE; ":"; SECOND O resultado é:

Page 95: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 95

_________________________________________________________________________ www.basic4ever.com

This is Friday 4/14/2006 The time is 13:15:30

Page 96: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 96

_________________________________________________________________________ www.basic4ever.com

SECOND Sintaxe SECOND

Descrição Configura ou retorna o segundo. Valores vão de 0 a 59.

Exemplo SECOND = 30 MINUTE = 15 HOUR = 13 DAY = 14 MONTH = 4 YEAR = 2006 SELECT WEEKDAY CASE 0 dayname$ = "Sunday" CASE 1 dayname$ = "Monday" CASE 2 dayname$ = "Tuesday" CASE 3 dayname$ = "Wednesday" CASE 4 dayname$ = "Thursday" CASE 5 dayname$ = "Friday" CASE 6 dayname$ = "Saturday" CASE ELSE dayname$ = "not possible" ENDSELECT PRINT "This is "; dayname$ PRINT MONTH; "/"; DAY; "/"; YEAR PRINT "The time is "; HOUR; ":"; MINUTE; ":"; SECOND O resultado é:

Page 97: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 97

_________________________________________________________________________ www.basic4ever.com

This is Friday 4/14/2006 The time is 13:15:30

Page 98: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 98

_________________________________________________________________________ www.basic4ever.com

WEEKDAY Sintaxe WEEKDAY

Descrição Retorna o dia o número do dia da semana. 0 corresponde a Domingo até Sábado valendo 6.

Exemplo SECOND = 30 MINUTE = 15 HOUR = 13 DAY = 14 MONTH = 4 YEAR = 2006 SELECT WEEKDAY CASE 0 dayname$ = "Sunday" CASE 1 dayname$ = "Monday" CASE 2 dayname$ = "Tuesday" CASE 3 dayname$ = "Wednesday" CASE 4 dayname$ = "Thursday" CASE 5 dayname$ = "Friday" CASE 6 dayname$ = "Saturday" CASE ELSE dayname$ = "not possible" ENDSELECT PRINT "This is "; dayname$ PRINT MONTH; "/"; DAY; "/"; YEAR PRINT "The time is "; HOUR; ":"; MINUTE; ":"; SECOND O resultado é:

Page 99: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 99

_________________________________________________________________________ www.basic4ever.com

This is Friday 4/14/2006 The time is 13:15:30

Page 100: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 100

_________________________________________________________________________ www.basic4ever.com

WAIT Sintaxe WAIT ( milliseconds )

Descrição

Dá uma pausa de milliseconds no programa. 1000 milisegundos = 1 segundo

WAIT e PAUSE são equivalentes

Exemplo ’ Imprime “tick” uma vez por segundo WHILE 1 PRINT "tick" WAIT(1000) LOOP

Page 101: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 101

_________________________________________________________________________ www.basic4ever.com

TIMER Sintaxe TIMER

Descrição

TIMER é um Timer contando livremente que incrementa a cada microsegundo. Pode ser acessado para escrita e leitura.

Exemplo TIMER = 0 WHILE (espere por algo acontecer) PRINT "That took "; TIMER; " microseconds"

Page 102: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 102

_________________________________________________________________________ www.basic4ever.com

Funcões para String CHR Sintaxe CHR( expression )

Descrição CHR retorna uma simples String (byte) contendo o caractere representado pelo código ASCII passado para ela. Por exemplo, CHR(97) retorna "a".

Exemplo PRINT "O caractere representado pelo codigo ASCII 97 é: "; CHR(97)

Page 103: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 103

_________________________________________________________________________ www.basic4ever.com

HEX Sintaxe

HEX ( expression )

Descrição

Retorna uma String representando o valor Hexadecimal de uma expressão do tipo inteiro. Valores Hexadecimais contem 0-9, e A-F. O tamanho da String em Hexadecimal depende o tipo inteiro passado.

Exemplo DIM text$(10) text$ = HEX(4096) PRINT "0x";text$ 'mostrará 0x1000

Page 104: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 104

_________________________________________________________________________ www.basic4ever.com

LEFT Sintaxe LEFT( String, characters)

Descrição Retorna n-characters começando da esquerda da String. String pode ser uma constante ou uma String variável.

Funções para String não podem ser aninhadas.

A$ = LEFT("this is a test",5) + RIGHT(B$,3) ' operação de String válida

A$ = LEFT("this "+b$,5) ' Não permitido (aninhado)

Exemplo text$ = "hello world" PRINT LEFT(text$, 5) 'Mostra "hello"

Page 105: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 105

_________________________________________________________________________ www.basic4ever.com

RIGHT Sintaxe RIGHT( String, characters )

Descrição Retorna n-characters começando da direita da String. String pode ser uma constante ou uma String variável.

Funções para String não podem ser aninhadas.

A$ = LEFT("this is a test",5) + RIGHT(B$,3) ' operação válida

A$ = RIGHT("this "+b$,5) ' não permitido

Exemplo text$ = "hello world" PRINT RIGHT(text$, 5) 'mostra "world"

Page 106: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 106

_________________________________________________________________________ www.basic4ever.com

LEN Sintaxe

LEN( String )

Descrição

Retorna o tamanho da String em caracteres. String pode ser uma constante ou String variável.

Funções para String não podem ser aninhadas.

Exemplo DIM text$(10) text$ = "0x"+HEX(4096) PRINT LEN(text$) 'Irá mostrar 6

Page 107: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 107

_________________________________________________________________________ www.basic4ever.com

STR Sintaxe STR( expression )

Descrição STR irá converte uma expressão em uma String. Por exemplo, STR(3) será "3", ou STR(333) será "333". STR é também utilizado em certas rotinas da biblioteca de Hardware para designar que uma série de bytes pode ser lido ou escrito para uma String. Exemplo DIM b$ (10) a = 8421 b$ = STR(a) PRINT a, b$ ' Irá mostrar 8421 8421

Page 108: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 108

_________________________________________________________________________ www.basic4ever.com

VAL Sintaxe VAL( String )

Descrição VAL converte uma String para um número decimal. Por exemplo, VAL("10") irá retornar 10. Esta função analisa a String a partir da esquerda e retorna o maior número que pode ler até encontrar um caractere que não seja de 0 a 9. Exemplo

DIM a$(20) a$ = "20xa211" b = VAL(a$) PRINT a$, b 20xa211 20

Page 109: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 109

_________________________________________________________________________ www.basic4ever.com

STRCOMP Sintaxe

STRCOMP( string1, string2 )

Descrição

Ela compara duas Strings, retornando -1 se string1 for menor que string2. Retorna 0 se as duas Strings são iguais, e 1 se string1 for maior que string2. String1 e String2 podem ser constantes ou Strings variáveis

Funções para String não podem ser aninhadas.

Exemplo DIM text$(10) text$ = "BAT" PRINT STRCOMP(text$, text$) ' Irá mostrar 0 PRINT STRCOMP(text$, "BAT") ' Irá mostrar 0 PRINT STRCOMP(text$, "BOOT") ' Irá mostrar -1 PRINT STRCOMP(text$, "BAA") ' Irá mostrar 1

Page 110: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 110

_________________________________________________________________________ www.basic4ever.com

5) Biblioteca de Hardware

Comportamento do ARMBASIC durante o POWER UP

No POWER UP todos os pinos estão em "tri-stated"

Reiniciando o programa

Se o usuário tem entrado um programa BASIC dentro do ARMBASIC, aquele programa será executado quando a alimentação é aplicada ou reiniciado quando o pino de RESET é acionado tanto com o PUSH BUTTON ou através do programa TclTerm através do linha DTR que vai a alto.

Se o programado do usuário termina com a execução do último Statement do programa ou executando uma instrução END, o ARMBASIC entrará em POWER DOWN e esperará por uma entrada na porta serial ou RESET.

Operação de Break ou STOP

Se o código do usuário está rodando, pode ser parado por uma condição de RESET. This normalmente reinicia o programa do usuário, mas há um pequeno espaço de tempo (500 ms) que o ARMBASIC espera por uma entrada pelo terminal. Se o caractere é recebido pela porta serial é ESCAPE (27) ou CTL-C (3), então o programa do usuário é impedido de rodar e o ARMBASIC esta pronta para ser reprogramado. Ou você pode reiniciar o programa digitando RUN ou usando o botão RUN no TclTerm.

Page 111: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 111

_________________________________________________________________________ www.basic4ever.com

Controle de pinos AD Sintaxe AD ( expressão )

AD retornará 0..65472 que corresponde a tensão no pino correspondente a expressão. O Valor retornado terá estará nos 10 bits mais significantes. Os bits 5..0 serão 0. 0 seria para 0V e 65472 seria para 3.3V.

Uma conversão leva menos de 6 usec.

O VREF+ É FIXO EM 3.3V NO ARMBASIC

USO DUAL DOS PINOS AD Durante o reset ou alimentação, os pinos dos AD são configurados como entradas. Para trocá-los como IO digitais, o usuário deve individualmente especificar o controle de direção usando os comandos INPUT x, OUTPUT x, DIR(x), ou IO(x). Após isto, que eles passam a serem Digitais, até o próximo Reset ou alimentação. Exemplo voltage = AD (0) ' isto lerá a tensão no Pino 0

Page 112: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 112

_________________________________________________________________________ www.basic4ever.com

DIR Sintaxe DIR ( expression )

Descrição

DIR (expression) pode ser usado para “setar” ou ler a direção dos 16 pinos configuráveis. Se DIR (expression) é 1 então o pino correspondente é uma Saída. Se o valor é 0 então o pino correspondente é Entrada.

Exemplo ' Seta o pino 4 como entrada DIR(4) = 0 ' Seta o pino 12 como saída DIR(12) = 1

Page 113: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 113

_________________________________________________________________________ www.basic4ever.com

DIRS Sintaxe DIRS

Descrição

DIRS lê ou escreve os 16 bits que controlam a direção dos 16 pinos de entrada e saída. Um 1 em uma das 16 posições corresponde para aquele pino ser como uma saída.

Exemplo 'Set a direção dos pinos de 0 a 7 como saída e 8 até 15 como entrada DIRS = $00FF

Page 114: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 114

_________________________________________________________________________ www.basic4ever.com

IN Sintaxe IN ( expression )

Descrição Quando lendo de IN (expression), -1 ou 0 será retornado correspondente ao nível de tensão no pino numerado por expression.

A diretiva não modifica a configuração de entrada / saída do pino.

Exemplo ' Seta pino 9 com saída INPUT 9 ' Assume que um dispositivo externo forçou o pino 9 com Alto PRINT "O estado corrente do pino 9 é "; IN(9) AND 1 O estado corrente do pino 9 é 1

Page 115: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 115

_________________________________________________________________________ www.basic4ever.com

INS Sintaxe INS Descrição INS representa todos os 16 pinos de entrada. Quando lido, irá retornar todos os valores correspondentes nos pinos.

Escrita para INS não é permitida.

Exemplo 'seta direção dos pinos de 0 a 7 como saída e 8 até 15 como saída DIRS = $FF00 'Assume que um dispositivo externo está está forçando os pinos de 0 a 7 em Alto PRINT "O valor corrente dos pinos é "; INS O valor corrente dos pinos é 15

Page 116: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 116

_________________________________________________________________________ www.basic4ever.com

IO Sintaxe IO ( expression )

Descrição IO é um meio mais complexo de acessar ou controlar os pinos. Quando IO (expression) é lido, o pino correspondente à expressão é convertido como entrada e então o valor do pino é retornado.

Quando é atribuído um valor para IO(expression), então o pino correspondente à expressão é convertido como saída e o valor lógico é escrito para o pino, 0 escreve um nível baixo e outros valores escrevem no pino um nível alto.

Usando IO simplifica quando os pinos são usados como entrada e saída.

Exemplo

' Seta pino 9 como saída e força ele a alto IO(9) = 1 ' Configura pino 9 como entrada, lê o valor, inverte este valor, converte ' pino 9 como saída e escreve este valor. IO(9) = NOT IN(9) ' Seta pino 8 como entrada e lê seu valor x = IO(8)

Page 117: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 117

_________________________________________________________________________ www.basic4ever.com

OUT

OUT ( expression )

Descrição Quando escrevendo OUT (expression), o pino correspondente da expressão irá “setar” o nível de tensão correspondente para TRUE ou FALSE, -1 ou 0.

Esta diretiva não modifica configuração do pino de entrada / saída

Exemplo ' Seta o pino 9 como saída OUTPUT 9 ' Seta pino como alto OUT(9) = 1 PRINT "O valor corrente do pino 9 é "; OUT(9) O valor corrente do pino 9 é 1

Page 118: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 118

_________________________________________________________________________ www.basic4ever.com

OUTS Sintaxe OUTS Descrição

OUTS representa todos os 16 pinos de saída. Quando escrito para eles, irá transferir todos os valores correspondentes para os pinos de saída que estão atualmente configurados como saída.

Ler OUTS é o mesmo que ler INS, ou seja, lê o estado corrente dos 16 pinos.

Exemplo 'seta direção dos pinos 0 a 7 como saída, 8 a 15 como entrada DIRS = $00FF 'seta pino 0 até 3 como alto, 4 até 7 como baixo OUTS = $000F PRINT "O valor corrente do pino é de saída é "; OUTS O valor corrente do pino é de saída é 15

Page 119: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 119

_________________________________________________________________________ www.basic4ever.com

Lista de Funções * (ARM peripheral access) Sintaxe * variable

* constant

Descrição A sintaxe da linguagem C para ponteiros é usada para dar um acesso direto aos registradores de periféricos do ARM. Cuidado deve ter, por exemplo, se você modificar um registrador de interrupção, irá interferir na operação do ARMbasic e seu programa.

Exemplo X= $E0014018 *X = 1234 ' seta o registrador ARM PWM0 match register

T = * $E001401C ' lê o registrador ARM PWM1 match register * $E0014020 = 4321 ' seta o registrador ARM PWM2 match register

Page 120: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 120

_________________________________________________________________________ www.basic4ever.com

BAUD Sintaxe BAUD( pin )

Descrição BAUD (pin) irá “setar” baudrate para o pin que será mais tarde usado pelas funções RXD e TXD.

O valor corrente do baudrate do pino pode também ser lido com Baud.

Se pin for 16 então o Baud rate para os pinos SIN é SOUT é ““setado”” (default é 19200).

Baudrates podem ser até 115.2 Kbaud para os pinos 0-15 ou 19.2 Kbaud para o pino 16 (SIN e SOUT). SIN e SOUT são limitados pelos tradutores de nível.

Exemplo BAUD(2) = 19200 ' seta o Baud rate para serial I/O no pino 2 BAUD(1) = BAUD(2) ' seta o Baud rate para o pino 1 o mesmo do pino 2

Page 121: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 121

_________________________________________________________________________ www.basic4ever.com

COUNT Sintaxe COUNT pin, milliseconds, variable

Descrição Conta o número de pulsos baixo-alto-baixo ou alto-baixo-alto no pin numa duração de milliseconds, retornando o valor para variable.

Exemplo 'Reporta o número de ciclos de transição no pino 7 durante 10 segundos COUNT 7, 10000, val PRINT "Pino 7 teve "; val; " transições" Pino 7 teve 3 transições 'Testa operação da rotina Count – atachado um sinal de a 100 KHz no pino '15 Utiliza o operador RUN IMEDIATE e o operador imediato. print >COUNT 15, 10000, x .x 99630

Page 122: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 122

_________________________________________________________________________ www.basic4ever.com

FREQOUT Sintaxe FREQOUT pin, milliseconds, freq1 FREQOUT pin, milliseconds, freq1, freq2

Descrição Gera uma onda senoidal (freq1) no pin por milliseconds. Um tom de freqüência simples ou de freqüência dupla mixada pode ser gerado.

A direção do pino de IO deve ser setada como saída

A saída pode ser conectada a um auto falante ou amplificador.

Exemplo 'Gera um tom de freqüência dual no pino 4 por 8 segundos, utilizando freqüências de 2500 e 6000Hz FREQOUT 4, 8000, 2500, 6000

Page 123: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 123

_________________________________________________________________________ www.basic4ever.com

HIGH Sintaxe HIGH expression

Descrição HIGH irá “setar” o pino correspondente a expression para um valor positivo (3.3V) e então é ““setado”” como saída.

HIGH e LOW têm sido adicionados para compatibilidade com o PBASIC

OUT(x)=1 será bem mais rápido

Exemplo DIRS = $00FF ' seta pinos 0 a 7 como saída OUTS = 0 ' e então seta os pinos para baixo ou 0V FOR I=0 TO 7 PAUSE (1000) HIGH I ' seta cada pino ALTO um por um a cada segundo NEXT I

Page 124: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 124

_________________________________________________________________________ www.basic4ever.com

I2CIN Sintaxe I2CIN pin, slaveADDR, [opt1, [... opt5,]] [ InputList ] InputList = variable | stringname$ \count | arrayname \count [, InputList]

Descrição

I2CIN lerá uma série de bytes de um dispositivo I2C escravo. pin é qualquer expressão definindo o pino SDA a ser usado. pin+1 será designado como pino SCL. slaveADDR selecionará o dispositivo no bus I2C.

Até 5 valores de bytes opcionais podem ser enviados antes da leitura do InputList. Após aquela série de bytes terem sido lidas pelo dispositivo slave, será preenchida a InputList. A InputList pode conter variáveis ou Strings. Quando usando uma String, um Count deve ser especificado, que define o número de bytes para serem copiados dentro da String.

I2C é um bus orientado a byte. Então, cada transação irá tanto enviar um Byte ou receber um Byte para cada elemento de InputList. Dado é “shifted” em 380 Kbits/sec.

Exemplo DIM A$(10) I2CIN 1,$30,$10, [A$ \10] ' lê 10 bytes do slave $30, posição $10 ' Conectado nos pinos 1,2 I2CIN 5,$40,$20, [X] ' lê um Byte do slave $40, posição $20 ' Conectado nos pinos 5,6

Page 125: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 125

_________________________________________________________________________ www.basic4ever.com

I2COUT Sintaxe I2COUT Data pin, slaveADDR, {Present,} [ OutputList ] OutputList = expr | arrayname \ count | stringname$ {\count} | "string" { , OutputList}

Descrição I2COUT irá enviar uma série de bytes para o dispositivo escravo. Datapin é qualquer expressão definindo o pino SDA a ser usado. Datapin+1 será o pino designado para SCL. slaveADDR selecionará o dispositivo no bus I2C.

Se um dispositivo “One-Wire” responde para a variável opcional Present será ““setado”” para 1 ou 0.

Após, aquela de bytes provenientes de OutputList serão escritos para o escravo (slave). OutputList podem conter expressões, variáveis Array ou Strings. Quando usando uma variável Array sem um elemento, um contador deve ser especificado que define o número de bytes a serem copiados da String.

[OutputList] podem também conter constante String ou “stringame$ . A última irá enviar os bytes começando de stringname$(0) até encontrar NULL.

I2C é um bus orientado a byte, então cada transação irá enviar valores Byte (0 até 255) para um dispositivo I2C escravo (slave). Se o valor da expressão na OutputList é maior que 8 bits, MSB será truncado.

Dado é “shifted” em 380 Kbits/sec.

Exemplo

DIM A$(10) FOR I=0 TO 9 A$(I) = $30 + I NEXT I I2COUT 1,$30, [$10,A$ \10] ' envia 10 bytes para o escravo $30 posição $10 'conectado nos pinos 1,2 X=$55 I2COUT 5,$40, [$20,X] ' envia um Byte para o escravo $40 posição $20 on 'pinos 5,6 I2COUT 5,$50, [$20,$AA] ' envia $AA para o escravo $50 posição $20 ' pinos 5,6

Page 126: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 126

_________________________________________________________________________ www.basic4ever.com

Page 127: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 127

_________________________________________________________________________ www.basic4ever.com

INPUT Sintaxe INPUT expression

Descrição

INPUT configura o pino correspondente a expressão como entrada.

INPUT e OUTPUT foram adicionados para compatibilidade com o PBASIC, DIR(x)=0 será mais rápido.

Exemplo INPUT 0 ' irá fazer o pino 0 como entrada

Page 128: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 128

_________________________________________________________________________ www.basic4ever.com

OUTPUT Sintaxe OUTPUT expression

Descrição

OUTPUT configura o pino correspondente à expressão como saída

INPUT e OUTPUT foram adicionados para compatibilidade com o PBASIC, DIR(x)=0 será mais rápido.

Exemplo OUTPUT 8 ' irá fazer o pino 8 como saída

Page 129: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 129

_________________________________________________________________________ www.basic4ever.com

LOW Sintaxe LOW expression

Descrição LOW irá “setar” o pino correspondente a expression para um valor baixo (0V) e então é ““setado”” como saída.

HIGH e LOW têm sido adicionados para compatibilidade com o PBASIC

OUT(x)=0 será bem mais rápido

Exemplo DIRS = $00FF ' seta pinos 0 a 7 como saída OUTS = 0 ' e então seta os pinos para baixo ou 0V FOR I=0 TO 7 PAUSE (1000) LOW I ' seta cada pino BAIXO um por um a cada segundo NEXT I

Page 130: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 130

_________________________________________________________________________ www.basic4ever.com

PULSIN Sintaxe PULSIN pin, level, variable

Descrição Mede um pulso de entrada em um pino pin no level, retornando o valor para variable. A direção do pin deve ser ““setado”” como entrada.

Se o pin já estiver no level quando a função é chamada, irá esperar até a transição para level oposto. A função irá esperar 1 segundo para o pin ir para o level. O tempo é medido em microseconds(us). O mínimo pulso que pode ser medido é de 1 microseconds. Se o pin não for para o level ou manter em level mais que 1 segundo, variável é setada para 0.

Exemplo 'Espera pelo pino 7 ir a alto e então para baixo 'Imprime o número de microsegundos que o pino 7 permaneceu alto

PULSIN 7, 1, val PRINT "Pin 7 pulse high for "; val; " us"

' PULSIN – jogue um sinal de 10 KHz no pino 15 ' Use operador RUN IMEDIATO > e o operador print . >PULSIN 15, 0, x .x 50

Page 131: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 131

_________________________________________________________________________ www.basic4ever.com

PULSOUT Sintaxe PULSOUT pin, microseconds

Descrição

Gera pulso na saída pin por microseconds.

O pino de direção de IO será ““setado”” como saída. O nível da saída será comutado por microseconds, então comutado de volta para o nível inicial. O pulso mínimo é de 1 microseconds.

Exemplo ' Gera um pulso alto de 1 segundo no pino 4. LOW 4 PULSOUT 4, 1000

Page 132: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 132

_________________________________________________________________________ www.basic4ever.com

PWM Sintaxe PWM pin, duty, milliseconds

Descrição Gera um sinal analógico no pino pin por milliseconds com um duty cycle de 0 a 255. Um duty cycle de 255 corresponde a uma saída de valor de 100%.

A direção do pino de IO será ““setado”” como saída, o trem de pulso é enviado, então o pino é ““setado”” para tri-state (input). Se o pino é conectado para um filtro RC, então a tensão permanecerá no capacitor por um período de tempo determinado pela carga.

Exemplo 'Gera 1.65 volt (metade de 3.3V) no pino 4 por 6 segundos PWM 4, 127, 6000

Page 133: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 133

_________________________________________________________________________ www.basic4ever.com

RCTIME Sintaxe RCTIME pin, level, variable

Descrição Mede o tempo o qual um pin sem mantém naquele level, retornando o valor para variable. O tempo é medido em microseconds(us). O tempo mínimo medido é 1 microseconds. Se pin não esta no level quando a função é chamada, variable é ““setado”” para 1. Se pin permanece no level mais que 1 segundo, variable é ““setado”” para 0.

Exemplo INPUT 7 RCTIME 7, 0, val PRINT "Pin 7 low for "; val; " us" '... função espera que o pin 7 vá para o estado alto Pin 7 low for 50 us

Page 134: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 134

_________________________________________________________________________ www.basic4ever.com

TXD Sintaxe TXD ( pin )

Descrição

TXD (pin) mandará um simples dado (byte) que é “shifted” em um “stream” serial assíncrono. Esta função é similar a SEROUT, mas é uma implementação mais eficiente. O baudrate para o pino pode ser ““setado”” antes de usar TXD, através da função BAUD(pin).

TXD transmitirá 0-255 como byte, adicionado a ele os bits de START e STOP.

Se pin é 16, então o dado transmitido será pelo SOUT.

Exemplo DIM A$(10) BAUD(2) = 19200 ' seta o baud rate para o pino 2 ... A$ = "Hello World" GOSUB PRINTSTR ... ' Manda string até encontrar NULL PRINTSTR: I=0 WHILE A$(I) TXD(2) = A$(I) I=I+1 LOOP RETURN

Page 135: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 135

_________________________________________________________________________ www.basic4ever.com

RXD Sintaxe RXD ( pin )

Descrição

RXD (pin) receberá um simples dado (byte) que é “shifted” em um “stream” serial assíncrono. Esta função é similar a SERIN, mas é uma implementação mais eficiente. O baudrate para o pino pode ser ““setado”” antes de usar RXD, através da função BAUD(pin).

RXD retornará de 0-255 se há dado presente. RXD gerará um TIMEOUT após 0.5 segundo e retorna -1 ($FFFFFFFF) se não há serial “stream” detectado no pin.

Se pin é 16, então o dado recebido no pino SIN.

Exemplo BAUD(1) = 9600 ' set the Baud rate for serial I/O on pin 1 ' Wait for serial input on pin 1 DO MyByte = RXD(1) UNTIL MyByte >= 0

Page 136: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 136

_________________________________________________________________________ www.basic4ever.com

SERIN Sintaxe SERIN pin, baudrate, { posTrue,} [data-list ]

Descrição SERIN recebe [data-list] ( bytes) como dado serial assíncrono no pin a um baudrate. PosTrue se um parâmetro opcional e se ““setado”” para 0 então o dado é invertido.

[data-list] pode conter uma lista de variáveis, ou stringame$ \ len. A última irá receber len bytes começando de stringname$(0). SERIN irá gerar um TIMEOUT após 0.5 segundos e retorna -1 ($FFFFFFFF) no próximo item de data-list antes do TIMEOUT.

SE pin é 16 então o dado é recebido no pino SIN. SIN e SOUT são sempre negativos TRUE.

Baudrates podem ser até 115.2 Kbaud para os pinos 0-15 ou 19.2 Kbaud para o pino 16 (SIN e SOUT). SIN e SOUT são limitados pelos tradutores de nível.

Exemplo ' Lê serial stream pelo pino 1, salvando em “MyByte” SERIN 1, 19200, [MyByte] PRINT HEX(MyByte)

Page 137: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 137

_________________________________________________________________________ www.basic4ever.com

SEROUT Sintaxe SEROUT pin, baudrate, { posTrue,} [OutputList ]

OutputList = expr | arrayname \ count | stringname$ {\count} | "string" { , OutputList}

Descrição SEROUT envia bytes da [data-list] através de uma serial assíncrona no pino a um baudrate. PosTrue é um parâmetro opcional e se ““setado”” para 0 então o dado é invertido

[OutputList] podem conter uma lista de constantes, variáveis, “Strings constantes” ou stringame$. O último enviará bytes começando de stringname$(0) até Byte 0 for lido.

Baudrates podem ser até 115.2 Kbaud para os pinos 0-15 ou 19.2 Kbaud para o pino 16 (SIN e SOUT). SIN e SOUT são limitados pelos tradutores de nível.

Baudrates podem ser até 115.2 Kbaud para todos os pinos.

Exemplo SEROUT 1, 19200, [$31,$32,$33] ' envia 123 na velocidade de 19.2Kbaud

Page 138: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 138

_________________________________________________________________________ www.basic4ever.com

SHIFTIN Sintaxe SHIFTIN Dpin, Cpin, Mode, [Variable{\ Bits} {, Variable{\ Bits}...}]

Descrição

SHIFTIN pode ser usado para dispositivos que não conversam com dispositivos com bus SPI, I2C ou 1-Wire.

Enquanto na maioria das funções de Hardware usam bytes, SHIFTIN é orientado a controle de bit. O tamanho de cada variável define o número de bits que serão “shifted” out (2-32). Se o valor bit não é especificado, é assumido como 8.

• Mode = 0 dado “shifted-in” no MSB primeiro, e “sampling” começa antes do primeiro pulso de clock.

• Mode = 1 dado “shifted-in” no LSB primeiro, e “sampling” começa antes do primeiro pulso de clock.

• Mode = 2 dado “shifted-in” no MSB primeiro, e “sampling” começa antes segundo pulso de clock.

• Mode = 3 dado “shifted-in” no LSB primeiro, e “sampling” começa antes do segundo pulso de clock.

SHIFTIN não permite Arrays ou Strings como parte de InputList. Valores “shifted-in“ serão valores positivos, a não ser que valor de 32 bits completo é “shifted in”, e então se MSB é 1, o número é negativo.

Dado é “shifted in” na velocidade de 1.1 Mbits/sec.

Exemplo

' Usa SHIFTIN/OUT para controlar um EN28J60 (SPI) rw=2 reg = $1b io(6)=0 shiftout 3,4,1,[rw\3, reg\5, y] ' sera registrador $1B io(6)=1 io(6)=0 shiftout 3,4,1,[reg] 'selecione o registrador

shiftin 5,4,0,[x] 'lê de volta io(6)=1

Page 139: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 139

_________________________________________________________________________ www.basic4ever.com

Page 140: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 140

_________________________________________________________________________ www.basic4ever.com

SHIFTOUT Sintaxe SHIFTOUT Dpin, Cpin, Mode, [OutputData{\ Bits} {, OutputData{\ Bits}...}]

Descrição

SHIFTIN pode ser usado para dispositivos que não conversam com dispositivos com bus SPI, I2C ou 1-Wire.

Enquanto na maioria das funções de Hardware usam bytes, SHIFTIN é orientado a controle de bit. O tamanho de cada variável define o número de bits que serão “shifted” out (2-32). Se o valor bit não é especificado, é assumido como 8.

• Mode = 0 dado é “shifted out” é primeiro o LSB • Mode = 1 dado é “shifted out” é primeiro o MSB

SHIFTOUT não permite Arrays ou Strings serem parte de OutputList.

SHIFTIN não permite Arrays ou Strings como parte de InputList. Exemplo ' Usa SHIFTIN/OUT para controlar um EN28J60 (SPI) rw=2 reg = $1b io(6)=0 shiftout 3,4,1,[rw\3, reg\5, y] ' seta registrador $1B io(6)=1 io(6)=0 shiftout 3,4,1,[reg] 'seleciona o registrador

shiftin 5,4,0,[x] 'e lê de volta io(6)=1

Page 141: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 141

_________________________________________________________________________ www.basic4ever.com

SPIMODE Sintaxe SPIMODE mode Descrição

SPIMODE suporta o protocolo serial usado por uma variedade de fabricantes. Permite diferentes formas de clock e qual ordem de bit é usado.

O modo default é 1, e se é o apropriado para o dispositivo que você pretende usar, não é necessário usar o comando SPIMODE.

• Mode = 0 o dado “shifted” é primeiro o MSB, e “sampling” começa antes do primeiro pulso de clock.

• Mode = 1 o dado “shifted” é primeiro o LSB, e “sampling” começa antes do primeiro pulso de clock.

• Mode = 2 o dado “shifted” é primeiro o MSB, e “sampling” começa antes do segundo pulso de clock.

• Mode = 3 1 o dado “shifted” é primeiro o LSB, e “sampling” começa antes do segundo pulso de clock.

Dado é “shifted” na velocidade de 1.1 Mbits/sec.

Exemplo 'Debugando a interface SPI do ENC28J60 -- feito no modo imediato hex >spiout 6,3,4,[$5b rev 8, $55 rev 8] ' setando o registrador EIE >spiin 6,5,4,3,$1b rev 8,[x] .x rev 8 55

Page 142: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 142

_________________________________________________________________________ www.basic4ever.com

SPIIN Sintaxe SPIIN CSpin, inpin, clockpin, {outpin}, {out1, {out2,...}}, [InputList]

Descrição

SPIIN suporta o protocolo serial usado por uma variedade de fabricantes. O dispositivo desejado é selecionado forçando o pino CSpin para LOW. Se não há CSpin , o valor pode ser ““setado”” para -1.

No caso mais simples, inpin é usado para entrada de dados “clocked“ por clockpin, para preencher a InputList.

Em casos bidirecionais, out1..out3 serão saida no outpin antes da leitura de InputList .

Dado é “shifted-in” primeiro no LSB e cada elemento da InputList é preenchido com o Byte de dado. O operador VER pode ser usado para trocar a ordem do bit. Dado é “shifted in” na velocidade de 1.1 Mbits/sec.

Exemplo 'Debugando a interface SPI do ENC28J60 -- feito no modo imediato hex >spiout 6,3,4,[$5b rev 8, $55 rev 8] ' setting the EIE register >spiin 6,5,4,3,$1b rev 8,[x] .x rev 8 55

Page 143: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 143

_________________________________________________________________________ www.basic4ever.com

SPIOUT

Sintaxe

SPIOUT CSpin, outpin, clockpin, [OutputList]

OutputList = expr | arrayname \ count | stringname$ {\count} | "string" { , OutputList}

Descrição

SPIOUT suporta o protocolo serial usado por uma variedade de fabricantes. O dispositivo desejado é selecionado forçando o pino CSpin para LOW. Se não há CSpin , o valor pode ser ““setado”” para -1.

No caso mais simples, outpin é usado para mandar dados “clocked” by clockpin, do OutputList.

[OutputList] podem conter uma lista de constantes, variáveis, “Strings constantes” ou stringame$. O último enviará bytes começando de stringname$(0) até Byte 0 for lido.

O dado “shifted out” primeiro é o LSB e cada elemento de OutputList é tratado como um byte. O operador VER pode ser usado para trocar a ordem do bit. Dado é “shifted out” na velocidade de 1.1 Mbits/sec.

Exemplo SPIOUT 4,1,2,[$04,GAIN] ' set o registrador de ganho do ADS7870 SPIIN 4,3,2,1,$44,[GAIN} ' le o ganho do registrador de volta

Page 144: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 144

_________________________________________________________________________ www.basic4ever.com

SPIBI Sintaxe SPIBI CSpin, inpin, clockpin, outpin, {out1, {out2, out3}}, [InputList] Descrição

SPIBI suporta o protocolo serial usado por uma variedade de fabricantes. O dispositivo desejado é selecionado forçando o pino CSpin para LOW. Se não há CSpin , o valor pode ser ““setado”” para -1.

SPIBI irá “shift” os bytes out1, out2, out3 bytes para o pino outpin enquanto lendo 3 ou mis bytes dentro do InputList de inpin.

Dado é “shifted in” na velocidade de 1.1 Mbits/sec.

Page 145: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 145

_________________________________________________________________________ www.basic4ever.com

OWOUT

Sintaxe OWOUT Pin, {Present,} [OutputList] OutputList = expr | arrayname \ count | stringname$ {\count} | "string" { , OutputList}

Descrição OWOUT começa com a seqüência RESET/Presence no pino designado Pin.

Se um dispositivo “One-Wire” responde para a variável opcional Present será ““setado”” para 1, caso contrário 0.

Seguinte aquela OutputList será enviado para o dispositivo. OutputList consiste de uma lista de expressões numéricas, String ou Array seguido pelo tamanho. No último caso, elementos individuais da String ou Array serão escritos para o dispositivo como uma série de bytes. Elementos serão truncados para byte. A output list pode consistir de múltiplas partes com até 32 diferentes fontes.

[OutputList] podem conter uma lista de constantes, variáveis, “Strings constantes” ou stringame$. O último enviará bytes começando de stringname$(0) até Byte 0 for lido.

A ordem do bit para um dispositivo “One-Wire” é assumido ser LSB (bit 0 primeiro). A função VER pode ser usada para trocar a ordem do bit.

Other than string$ names, String expressions are not allowed in the OutputList.

Elementos diferentes de nomes de Strings, expressões com String não são permitidos no OutputList.

Exemplo ' escreve no “scratch pad” do DS2430 x = $be y = $41 owout 7,present,[$cc,$f,$6,x,y] print present owin 7,$cc,$aa,$6,[a,b] print hex(a),hex(b)

Page 146: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 146

_________________________________________________________________________ www.basic4ever.com

OWIN

Sintaxe

OWIN Pin, {Output1, Output2, ... Output6}, [ InputList ]

InputList =

Variable | Array(expr) | String(expr) | Array \ count| String \ count{,InputList}

Descrição OWIN começa com a seqüência RESET/Presence no pino designado Pin.

Então até 6 Output bytes serão transferidos para o dispositivo para selecionar o comando.

Seguinte, o InputList irá ser lido de volta do dispositivo. A InputList consiste de uma lista de nomes de variáveis, Strings ou Array, ou String ou Array seguido de um count. No último caso, uma série de bytes será lido do dispositivo e colocado dentro dos elementos individuais de uma String ou Array.

A input list pode consistir de múltiplas partes com até 32 diferentes fontes.

A ordem do bit para um dispositivo “One-Wire” é assumido ser LSB (bit 0 primeiro). A função VER pode ser usada para trocar a ordem do bit.

Exemplo ' escreve no “scratch pad” do DS2430 x = $be y = $41 owout 7,present,[$cc,$f,$6,x,y] print present owin 7,$cc,$aa,$6,[a,b] print hex(a),hex(b)

Page 147: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 147

_________________________________________________________________________ www.basic4ever.com

6) Especificação de Hardware Diagrama dos pinos do ARMBASIC

/SOUT 1 Saída Serial, Compatível com RS-232 (ativo baixo)

/SIN 2 Entrada Serial, Compatível com RS-232 (ativo baixo)

ATN 3 Conectado ao DTR com RS-232, quando alto reseta o ARMBASIC (ativo alto)

/RES 22 Reset nível TTL (coletor aberto com resistor 2.7K) (ativo baixo)

SCL0 (IO5) SDA0 (IO6) P04 (IO16) P05 (IO17) P06 (IO18) P07 (IO19) P08 (IO20) P09 (IO21) P10 (IO22) (AD3) P11 (IO23) (AD4) P12 (IO9) (AD5) P13 (IO13) P15 (IO14) P16 (IO15) P17 (IO24) P18 (IO25) P19 (IO26) P20 (IO27) P21 (IO28) P22 (IO7) (AD0) P23 (IO10) (AD1) P24 (IO8) (AD2) P25 (IO11) (AD6) P26 (IO12) (AD7) P27 (IO0) P28 (IO1) P29 (IO2) P30 (IO3) P31 (IO4)

10 11 8 J2 7 J2 6 J2 5 J2 4 J2 3 J2 2 J2 1 J2 14 18 19 20 8 J3 7 J3 6 J3 5 J3 4 J3 12 15 13 16 17 5 6 7 8 9

I/Os – controlado pelo usuário Nível 0-3.3V Drena 4mA quando configurado como saída Tolerância: 5V

GND 4,23 Terra (0V)

Page 148: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 148

_________________________________________________________________________ www.basic4ever.com

VDD 24 Alimentação 5 a 12V

Alt-VDD 21 Reservado para expansões futuras (Alimentação alternativa)

Esquemático do ARMBASIC

Page 149: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 149

_________________________________________________________________________ www.basic4ever.com

1 2 3 4 5 6

A

B

C

D

654321

D

C

B

A

Title

Num ber RevisionSize

B

Date: 20-Feb-2007 She et of File: C:\armba sic_express\armbasic.ddb Drawn By :

DCD1

MHZ 20a

TXD0

P22

RESETn

P23

P24

RXD0

P13

P16

P12

P25

P26

P15

P30

P29

+

12

C3

0.1uF

12

C1

0.1uF

12

C20.47uF

+

12

C4

0.1/16V

V18

5

GN

D7

VD

D17

VD

D40

GN

D19

GN

DA

31

GN

D43

XTALO12 XTALI11

RESET6

RTCK 26

P01/RXD014

P0218

P0321

PO422

P0523

P0624

P0728

P08/TXD129

P09/RXD130

P1035

P1136

P1237

P1341

P14/BOOT44

P1545

P1646

P17/TRST47

P18/TMS48

P19/TCK1

P20/TDI2

P21/TDO3

P2232

P2333

P2538

P2639

P278

P289

P2910

P3015

P3116

P00/TXD013

P2434

DBGSEL 27

*RTX1 20

*RTX2 25

*VD

DA

42*V

BA

T4

U2

VI4

GN

D2

VO 5

FB 1NC3

U3

TPS 71518

V33

V18

V5

V33V18

V33

Y1

C522pF

C622pF

P27P28

VI4

GN

D2

VO 5

FB 1NC3

U1

TPS 71533

SCL0SDA0

P31

Q2

123456789101112131415161718192021222324

J1

P27P28P29P30P31SCL0SDA0P22P24P12P23P25P26P13P15P16

RESETn

V33

RESETn

RXD0

SOU

T

TXD0

SOUTSINATN

R3 R4 R5 R6

RX

D0

DC

D1

RE

SETn

PULL

DO

WN

SOU

T

R2 R1 DCD1

Q1

V5

12345678

J2P04P05P06P07P08P09P10P11

P17P18P19P20P21

12345678

J3

V33

RT

X1

RT

X2

SO-G3/P.65 = SOT 323SO-G6/Z2.8 = SOT-363

D1

PULLD

OW

N

V5

Page 150: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 150

_________________________________________________________________________ www.basic4ever.com

Configuração Serial Embora nós recomendemos usar o TclTerm para conversar com ARMBASIC, aqui estão as configurações para outros emuladores de terminal.

Baudrate

19.2 kbaud, 8 bit, No Parity, 1 stop bit

Fim de linha

LF (alimentação de linha),

CR é atualmente ignorado.

Níveis de Tensão

/SOUT, /SIN e ATN (pinos 1,2,3) aceitarão tanto os níveis TTL como RS-232. ATN quando alto reseta o ARMBASIC, e ATN não podem flutuar. Pode tanto ser conectado diretamente para o DTR, ou em alguns sinais TTL que está em baixo ou terra.

Handshaking

XON/XOFF (software handshaking) é usado durante a programação da Flash. Quando downloading um programa grande, uma pausa é requerida quando o corrente amontoado de código no buffer excede 8K (de 500 a 600 linhas). Aquele buffer será escrito na memória Flash e levará um tempo de 1 segundo. Um total de 40K é disponível para o usuário, para código, constantes Strings e DATA.

Sinalização do Programa Rodando

Quando ó código do usuário inicia a execução, um caractere SOH (\1) é enviado, e quando o usuário quer parar a execução (STOP), um é enviado. Isto foi adicionado ao ARMBASIC para que o TclTerm necessita saber quando o código está executando.

Page 151: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 151

_________________________________________________________________________ www.basic4ever.com

Conexão RS232 sugerida com ARMBASIC

Page 152: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 152

_________________________________________________________________________ www.basic4ever.com

Interface TTL e 5V ARMBASIC podem ser conectados diretamente para dispositivos TTL 5V. A tensão de saída destes dispositivos vai de 0.4V até 2.9V quando drenando até 4mA de corrente. A maioria dos dispositivos TTL reconhece estes com níveis lógicos válidos (normalmente definido ser 0.8 e 2.0V)

Entradas

O ARMBASIC pode também ser conectado diretamente para saídas TTL 5V. Se eles são TTL compatíveis com níveis de tensão da saída TTL deveriam ser normalmente (0.4 e 3.4V), embora podem ser maiores. As entradas para estes dispositivos ARM são 5V compatíveis.

Linhas de alimentação

As entradas do ARMBASIC podem ser conectadas diretamente ao pino GND, mas, se conectadas para nível de tensão alto fixo, então pode ser conectado para uma linha de alimentação de 5V com um resistor de 1K ou maior. Esta é a mesma recomendação para qualquer dispositivo compatível com TTL. A razão é é que a alimentação de 5V pode execeder as vezes os 5V.

Page 153: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 153

_________________________________________________________________________ www.basic4ever.com

Alimentação 5 à 12V DC.

Condições na alimentação inicial

Na alimentação inicial, todos os pinos do ARM estão em “tri-stated”

Reiniciando o programa

Se o usuário programou o ARMBASIC, aquele programa será iniciado quando a alimentação é aplicada ou reiniciada com um Reset que é levado a baixo no pino de coletor aberto pino 22, ou positivo True no pino ATN.

Se o programa do usuário terminou ao encontrar o último Statement ou executando uma instrução END, o ARMBASIC entrará em Power Down e irá esperar tanto uma entrada no porta serial de Debugou um Reset.

Operação de Break ou STOP

Se o código do usuário está rodando, pode ser parado por uma condição de RESET. Normalmente reinicia o programa do usuário, mas há um pequeno espaço de tempo (500 ms) que o ARMBASIC espera por uma entrada pelo terminal. Se o caractere é recebido pela porta serial é ESCAPE (27) ou CTL-C (3), então o programa do usuário é impedido de rodar e o ARMBASIC esta pronta para ser reprogramado. Ou você pode reiniciar o programa digitando RUN ou usando o botão RUN no TclTerm.

Page 154: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 154

_________________________________________________________________________ www.basic4ever.com

7) Miscellaneous

DEBUGGING > (execute immediately) Sintaxe > simple_Statement Descrição O operador > (maior que) quando é o primeiro token na linha é usado para executar um linha no ARM imediatamente. O > pode ser usado no lugar do INPUT durante a fase de debugging do código. Pode ser usado para alterar uma variável > X = 1234 O segundo exemplo exibe o uso do > para ler um periférico externo (I2C), e então imprimir o valor.

> I2CIN 5,$40, $30, [X] . X O terceiro exemplo exibe o uso do > para alterar o endereço de um endereço periférico do ARM

> $e0014000 = $33

Page 155: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 155

_________________________________________________________________________ www.basic4ever.com

. (print now) Sintaxe . expression Descrição O operador . avalia a expression e mostra o resultado Exemplo Após o programa ter sido executado, pode ser útil para ver vários valores para ajudar no debugging.

FOR x = 1 to 10 HIGH x NEXT x RUN ... .x ' mostrará 11

Page 156: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 156

_________________________________________________________________________ www.basic4ever.com

@ (dump memory) Sintaxe @ [expression] Descrição

Este comando fará o DUMP de memória começando no endereço expression. É útil para controle direto de Debug dos periféricos ARM. Se a expressão for omitida, a próxima página de memória será mostrada.

Expression pode ser qualquer constante ou variável.

Exemplo

O exemplo seguinte mostra a área do ARM correspondente aos registradores PWM. São exibidos em Hexadecimal e ASCII.

@ $e0014000 E0014000: 00000000 00000001 04BFE6BB 0000E663 c E0014010: 0000A516 00000000 00000000 00000000 {3 E0014020: 00000000 00000000 00000000 00000000 E0014030: 00000000 00000000 00000000 00000000 E0014040: 00000000 00000000 00000000 00000000 E0014050: 00000000 00000000 00000000 00000000 E0014060: 00000000 00000000 00000000 00000000 E0014070: 00000000 00000000 00000000 00000000 @ E0014080: 00000000 00000001 04C8D34C 0000E663 M c E0014090: 000041E7 00000000 00000000 00000000 l E00140A0: 00000000 00000000 00000000 00000000 E00140B0: 00000000 00000000 00000000 00000000 E00140C0: 00000000 00000000 00000000 00000000 E00140D0: 00000000 00000000 00000000 00000000 E00140E0: 00000000 00000000 00000000 00000000 E00140F0: 00000000 00000000 00000000 00000000 CLEAR

Page 157: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 157

_________________________________________________________________________ www.basic4ever.com

Sintaxe CLEAR

Descrição Este é um comando em tempo de compilação que apaga o programa corrente da memória. Exemplo PRINT "hi there" RUN CLEAR DEC

Page 158: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 158

_________________________________________________________________________ www.basic4ever.com

Sintaxe

DEC

Descrição

Quando digitado como única palavra na linha, irá “setar” a base de numeração default para decimal para comandos de Debug

A base de numeração é normalmente decimal.

Exemplo >x = $1000 DEC .x ' mostrará 4096 HEX

Page 159: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 159

_________________________________________________________________________ www.basic4ever.com

Sintaxe

HEX

Descrição

Quando digitado como única palavra na linha, irá “setar” a base de numeração default para hexadecimal para comandos de Debug

Exemplo >x = 4096 HEX .x ' mostrará 1000 RUN

Page 160: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 160

_________________________________________________________________________ www.basic4ever.com

Sintaxe RUN

Descrição Executa o programa que foi carregado na FLASH.

Exemplo PRINT "hi there" RUN CLEAR

ARMBasic

Page 161: Passo 1: Instalando o Software ARMBASIC - inf.furb.brmaw/arm/asm51.pdf · O ARMBASIC é um módulo baseado em ARM que roda programas criados ... Passo 2: Monte o Circuito em um protoboard

Manual do ARMBASIC 161

_________________________________________________________________________ www.basic4ever.com

Características

• Tecnologia “Simply Connected™” • CPU ARM7 rodando a 60 Mhz • Programado via Interface Serial • Compilador compila >10 milhões de linha de código por segundo • 32k de memória Flash com 8K para SRAM • 6 canais de PWM por Hardware • 24 TTL compatible digital I/O (mais a ser expandido) • 6 Canais de conversores A/D de 10 bits, 100 KHz rate • Fonte de alimentação onboard regulada (5-12V DC)

Entradas e saídas Digitais

• 24 pinos programados para entrada e saída • 8 pinos compartilhados com A/D • >1 milhão de operações de IO por segundo • SPI suporta transferiencia de 600 Kb • I2C suporta transferenciia de 380 Kb • Rotinas de SHIFT para bus síncrono de 800 Kb • Suporte a 1-Wire • Suporte a serial assincrona de até 115200 • Medição de geração de Pulso com resolução de 1uSec • PWM com resolução de 8 bit • Síntese de Freqüência de Até 50Khz • Compatível com TTL • IOs tolerante a 5V