Sei sulla pagina 1di 18

INSTRUCCIONES BSICAS DE BASCOM AVR

$regfile
Esta instruccin va siempre al inicio de cualquier proyecto que
realicemos, ya que es la encargada de direccionar el respectivo
microcontrolador que vamos a usar.
Por ejemplo:
Atmega 8: $regfile=m8def.dat
Atmega 16: $regfile=m16def.dat
Atmega 32: $regfile=m32def.dat
$crystal
Esta instruccin va especificar la frecuencia de oscilacin con la que va
a funcionar el microcontrolador.
Por ejemplo:
$crystal=1000000 para 1MHZ
$crystal=4000000 para 4MHZ
$crystal=8000000 para 8MHZ
Config
Esta instruccin especifica la configuracin de un pin, un puerto o un
dispositivo, ya que pueden ser configuradas como entrada o salida de
datos.
Por ejemplo:
Config portb=output Puerto B como salida
Config pina.0=input
Pin A.0 como entrada
Config lcd=16*2
LCD de 16 caracteres y 2 lneas
Wait,waitms,waitus
Esta instruccin sirve para crear un retardo, ya sea en segundos,
milisegundos y microsegundos respectivamente.
Por ejemplo:
Wait 3
Espera 3 segundos
Waitms 7
Espera 7 milisegundo
Waitus 500
Espera 500 microsegundos

Do-loop
Esta instruccin es un lazo cerrado, en el cual se ejecuta un conjunto
de instrucciones de forma indefinida.
Do
Instrucciones
Loop
Do-loop until
Es un lazo definido por la condicin de una variable que est dentro del
lazo, la cual define cuando termina de ejecutarse el conjunto de
instrucciones.
Por ejemplo:
Do
A=A+1
Loop until A =10 termina el lazo cuando A=10
Toggle
Este comando sirve para complementar el estado anterior de alguna
variable o pin de algn puerto.
Por ejemplo:
Toggle portb.0
complementa el portb.0
Dim
Dim sirve para dimensionar el tipo de variable que se va utilizar, entre
los tipos de variables estn los siguientes:
TIPO
DIMENSION
BIT
0-1
BYTE
0 a 255
WORD
0 a 65535
LONG
-2147483648 a 2147483647
INTEGER
-32768 a 32767
SINGLE
1.5
a 3.4
STRING
CADENA DE CARACTERES MAXIMO 254
ARRAY
MATRIZ 65535
DOUBLE
5.0*
a 1.7*
DIM var as tipo
Ejemplo: DIM A as byte

Alias
Sirve para dar un nombre general dentro de un proyecto ya sea un
puerto o un pin de un puerto.
Ejemplo:
Foco Alias portb.0
El portb.0 ahora se llama el foco
Declare sub nombre ( )
Sirve para declarar subrutinas que en el programa principal, se las
llamara con la instruccin CALL nombre.
Goto
Salto incondicional a una etiqueta.
Gosub
Llama a una subrutina. La subrutina debe escribirse despus de END y
terminar con la instruccin RETURN.
SET,RESET
Pone a 1Ly 0L respectivamente un pin de salida
Ejemplo: SET PORTD.0 pone a uno el pind.0
Incr
Incrementa en una unidad una variable.
Ejemplo: Incr x
IF-THE; ELSE
Son sentencias condicionales, las cuales responden a un estado de
voltaje (0L, 1L), de contenido (caracteres), etc.
IF (condicin) THEN
Instruccin1
ELSE
Instruccion2
END IF

FOR-NEXT
Son instrucciones de repeticin, ya que ejecutan un conjunto de
instrucciones, dependiendo de una variable incremental dentro del
lazo.
FOR var=val_inicial to val_final
Instrucciones (mientras val_inicial var val_final)
Next var
WHILE WEND
Lazo de repeticin con el cumplimiento de una condicin.
Var
While <condicin>
Instrucciones si condicin es verdadera
Wend
SELECT CASE
Son sentencias que se pueden ejecutar, dependiendo del estado de
una variable de seleccin. Nos sirve para realizar diferentes acciones
en funcin del valor de una variable, en nuestro caso, el valor ledo por
el puerto de entrada.
Var
Select case var
Case1: instruccin 1
Case2: instruccin 2
..
Case else: instrucciones otros casos
End select

