Instrucciones basicas de bascom avr

18 251 0
Instrucciones basicas de bascom avr

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

INSTRUCCIONES BÁSICAS DE BASCOM AVR  $regfile Esta instrucción 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 instrucción va especificar la frecuencia de oscilación la que va a funcionar el microcontrolador Por ejemplo: $crystal=1000000 para 1MHZ $crystal=4000000 para 4MHZ $crystal=8000000 para 8MHZ  Config Esta instrucción especifica la configuración 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 líneas  Wait,waitms,waitus Esta instrucción sirve para crear un retardo, ya sea en segundos, milisegundos y microsegundos respectivamente Por ejemplo: Wait Espera segundos Waitms Espera milisegundo Waitus 500 Espera 500 microsegundos  Do-loop Esta instrucción 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 condición 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 algún 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 están los siguientes: TIPO DIMENSION BIT 0-1 BYTE a 255 WORD 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 la instrucción CALL nombre  Goto Salto incondicional a una etiqueta  Gosub Llama a una subrutina La subrutina debe escribirse después de END y terminar la instrucción RETURN  SET,RESET Pone a “1L”y “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 (condición) THEN Instrucción1 ELSE Instruccion2 END IF  FOR-NEXT Son instrucciones de repetición, 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 repetición el cumplimiento de una condición Var While Instrucciones si condición es verdadera Wend  SELECT –CASE Son sentencias que se pueden ejecutar, dependiendo del estado de una variable de selección Nos sirve para realizar diferentes acciones en función del valor de una variable, en nuestro caso, el valor leído por el puerto de entrada Var Select case var Case1: instrucción Case2: instrucción …… Case else: instrucciones otros casos End select SIMBOLOS Y OPERADORES Dentro de los operadores, pueden utilizarse los matemáticos, de relación y lógicos Además se deben tomar en cuenta que Bascom nos permite realizar operaciones únicamente dos variables a la vez A continuación podremos observar los operadores más comunes Operadores matemáticos Suma: a =b+c Resta: a =b-c Multiplicación: a=b*c División: x=a \ b Residuo= a MOD b Operadores de relación = igual x=y No es igual xy < Menor que x Mayor que x>y =y Operadores lógicos NOT complemento (negación) AND conjunción (y) OR disyunción (o) XOR or exclusiva Representación de lógica digital Para representación de un numero o hexadecimal, dentro de BASCOM AVR, es necesario anteponer el símbolo “&”.En el caso de números decimales, no es necesario anteponer ningún símbolo Ejemplo: Porta=&HF9 Numero hexadecimal Portb=&b10001100 Numero binario Porta=129 Numero decimal Configuración de los puertos como entradas o salidas digitales A continuación, en las siguientes explicaciones la letra x representara B, C, D según el puerto del cual se trate  REGISTRO DDRX Son registros de 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 “1”salida  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 están configurados como entrada En el momento de realizar una lectura del estado de las entradas , se deberán tener en cuenta la forma en que están conectados los pulsadores o interruptores (con pull-up o pulldown) MANEJO DE UNA PANTALLA LCD (DISPLAY DE CRISTAL LIQUIDO) Un display de cristal líquido (LCD) es un dispositivo que nos permite mostrar información alfanumérica o caracteres disados, presentando una ventaja sobre los display de 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 programación en alto nivel, este proceso es realizado por el compilador o por librerías que están 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 líneas (16x2) ,de 20 caracteres por líneas (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 información 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 instrucción sirve para configurar cual será el modo de envió de datos, ya que pueden ser hecho por pines u pines Por ejemplo: Config Lcdbus = (4 pines de datos)  Lcd “ ” Sirve para escribir cualquier frase en el Lcd , sin importar la localización del cursor Por ejemplo: Lcd “hola”  Locate x,y Sirve para localizar el cursor en la línea y columna adecuada, para poder empezar a escribir en el Lcd Por ejemplo: Locate 1,1 (localización del cursor en la fila 1,columna 1)  ShiftLcd Sirve para mover todo el texto del Lcd, ya sea para la izquierda o derecha, 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 método para guardar un dato que se quede grabado en esta memoria no volátil Para el uso de la EEPROM interna es necesario conocer principalmente el dimensionamiento de las variables que pueden ser usadas  Eram Mediante esta instrucción 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 dirección especifica de la memoria EEPROM Por ejemplo: Readeeprom var,&H00 (Almacena el dato de la dirección 00h en la variable var)  Writeeeprom Sirve para escribir un dato en una dirección específica de la memoria EEPROM Por ejemplo: Writeeeprom var, &h00 (escribe en la dirección 00h, el contenido de la variable var) MANEJO DE LO CONVERSORES ADC Dentro de los AVR existen conversores analógicos a digital de 10 bits, los cuales nos sirven directamente para la conversión de una variable analógica, por ejemplo temperatura, voltaje, presión, etc En algunos casos no debemos olvidar que debemos acondicionar la sal analógica, 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 están:  Config adc Sirve para configurar el adc interno referencia interna o externa Además esta instrucción va acompada del inicio del adc (start adc) Por ejemplo: Config Adc=single, Prescaler=Auto, reference=Internal (o Avcc) Start Adc  Getadc ( ) Esta instrucción obtiene el valor digital a 10 bits de la entrada analógica 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 oscilación de 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 transición positiva o negativa por un pin de un puerto especifico Por ejemplo: Pulsein W, pinb, 0, (Retorna en la variable w, el conteo en microsegundos hasta que suceda una transición de a 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 interrupción del pórtico serial no proporciona ventajas para ejecutar un programa principal, la interrupción externa también permite ejecutar una subrutina solo si cumple o se detecta alguna señal externa, ya sea por el pin INT0 o INT1 Para esto es necesario ejecutar instrucciones principalmente de configuración, las cuales hacen que se active la interrupción  On Int0 Sirve para activar una subrutina específica , en caso de que se active la interrupción externa Por ejemplo: On int0 pulsos (activa la subrutina pulsos, en caso de que se active la interrupción externa 0)  Enable interrupts Sirve para activar las interrupciones activadas independientemente  Enable Int0 Nos permite activar la interrupción externa COMUNICACIĨN SERIAL CON EL PC La comunicación serial entre dispositivos, se basa en el intercambio de información mediante líneas transmisión y recepción Uno de los circuitos integrados que nos ayudan a realizar la comunicación 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 comunicación bidireccional, sea half dúplex o full dúplex, se deberá realizar un cable en donde se unan la recepción de un lado y la transmisión del otro Las instrucciones que nos puedan ayudar a realizar la comunicación serial mediante un microcontrolador un pc, pueden ser de tres tipos: retorno (por software) , por interrupcion y retorno (por hardware) Las instrucciones por retorno necesitan como conformación de envió o recepción de datos, el carácter ASCII N° 13 (ENTER) y las instrucciones de interrupcion habilitan una subrutina que ejecuta la transmisión o recepción serial  $baud Esta es una instrucción de configuración principal ,que sirve para determinarla velocidad de transmisión a la que se van comunicar los dispositivos Por ejemplo: $baud =9600 (velocidad de transmisión de 9600 bps) $baud =1200 (velocidad de transmisión de 1200 bps)  Print Sirve para enviar datos en forma serial, desde el microcontrolador hacia el dispositivo como por ejemplo un PC Usando el comando “input” generalmente es una instrucción retorno Por ejemplo: Print “hola” (transmisión 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 confirmación de datos el carácter ASCII N° 13 (ENTER) antes mencionado Para ello es mejor o recomendable trabajar mediante interrupcion del pórtico serial, la cual es activada ya sea por la recepción o la transmisión desde el microcontrolador Por ejemplo: Input A (recepción de datos en la variable A “string”) INTERRUPCION DEL PORTICO SERIAL Mediante la interrupcion del puerto serial, será un poco más 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 recepción 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 comunicación serial en una variable declarada COMUNICACIĨN POR HARDWARE La comunicación por hardware es similar a la comunicación retorno por software, la única diferencia que se deben abrir pines para transmisión y recepción 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 transmisión Open “comd.1:9600, 8, n, 1” For input As #2, para recepción  Close Sirve para cerrar la utilización de los pines de recepción y transmisión Por ejemplo: Close#1, para cerrar la transmisión Close#2, para cerrar la recepción  Print #1 Sirve para transmitir por el pin de trasmisión virtual  Input #2 Sirve para recibir por el pin de recepción virtual Con la ayuda de estas instrucciones se puede tener la versatilidad de puertos seriales dentro de un mismo microcontrolador ... conjunto de instrucciones de forma indefinida Do Instrucciones Loop  Do-loop until Es un lazo definido por la condición de una variable que está dentro del lazo, la cual define cuando termina de ejecutarse... exclusiva Representación de lógica digital Para representación de un numero o hexadecimal, dentro de BASCOM AVR, es necesario anteponer el símbolo “&”.En el caso de números decimales, no es necesario... cumplimiento de una condición Var While Instrucciones si condición es verdadera Wend  SELECT –CASE Son sentencias que se pueden ejecutar, dependiendo del estado de una variable de selección

Ngày đăng: 16/12/2019, 17:08

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan