Instruções Básicas Do Bascom Avr
Instruções Básicas Do Bascom Avr
$regfile
Esta instrução vai sempre no início de qualquer projeto que
realizemos, já que é a responsável por direcionar o respectivo
microcontrolador que vamos a usar.
Por exemplo:
Atmega 8:$regfile="m8def.dat"
Atmega 16: $regfile="m16def.dat"
Atmega 32:$regfile="m32def.dat"
$crystal
Esta instrução vai especificar a frequência de oscilação com a qual vai
a funcionar o microcontrolador.
Por exemplo:
$crystal=1000000 para 1MHZ
$crystal=4000000 para 4MHZ
8000000 para 8MHZ
Configuração
Esta instrução especifica a configuração de um pino, uma porta ou um
dispositivo, já que podem ser configurados como entrada ou saída de
dados.
For example:
Configurar Puerto B como saída
entrada Pino A.0 como entrada
16*2 LCD de 16 caracteres e 2 linhas
Espere, espere, espere-nos
Esta instrução serve para criar um atraso, seja em segundos,
milissegundos e microsegundos, respectivamente.
Por exemplo:
Espere 3 Espere 3 segundos
Espere 7 Espera 7 milissegundos
Waitus 500 Espera 500 microssegundos
Laço Do
Esta instrução é um laço fechado, no qual é executado um conjunto
de instruções de forma indefinida.
Fazer
Instruções
Laço
Laço Do até
É um laço definido pela condição de uma variável que está dentro do
laço, o qual define quando termina de ser executado o conjunto de
instruções.
Por exemplo:
Faça
A=A+1
Loop até A = 10 termina o laço quando A = 10
Alternar
Este comando serve para complementar o estado anterior de alguma
variável ou pino de algum porto.
For example:
Alternar porta B.0 complementa o portb.0
Dim
Dim serve para dimensionar o tipo de variável que será utilizada, entre
os tipos de variáveis são os seguintes:
TIPO DIMENSÃO
BIT 0-1
BYTE 0 a 255
PALAVRA 0 a 65535
LONGO -2147483648 a 2147483647
INTEIRO -32768 a 32767
SOLTEIRO 1,5 a 3,4
STRING CADENA DE CARACTERES MÁXIMO 254
ARRAY MATRIZ 65535
DOBRO 5.0* um 1.7*
tipoDIMvarasta
Exemplo:DIMA como byte
Apelido
Serve para dar um nome geral dentro de um projeto seja um
puerto ou um pino de um porto.
Exemplo
FocoAliasportb.0 O portb.0 agora se chama o foco
Declare subnombre ()
Serve para declarar sub-rotinas que no programa principal, elas
chamará com a instrução CALL nome.
Ir
Salto incondicional a uma etiqueta.
Gosub
Chame uma sub-rotina. A sub-rotina deve ser escrita após END e
terminar com a instrução RETORNAR.
CONFIGURAR
Ponha a “1L” e “0L” respectivamente em um pino de saída
Exemplo: SET PORTD.0 coloca o pind.0 em um
Incr
Incrementa em uma unidade uma variável.
Incrx
SE-O
São sentenças condicionais, que respondem a um estado de
voltaje (0L, 1L), de conteúdo (caracteres), etc.
SE(condição)ENTÃO
Instrução1
OUTRO
Instrução2
FIM SE
PARA-PRÓXIMO
São instruções de repetição, uma vez que executam um conjunto de
instruções, dependendo de uma variável incremental dentro do
laço.
FORvar=val_inicialtoval_final
Instruções (enquanto val_inicial≤var≤val_final)
Nextvar
ENQUANTO–FIM
Laço de repetição com o cumprimento de uma condição.
Var
Enquanto<condição>
Instruções se a condição for verdadeira
Vagar
SELECIONAR - CASO
São sentenças que podem ser executadas, dependendo do estado de
uma variável de seleção. Serve para realizar diferentes ações
em função do valor de uma variável, no nosso caso, o valor lido por
o porto de entrada.
Var
Selecionar caso
Caso1: instrução 1
Caso 2: instrução 2
……..
Caso contrário: instruções para outros casos
Fim da seleção
SÍMBOLOS E OPERADORES
Dentro dos operadores, podem ser utilizados os matemáticos, de
relação e lógicos. Além disso, deve-se levar em conta que Bascom nos
permite realizar operações apenas com duas variáveis de cada vez.
A seguir, poderemos observar os operadores mais comuns.
Operadores matemáticos
Soma: a = b + c
Resta: a = b - c
Multiplicação: a=b*c
Divisão: x=a \ b
a MOD b
Operadores de relação
=igual x=y
x é menor ou igual a y
Operadores lógicos
NÃOcomplemento (negação)
ORdisjunção (ou)
XOR exclusivo
Representação de lógica digital
Exemplo:
lj Número hexadecimal
REGISTRO DDRX
São registros de 8 bits. Nesses registros, configura-se de forma
individualmente os pinos das portas como entradas ou saídas. Um '0'
significa que o pino é entrada e “1” é saída.
REGISTRO PORTX
Nestes registros, são colocados os dados que devem ser enviados ao
exterior."1" em alto (5 volts) e "0" em baixo (0 volts).
Em cada porta, este microcontrolador tem pull-ups internos que
podem ser ou não habilitadas individualmente (colocando '1' no bit
correspondente) quando um pino é configurado como entrada.
REGISTRO PINX
Nestes registros lê-se o dado provindo do exterior (estado dos
interruptores ou botões conectados à porta) se os pinos estiverem
configurados como entrada. No momento de realizar uma leitura do
estado das entradas, deve-se levar em consideração a forma como
estão conectados os botões ou interruptores (com pull-up ou pull-
para baixo
Config Lcd
Serve para configurar a classe de LCD que vamos utilizar, pode ser de
16 caracteres por 2 linhas (16x2), de 20 caracteres por 4 linhas
(20x4), etc.
Por exemplo:
16*2 (display de 16*2)
Config Lcdpin
Serve para configurar os pinos pelos quais será manuseada a
informação.
Por exemplo:
Config Lcdpin=pin, Db4=Porta., Db5=Porta.5, Db6=Porta.6
Porta.7
Configurar Lcdbus
Esta instrução serve para configurar qual será o modo de envio de
dados, uma vez que podem ser feitos por 4 pinos ou 8 pinos.
Por exemplo:
Config Lcdbus= 4 (4 pinos de dados)
Localizar x, y
Serve para localizar o cursor na linha e coluna adequadas, para
poder começar a escrever no Lcd.
For example:
Localize1,1 (localização do cursor na linha 1, coluna 1)
ShiftLcd
Serve para mover todo o texto do Lcd, seja para a esquerda ou
direita, com as instruções:
DeslocarLcd para a esquerda
Eram
Mediante esta instrução, dimensiona-se uma variável para que possa
ser usada como ponteiro para guardar um dado na EEPROM.
For example:
Dimvaras Eram inteiro (variável inteira para a eeprom)
Readeeprom
Serve para ler ou armazenar em uma variável, o dado que está guardado
em um endereço específico da memória EEPROM.
Por exemplo:
Readeepromvar,&H00 (Armazena o dado do endereço 00h na
variável var)
Escrever EEPROM
Serve para escrever um dado em um endereço específico da memória
EEPROM.
Por exemplo:
Escrevaeepromvar, &h00 (escreve no endereço 00h, o conteúdo de
a variável var)
MANEJO DOS CONVERSORES ADC
Dentro dos AVR existem conversores analógicos para digitais de 10 bits,
os quais nos servem diretamente para a conversão de uma variável
analógica, por ejemplo temperatura, voltaje, pressão, etc.
Em alguns casos, não devemos esquecer que devemos acondicionar a
sinal analógico, para que este seja amplificado e calibrado, antes de
ingressar no microcontrolador.
Um detalhe muito importante é que deve-se ativar o funcionamento
do ADC, no microcontrolador, o que é realizado conectando o pino
(AVCC) a 5V, y el pin (AREF) a un voltaje de referência para ter a
escala adequada.
Dentro das instruções que são necessárias para ativar o conversor
interno estão:
Configurar adc
Serve para configurar o adc interno com referência interna ou externa.
Além disso, esta instrução vem acompanhada do início do adc (iniciar adc).
For example:
único
Iniciar Adc
Getadc ( )
Esta instrução obtém o valor digital de 10 bits da entrada.
analógica dependendo de qual pino esteja conectado.
Por exemplo:
B=Getadc(1) (obtém o valor digital do adc 1)
MANEJO DO SENSOR ULTRASSÔNICO
Pulseout
Serve para enviar pulsos de saída por qualquer pin do
microcontrolador por períodos de 1us para uma frequência de
oscilação de 4 MHZ.
Por exemplo:
Pulseoutportb, 1,6000 (gera pulsos de 6ms pelo pinb.1)
Pulsein
Bitwait
Nos serve para criar um tempo de espera, dependendo do estado
atual em que se encontra um pino de uma porta.
For example:
Bitwaitpinb.0, definir (espera no mesmo ponto até que o pinb.0 esteja
ativado 1L)
INTERRUPÇÕES EXTERNAS
No Int0
Serve para ativar uma sub-rotina específica, caso seja ativada a
interrupção externa 0.
Por exemplo:
Em int0pulsos (ativa a sub-rotina pulsos, caso seja ativado a
interrupção externa 0)
Habilitar interrupções
Serve para ativar as interrupções ativadas independentemente.
Ativar Int0
Permite ativar a interrupção externa 0
$baud
Esta é uma instrução de configuração principal, que serve para
determinar a velocidade de transmissão à qual serão comunicados
dispositivos.
Por exemplo:
9600
1200 (velocidade de transmissão de 1200 bps)
Imprimir
Serve para enviar dados em forma serial, do microcontrolador
para o dispositivo, como por exemplo um PC. Usando o comando
"input" geralmente é uma instrução com retorno.
For example:
Imprimir "hola" (transmissão de letras e variáveis)
Entrada
Serve para receber caracteres de outro dispositivo para o
microcontrolador. Um inconveniente que apresenta "Print" ou "input", é
que precisam como confirmação de dados o caractere ASCII N° 13
(ENTER) antes mencionado. Para isso é melhor ou recomendável
trabalhar por meio da interrupção do portão serial, que já está ativada
seja pela recepção ou transmissão desde o microcontrolador.
Por exemplo:
EntradaA (recepção de dados na variável A “string”)
INTERRUPÇÃO DO PÓRTICO SERIAL
Na Serial Urxc
Serve para ativar a sub-rotina chamada SERIAL, caso receba um
dado.
Ativar Interrupções
Serve para habilitar as interrupções presentes no
microcontrolador.
Ativar Urxc
Serve para habilitar a interrupção da porta serial.
Inkey()
Serve para guardar um dado recebido por comunicação serial em uma
variável declarada.
Fechar
Serve para fechar a utilização dos pinos de recepção e transmissão.
Por exemplo:
Fechar#1, para encerrar a transmissão
Fechar#2, para fechar a recepção
Imprimir #1
Serve para transmitir pelo pino de transmissão virtual
Entrada #2
Serve para receber pelo PIN de recepção virtual