SIMBOLOS Y OPERADORES
Dentro de los operadores, pueden utilizarse los matemticos, de
relacin y lgicos. Adems se deben tomar en cuenta que Bascom nos
permite realizar operaciones nicamente con dos variables a la vez.
A continuacin podremos observar los operadores ms comunes.
Operadores matemticos
Suma: a =b+c
Resta: a =b-c
Multiplicacin: a=b*c
Divisin: x=a \ b
Residuo= a MOD b
Operadores de relacin
= igual x=y
<> No es igual x<>y
< Menor que x<y
> Mayor que x>y
<= menor igual x<=y
>=mayor igual x>=y
Operadores lgicos
NOT complemento (negacin)
AND conjuncin (y)
OR disyuncin (o)
XOR or exclusiva

Representacin de lgica digital


Para representacin de un numero o hexadecimal, dentro de BASCOM AVR,
es necesario anteponer el smbolo &.En el caso de nmeros decimales, no
es necesario anteponer ningn smbolo.
Ejemplo:
Porta=&HF9

Numero hexadecimal

Portb=&b10001100

Numero binario

Porta=129

Numero decimal

Configuracin de los puertos como entradas o salidas digitales


A continuacin, en las siguientes explicaciones la letra x representara B, C, D
segn el puerto del cual se trate.
REGISTRO DDRX
Son registros de 8 bits. En estos registros se configura de forma
individual los pines de los puertos como entradas o salidas .Un 0
significa que el pin es entrada y 1salida.
REGISTRO PORTX
En estos registros se colocan los datos que deben ser enviados al
exterior.1 en alto (5 voltios) y 0 en bajo (0 voltios).
En cada puerto, est microcontrolador tiene pull-up internas que
pueden ser o no habilitadas individualmente (poniendo 1 en el bit
correspondiente) cuando un pin se configura como entrada.
REGISTRO PINX
En estos registros se lee el dato proveniente del exterior (estado de los
interruptores o pulsadores conectados al puerto) si los pines estn
configurados como entrada .En el momento de realizar una lectura del
estado de las entradas , se debern tener en cuenta la forma en que

estn conectados los pulsadores o interruptores (con pull-up o pulldown)

MANEJO DE UNA PANTALLA LCD (DISPLAY DE CRISTAL LIQUIDO)


Un display de cristal lquido (LCD) es un dispositivo que nos permite mostrar
informacin alfanumrica o caracteres diseados, presentando una ventaja
sobre los display de 7 segmentos. El manejo de un LCD, se basa en una
secuencia de comandos que deben ser enviados desde el microcontrolador,
durante un tiempo predeterminado por el fabricante. Pero cuando se trata
de programacin en alto nivel, este proceso es realizado por el compilador o
por libreras que estn previamente hechas en el software.
En el caso del Bascom AVR, podemos controlar al LCD de dos maneras: por
comandos o por configuraciones en cuadro de dialogo.

Mediante comandos tenemos:


Config Lcd
Sirve para configurar la clase de lcd que vamos a utilizar, puede ser de
16 caracteres por 2 lneas (16x2) ,de 20 caracteres por 4 lneas
(20x4),etc.
Por ejemplo:
Config lcd = 16*2
(display de 16*2)
Config Lcdpin
Sirve para configurar los pines por los cuales se va a manejar la
informacin.
Por ejemplo:
Config Lcdpin=pin, Db4=Porta. , Db5=Porta.5, Db6=Porta.6
Db7=Porta.7, E=Portc.7, Rs=Portc.6
Config Lcdbus
Esta instruccin sirve para configurar cual ser el modo de envi de
datos, ya que pueden ser hecho por 4 pines u 8 pines.
Por ejemplo:
Config Lcdbus = 4 (4 pines de datos)
Lcd
Sirve para escribir cualquier frase en el Lcd , sin importar la localizacin
del cursor.
Por ejemplo:
Lcd hola
Locate x,y
Sirve para localizar el cursor en la lnea y columna adecuada, para
poder empezar a escribir en el Lcd.
Por ejemplo:
Locate 1,1
(localizacin del cursor en la fila 1,columna 1)

