0% acharam este documento útil (0 voto)
48 visualizações18 páginas

Instruções Básicas Do Bascom Avr

Este documento fornece instruções básicas para o uso do BASCOM AVR. Explica como configurar o microcontrolador, criar atrasos, loops, condicionais e sub-rotinas. Também descreve como lidar com portas, LCDs, EEPROM, ADC e sensores ultrassônicos por meio de instruções como Config, Wait, Do-Loop, IF-THEN e PulseOut, entre outras.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
48 visualizações18 páginas

Instruções Básicas Do Bascom Avr

Este documento fornece instruções básicas para o uso do BASCOM AVR. Explica como configurar o microcontrolador, criar atrasos, loops, condicionais e sub-rotinas. Também descreve como lidar com portas, LCDs, EEPROM, ADC e sensores ultrassônicos por meio de instruções como Config, Wait, Do-Loop, IF-THEN e PulseOut, entre outras.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

INSTRUÇÕES BÁSICAS DE 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

<>Não é igual x<>y

<Menor que x<y

Maior que x > y

x é menor ou igual a y

>=maior igual x>=y

Operadores lógicos

NÃOcomplemento (negação)

ORdisjunção (ou)

XOR exclusivo
Representação de lógica digital

Para representação de um número ou hexadecimal, dentro do BASCOM AVR,


é necessário antepor o símbolo “&”. No caso de números decimais, não
é necessário antepor nenhum símbolo.

Exemplo:

lj Número hexadecimal

&b10001100 Número binário

129 Número decimal

Configuração das portas como entradas ou saídas digitais


A seguir, nas seguintes explicações, a letra x representará B, C, D
de acordo com o porto em questão.

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

MANEJO DE UMA TELA LCD (DISPLAY DE CRISTAL LIQUIDO)


Um display de cristal líquido (LCD) é um dispositivo que nos permite mostrar
informação alfanumérica ou caracteres projetados, apresentando uma vantagem
sobre os displays de 7 segmentos. O manuseio de um LCD baseia-se em uma
sequência de comandos que devem ser enviados do microcontrolador,
durante um tempo predeterminado pelo fabricante. Mas quando se trata
de programação em alto nível, esse processo é realizado pelo compilador ou
por bibliotecas que estão previamente feitas no software.

No caso do Bascom AVR, podemos controlar o LCD de duas maneiras: por


comandos ou configurações na caixa de diálogo.
Mediante comandos temos:

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)

Lcd " "


Serve para escrever qualquer frase no LCD, independentemente da localização
do cursor.
For example:
lcd "olá"

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

Deslocar Lcd para a direita

MANEJO DA MEMÓRIA SERIAL EEPROM


A memória serial é uma das ferramentas que possui internamente
um AVR, através deste, facilita o método para salvar um dado que
se ficou gravado nesta memória não volátil.
Para o uso da EEPROM interna é necessário conhecer principalmente
a dimensionamento das variáveis que podem ser usadas.

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

Realiza a contagem em unidades de microssegundos, até que aconteça uma


transição positiva ou negativa por um pino de uma porta específica.
Por exemplo:
PulseinW, pinb, 0, 0 (Retorna na variável w, a contagem em
microsegundos até que ocorra uma transição de 0 para 1 pelo pinb.0

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

Assim como a interrupção do portal serial não proporciona vantagens


para executar um programa principal, a interrupção externa também
permite executar uma sub-rotina apenas se cumprir ou detectar alguma
sinal externo, seja pelo pino INT0 ou INT1.
Para isso é necessário executar instruções principalmente de
configuração, as quais fazem com que a interrupção seja ativada.

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

COMUNICAÇÃO SERIAl COM O PC


A comunicação serial entre dispositivos baseia-se na troca de
informação através de linhas de transmissão e recepção. Um dos
circuitos integrados que nos ajudam a realizar a comunicação serial
entre um PC e um microcontrolador é o MAX232, que é um
conversor de nível RS232 para TTL e vice-versa. Um cabo null-modem serve
para realizar comunicações seriais através da porta DB9 de um
computador.
Para realizar uma comunicação bidirecional, seja half duplex ou full
dúplex, deverá ser feito um cabo onde se unam a recepção de
um lado e a transmissão do outro.

As instruções que possam nos ajudar a realizar a comunicação


serial mediante um microcontrolador um pc, podem ser de três tipos:
com retorno (por software), por interrupção e com retorno (por
hardware).
As instruções de devolução precisam da conformação de envio ou
recepção de dados, o caractere ASCII N° 13 (ENTER) e as instruções de
interrupção habilita uma subrotina que executa a transmissão ou recepção
serial.

$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

Mediante a interrupção da porta serial, será um pouco mais simples o


manejo global do programa, já que pelo menos não devemos
preocuparnos em que instante nos pode chegar um dado; senão que
simplesmente realizamos uma sub-rotina, a qual se encarregará de
armazenar esse dado, proveniente de uma fonte serial externa.
As instruções usadas para realizar uma interrupção de recepção
do porto serial, são:

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.

COMUNICAÇÃO POR HARDWARE

A comunicação por hardware é semelhante à comunicação com


retorno por software, com a única diferença que é necessário abrir pinos
para transmissão e recepção definidos pelo usuário.
As instruções utilizadas para abrir uma porta serial por hardware
filho
Abrir
Serve para habilitar qualquer pino do microcontrolador, para que
funcione como entrada ou saída de dados.
Por exemplo:
Abrir "comd.1:9600, 8, n, 1" Para saída Como #1, para transmissão
Abra "comd.1:9600, 8, n, 1" Para entrada Como #2, para recepção

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

Com a ajuda destas instruções, pode-se ter a versatilidade de 2


portas seriais dentro do mesmo microcontrolador.

Você também pode gostar