ShiftLcd
Sirve para mover todo el texto del Lcd, ya sea para la izquierda o
derecha, con las instrucciones:
ShiftLcd left
ShiftLcd right

MANEJO DE LA MEMORIA SERIAL EEPROM


La memoria serial es una de las herramientas que posee internamente
un AVR, mediante esta, se facilita el mtodo para guardar un dato que
se quede grabado en esta memoria no voltil.
Para el uso de la EEPROM interna es necesario conocer principalmente
el dimensionamiento de las variables que pueden ser usadas.
Eram
Mediante esta instruccin se dimensiona una variable para que pueda
ser usada como puntero para guardar un dato en la EEPROM.
Por ejemplo:
Dim var as Eram integer (variable entera para la eeprom)
Readeeprom
Sirve para leer o almacenar en una variable, el dato que este guardado
en una direccin especifica de la memoria EEPROM.
Por ejemplo:
Readeeprom var,&H00 (Almacena el dato de la direccin 00h en la
variable var)
Writeeeprom
Sirve para escribir un dato en una direccin especfica de la memoria
EEPROM.
Por ejemplo:
Writeeeprom var, &h00 (escribe en la direccin 00h, el contenido de
la variable var)

MANEJO DE LO CONVERSORES ADC


Dentro de los AVR existen conversores analgicos a digital de 10 bits,
los cuales nos sirven directamente para la conversin de una variable
analgica, por ejemplo temperatura, voltaje, presin, etc.
En algunos casos no debemos olvidar que debemos acondicionar la
seal analgica, para que esta sea amplificada y calibrada, antes de
ingresar al microcontrolador.
Un detalle muy importante es que se debe activar el funcionamiento
del ADC, en el microcontrolador, lo cual se realiza poniendo el pin
(AVCC) a 5V, y el pin (AREF) a un voltaje de referencia para tener la
escala adecuada.
Dentro de las instrucciones que se necesitan para activar el conversor
interno estn:
Config adc
Sirve para configurar el adc interno con referencia interna o externa.
Adems esta instruccin va acompaada del inicio del adc (start adc).
Por ejemplo:
Config Adc=single, Prescaler=Auto, reference=Internal (o Avcc)
Start Adc
Getadc ( )
Esta instruccin obtiene el valor digital a 10 bits de la entrada
analgica dependiendo en cual pin est conectada.
Por ejemplo:
B=Getadc (1) (obtiene el valor digital del adc 1)

MANEJO DEL SENSOR ULTRASONICO


Pulseout
Sirve para enviar pulsos de salida por cualquier pin del
microcontrolador por periodos de un 1us para una frecuencia de
oscilacin de 4 MHZ.
Por ejemplo:
Pulseout portb, 1,6000 (genera pulsos de 6ms por el pinb.1)
Pulsein
Realiza el conteo en unidades de microsegundos, hasta que suceda una
transicin positiva o negativa por un pin de un puerto especifico.
Por ejemplo:
Pulsein W, pinb, 0, 0
(Retorna en la variable w, el conteo en
microsegundos hasta que suceda una transicin de 0 a 1 por el pinb.0)
Bitwait
Nos sirve para crear un tiempo de espera, dependiendo del estado
actual en el que se encuentra un pin de un puerto.
Por ejemplo:
Bitwait pinb.0, set (espera en el mismo punto hasta que el pinb.0 este
activado 1L)

INTERRUPCIONES EXTERNAS
A igual que la interrupcin del prtico serial no proporciona ventajas
para ejecutar un programa principal, la interrupcin externa tambin
permite ejecutar una subrutina solo si cumple o se detecta alguna
seal externa, ya sea por el pin INT0 o INT1.

Para esto es necesario ejecutar instrucciones principalmente de


configuracin, las cuales hacen que se active la interrupcin.
On Int0
Sirve para activar una subrutina especfica , en caso de que se active la
interrupcin externa 0.
Por ejemplo:
On int0 pulsos (activa la subrutina pulsos, en caso de que se active la
interrupcin externa 0)
Enable interrupts
Sirve para activar las interrupciones activadas independientemente.
Enable Int0
Nos permite activar la interrupcin externa 0

COMUNICACIN SERIAL CON EL PC


La comunicacin serial entre dispositivos, se basa en el intercambio de
informacin mediante lneas transmisin y recepcin. Uno de los
circuitos integrados que nos ayudan a realizar la comunicacin serial
entre un pc y un microcontrolador es el MAX232, el cual es un
conversor de nivel RS232 a TTL y viceversa. Un cable null-moden sirve
para realizar comunicaciones seriales mediante el puerto DB9 de un
computador.
Para realizar una comunicacin bidireccional, sea half dplex o full
dplex, se deber realizar un cable en donde se unan la recepcin de
un lado y la transmisin del otro.
Las instrucciones que nos puedan ayudar a realizar la comunicacin
serial mediante un microcontrolador un pc, pueden ser de tres tipos:
con retorno (por software) , por interrupcion y con retorno (por
hardware).

Las instrucciones por retorno necesitan como conformacin de envi o


recepcin de datos, el carcter ASCII N 13 (ENTER) y las instrucciones de
interrupcion habilitan una subrutina que ejecuta la transmisin o recepcin
serial.
$baud
Esta es una instruccin de configuracin principal ,que sirve para
determinarla velocidad de transmisin a la que se van comunicar los
dispositivos.
Por ejemplo:
$baud =9600 (velocidad de transmisin de 9600 bps)
$baud =1200 (velocidad de transmisin de 1200 bps)
Print
Sirve para enviar datos en forma serial, desde el microcontrolador
hacia el dispositivo como por ejemplo un PC. Usando con el comando
input generalmente es una instruccin con retorno.
Por ejemplo:
Print hola (transmisin de letras y variables)
Input
Sirve para recibir caracteres desde otro dispositivo hacia el
microcontrolador. Un inconveniente que presenta Print o input, es
que necesitan como confirmacin de datos el carcter ASCII N 13
(ENTER) antes mencionado. Para ello es mejor o recomendable
trabajar mediante interrupcion del prtico serial, la cual es activada ya
sea por la recepcin o la transmisin desde el microcontrolador.
Por ejemplo:
Input A (recepcin de datos en la variable A string)

INTERRUPCION DEL PORTICO SERIAL


Mediante la interrupcion del puerto serial, ser un poco ms sencillo el
manejo global del programa, ya que al menos no debemos
preocuparnos en que instante nos puede llegar un dato; sino que
simplemente realizamos una subrutina, la cual se encargara de
almacenar dicho dato, proveniente de una fuente serial externa.
Las instrucciones usadas para realizar una interrupcion de recepcin
del puerto serial, son:
On Urxc Serial
Sirve para activar la subrutina llamada SERIAL, en caso de recibir un
dato.
Enable Interrupts
Sirve para habilitar las interrupciones presentes en el
microcontrolador.
Enable Urxc
Sirve para habilitar la interrupcion del puerto serial.
Inkey()
Sirve para guardar un dato recibido por comunicacin serial en una
variable declarada.
COMUNICACIN POR HARDWARE
La comunicacin por hardware es similar a la comunicacin con
retorno por software, con la nica diferencia que se deben abrir pines
para transmisin y recepcin definidos por el usuario.
Las instrucciones utilizadas para abrir un puerto serial por hardware
son:

Open
Sirve para habilitar cualquier pin del microcontrolador, para que
funcione como entrada o salida de datos.
Por ejemplo:
Open comd.1:9600, 8, n, 1 For output As #1, para transmisin
Open comd.1:9600, 8, n, 1 For input As #2, para recepcin
Close
Sirve para cerrar la utilizacin de los pines de recepcin y transmisin.
Por ejemplo:
Close#1, para cerrar la transmisin
Close#2, para cerrar la recepcin
Print #1
Sirve para transmitir por el pin de trasmisin virtual
Input #2
Sirve para recibir por el pin de recepcin virtual
Con la ayuda de estas instrucciones se puede tener la versatilidad de 2
puertos seriales dentro de un mismo microcontrolador.