Nota Con la instruccin BREAK, se genera un cdigo de operacin reservado que usa el simulador para hacer una pausa en la simulacin. En este caso el compilador se limitar a inicializar el stack pointer Puntero del stack y el display LCD siempre que se usen instrucciones relativas al display LCD. Esta opcin ser tomada por el sistema para hacer uso de la RAM externa. Nota address La direccin HEX de inicio de la memoria conteniendo el cdigo. Esta opcin puede ser empleada cuando se desea testear el cdigo en RAM.
El cdigo debe ser cargado en una direccin especifica y llamado desde un programa monitor residente. El programa monitor debe proveer la relocalizacin de las interrupciones a las direcciones correctas. En caso contrario, no pueden manejarse las interrupciones correctamente. Esto depende del programa monitor. DAT" 'usa el archivo Nota label El nombre de la rutina en asembler que debe ser llamada cuando un carcter es enviado al bufer del puerto serie SBUF.
El carcter es puesto en el acumulador ACC. Con la redireccin de la instruccin PRINT o cualquier otro comando todas las salidas del puerto serie ser posible hacer uso en rutinas personalizadas. De este modo es posible utilizar cualquier otro dispositivo como destinatario de la salida. Nota var Var2 Variable a asignar el valor absoluto de var2.
Variable original desde la cual extraer el valor absoluto. EI valor absoluto de un nmero es siempre positivo.
Ver tambin -Diferencia con QB No es posible hacer uso de constantes numricas porque el valor absoluto es obvio para las mismas. No es posible efectuar operaciones con Singles. Nota oldvar newvar Nombre de la variable, ejemplo: P1.
Nota var String Variable de destino del la conversin. En cualquier caso, la conversin se efectuar slo en el primer carcter de la cadena. Si la cadena resultase vaca el valor de la conversin ser cero. Nota var Variable a convertir. En caso de utilizar dispositivos real time clock I2C con valores almacenados en BCD, sta funcin permite ver los valores correctamente. Nota Es posible definir breakpoints Puntos de ruptura del programa en el simulador, mas es posible insertar breakpoints en el programa por medio de la instruccin BREAK.
El opcode Cdigo de operacin reservado usado es A5. En este caso Test. Con la instruccin CALL es posible llamar un procedimiento o una subrutina.
En la llamada, pueden pasarse hasta 10 parmetros, pero tambin puede llamar un subprograma sin parmetros. Por ejemplo : Call Test2 La declaracin de la llamada le permite que lleve a cabo sus propias instrucciones personalizadas. Para Call Routine x,y,z debe de escribirse como Routine x,y,x. La asignacin de una constante no requiere espacio de la memoria de programa.
En fase de compilacin, todas las constantes sern sustituidas con el valor asignado. Para mayor detalle, consultar la seccin del hardware. Este bit puede ser utilizado para generar una interrupcin.
EXF2 como TF2, pueden generar una interrupcin. La direccin del contaje es determinada por el bit DCEN. Esta transicin tambin pone a 1 el bit EXF2. En esta modalidad el pin T2EX puede ser utilizado para controlar la direccin de la cuenta.
Generador de Baud rate velocidad en baudios Esta modalidad puede ser seleccionada para generar la velocidad en baudios del puerto serie asncrono, liberando TIMER1 para otras funciones.
TIMER1 puede ser usado para generar una velocidad en baudios diferente en transmisin. Slo Trasmisin Esta modalidad puede ser seleccionada slo para generar la velocidad baudios para la transmisin. TIMER1 puede ser usado para generar una velocidad baudios diferente en recepcin. Mengual Pgina Salida de Clock reloj Algunas variantes de procesadores tienen la posibilidad de generar sobre P1.
Analizando el bit T2CON. Cuando se conecta un display LCD al bus de datos, por defecto se considera la utilizacin de las 8 lneas del bus de datos. Si se selecciona la modalidad de 4 bits, debe ser conectado a las lineas de datos d7d4. Este generador de baudios est slo disponible en los , y chips compatibles. Cuando usa diferentes pins en diferentes proyectos, puede usar esta instruccin para ignorar la opciones del compilador definida para el pin SDA.
De este modo el programa tendr esplcitamente direccionado el pin utilizado y no ser necesario anotarlo separadamente para modificarlo en Option Settings. Nota time Costante numrica que especifica el retardo en mS. Si el tiempo de debounce no es configurado, se aplica por defecto en 25mS. Este tiempo es referido a una frecuencia de reloj del procesador a 12 MHz. Nota time Costante que define el intervalo del tiempo para el timer del watchdog, expresado en mS, con posibilidad de las siguientes opciones: 16 , 32, 64 , , , , y Cuando el WatchDog es activado, ser generado un reset en el intervalo del tiempo especificado.
El contador puede contar desde 0 a en modalidad 2 8-bit auto recarga y fino hasta en modalidad 1 bit. Para ajustar un valor de recarga, usar la declaracin LOAD. BAS '' Conectar a la entrada del timer P3.
Nota var address Variable numrica a la que s asignado el contenido de la direccin localizada en address Variable numrica o constante que contiene la direccin de la localizacin. Next Print 'nueva lnea linefeed 'Atencin cuando se escribe en la memoria interna!!
Costante de tipo Single debe de terminar con el signo! Nota Px. La etiqueta de GOTO cuando el estado especificado es detectado. Cuando es leido el estado del pin, espera 25 mS hasta chequear de nuevo el estado del pin esto elimina rebotes producidos por el contacto de un interruptor. Cuando la condicin todava es verdad y no haba nign salto antes, salta a la etiqueta especificada.
Cuando DEBOUNCE es ejecutado otra vez, el estado del interruptor se debe de haber colocado en la posicin original antes de que pueda realizar otro salto a la etiqueta especificada. Lo que tambin debe mencionarse es que P2. Esto puede influir sobre las instrucciones de debounce. Con estos pins es mejor utilizar la instruccin de debounce del siguiente modo: Debounce P1.
Para evitar que se produzcan accidentalmentes saltos a la etiqueta a causa de las resistencias de pull up. Hay a menudo situaciones donde se necesita disminuir un nmero en 1.
Ejemplo: '' c , MCS Electronics '' file: DEC. Nota test Var Type Nombre del procedimiento. Hasta un mximo de Es necesario declarar cada subrutina antes de escribir el procedimiento que deber de ser seguido por la subrutina. Nota char r1-r8 Variable que representa el carcter El valor asignado a la fila del carctere.
Es posibie utilizar el LCD designer para costruir en forma grfica un carcter. Un carctere especial definido podr ser visualizado con la funcion Chr. Ejemplo: DefLCDchar 0,1,2,3,4,5,6,7,8 'define el carcter especial. LCD Chr 0 'muestra el carcter. El tiempo de retardo producido es de microsegundos si se emplea en el sistema una frecuencia de reloj de 12 MHz.
Var puede ser una array matriz , por ejemplo : ar IRAM si la variable se memoriza en la memoria interna default. Las variables de tipo BITS son siempre salvadas en la memoria interna. Nota: Cada 8 bits usados ocupa 1 byte en memoria. Cada byte usado ocupa 1 byte en memoria. Ejemplo: '' c MCS Electronics '' file: DIM. Dim ar 10 As Byte 'dimensiona un array matriz. Por defecto todas las interrupciones son deshabilitadas.
Pueden ser gestionadas mas o menos interrupciones en funcin del chip utilizado. Ver las especificaciones del microprocesador usado para ampliar detalles. END IF. Pueden ser gestionadas ms o menos interrupciones en funcin del chip utilizado. Nota Es indispensable terminar un estructura IF.. Es posible anidar instrucciones IF..
El uso de ELSE es opcional. Nota var Nombre de la variable a cancelar. Despus de eliminar una variable, esta puede ser nuevamente dimensionada. Cuando resulte conveniente hacer uso de variables temporales, una vez utilizada, se elimina liberando espacio en memoria. Esto permite usar menos memoria. Es posible cancelar slo la variable dimensionada con la ltima instruccin DIM.
Cuando se han dimensionado 2 variables para su uso como temporales, se pueden eliminar estas variables. El orden para la eliminacin no es relevante. Ejemplo : Dim a1 as byte , a2 as byte , a3 as byte , a4 as byte 'uso las variables. Dim a5 as Byte 'Dimensionamiento de una nueva variable.
Ahora no ser posible cancelar las variables a1 y a2! La variable cancelada no vendr reportada en el archivo de informe del simulador. REM A usa el espacio asignado antes de eliminar la variable, este espacio. REM es asignado a la variable A que todava retiene el valor asignado. REM anteriormente. Nota var start end value Variable que utilizar como contador Valor inicial del la variable var Valor final del la variable var Valor del incremento o decremento a aplicar a la variable var cada vuelta seguida de NEXT.
Para bucles de incremento se debe de utilizar TO. STEP es opcional y puede ser omitido, por defecto su valor es 1. Nota var source mask La cadena que es asignado el resultado. Las Variables de tipo single han de ser formateadas. Mscara de formateo. El signo es utilizado para indicar el nmero de cifras antes y despus del punto decimal. El resultado ser redondeado. Print Buf , Result As Single 'introducir 2 valores.
Nota Channel Var Constante numrica positiva que se refiere al canal abierto. La variable que recibe el valor desde el software UART. Tenga en cuenta que el canal debe abrirse con la instruccin OPEN.
Por favor vea el comentario en la instruccin OPEN y el ejemplo en esta pgina. Ejemplo: 'En este ejemplo se usan los pins asignados normalmente para comunicacin Open "com3. BAS ' adquiere el valor de una resistencia. Esta instruccin trabaja junto con la interrupcin INT0.
Vea el ejemplo siguiente cmo usarla. Ejemplo: '' RC5. Nota label Nombre de la etiqueta a saltar. Nota La etiqueta puede ser de hasta una longitud mxima de 32 carcteres El compilador avisa cuando se duplica una etiqueta en el curso del programa. Una etiqueta debe de terminar siempre con dos puntos :. Nota var X Variable numrica a asignar el valor. Cadena que contiene la expresin en Hexadecimal.
Variable a extraer el valor MSB: byte ms significativo. Nota var s La variable que es asignada con los dos MSB de la variable s. El formato debe ser un Entero Integer o Palabra Word. La variable fuente para conseguir los bytes MSB. Debe ser del tipo largo long. Nmero de bytes a escribir.
Atencin a no especificar un nmero excesivo de bytes! Nmero de bytes a recibir. Este comando requiere hardware adicional. Ver apndice D. Nota slave var bytes Direccin del dispositivo esclavo I2C bus.
Nmero de bytes a enviar. Specifica 8 ACK si hay mas bytes para leer. El procesador entra en funcionamiento normal cuando es recibida una interrupcin se produce un reset por hardware a travs del pin RESET. IF Accin Permite ejecucin condicional o salto, basado en la evaluacin de una expresin de tipo Boolean. Nota expresin Cualquier expresin estimable como verdadera falsa. Tambin es posible evaluar un solo bit como expresin: IF var. Nota Var Variabile numrica a incrementar. Hay a menudo situaciones donde se necesite incrementar una variable en 1 unidad.
Consultar el manual para el diseo de un interface serie. El interface RS puede ser conectado a un puerto de comunicacin de un PC. INP Accin Ingresa un byte leido de un port hardware o de una loclalizacin de memoria externa. Nota var address Variable numrica al la cual ser asignado el valor.
Direccn donde leer el valor. La instruccin INP slo puede usarse en sistemas de microprocesador con direccionamiento de memoria externa. Nota var1 var2 Variable al la cual ser asignado el valor leido del puerto serie. Segunda o ms variable opcional a la cual ser asignado ulteriores carcteres del puerto serie. El nmero de bytes a leer depende del tipo de variable usada. Con una variable de tipo Byte, desde el puerto serie ser leido un carcter.
Una variable de tipo Integer esperar 2 carcteres y una array matriz esperar hasta que la misma est completa. Variable numrica al la cual ser asignada el valor introducido.
Deshabilita el eco hacia el puerto de comunicacin. Consultar el manual para la informacin de la realizacin de un interface serie RS El interface serie RS puede ser conectado al puerto de comunicacin serie de un PC. De este modo es posible usar un emulador de terminal y un teclado como dispositivo de entrada.
Si var es de tipo Byte debe ser introducido 2 carcteres desde el teclado. Si var es de tipo Long debe ser introducido 8 carcteres desde el teclado. Variable que aceptar el valor de entrada o cadena introducida.
Ejemplo: '' c , MCS Electronics '' file: INPUT. Nota var Variable numrica que se asignar con la posicin de la subcadena en la cadena. Ingresa 0 cuando la subcadena no se encuentra. Un parmetro numrico optativo que puede asignarse con la primera posicin dnde debe buscar en la cadena.
Por defecto cuando no es usado se busca en la cadena entera iniciando la bsqueda en la posicin 1. La cadena para buscar. La cadena objeto de la bsqueda. El soporte para cadenas externas tambin se agregar. Nota dest source La variable de la cadena a la que asignar el texto en maysculas minsculas de la cadena fuente. La cadena fuente. La cadena original quedar inalterada. Ejemplo: '' c , MCS Electronics '' file: LCD. Nota var Var1 n Cadena a la cual ser asignado el resultado.
Cadena de origen sobre la que operar. Numero de carcteres a extraer de la cadena. Para las operaciones con variables de tipo String, todas las variables tienen que ser mismo tipo: interna o externa.
Nota var string Variabile numerica a la que asignar el valor de la longitud de la cadena. Cadena a la cual se desea calcular la longitud. Ver el Hardware suplementario para mayores detalles. Nota x y Constante o variable relativa a la columna. Nota var value label Valor devuelto Valor a usar como ndice de la tabla. Etiqueta en la cual est presente el dato.
Nota var value label Cadena devuelta Valor a usar como ndice de la tabla. El ndice parte de 0, luego el primer elemento de la tabla es en el ndice 0.
Variable fuente de la cual se extrae el byte LSB. Nota var s La variable que se asigna con los dos LSB de la variable s. La variable fuente para conseguir los dos LSB. Nota var1 Var2 Variable a la cual se asignar el valor convertido.
Variable conteniendo el valor decimal original. Variable o constante con el byte menos significativo LSB. Variable o constante con el byte ms significativo MSB. Nota var1 var2 Variable a la cual asignar el valor convertido. Variable original conteniendo el valor en BCD.
Nota var ar Variable numrica que se asignar con el valor ms alto de la serie. El primer elemento de la serie a devolver el valor ms alto. El soporte para otros tipos de datos tambin se agregar. La instruccin MID puede ser usada para sustituir parte de una cadena.
Nota var Var1 st l Cadena a la cual ser asignado el resultado. Cadena de orgen. Nmero de carcteres a retirar o cambiar. Nota Var ar Variable numrica que se asignar con el valor ms bajo de la serie. El primer elemento de la serie para devolver el valor ms bajo. Nota ret var1 var2 Variable a la cual sera asignado el mdulo resto.
Variable a dividir dividendo. Variable por la cual se dividir divisor. Cuando se divide un nmero entero, el resto que queda del resultado entre el dividendo y el divisor ser el asignado a la variable ret.
Var es opcional y no indispensable. Pueden encontrarse chips con interrupciones especficas bajo el soporte del microprocesador.. Etiqueta a la cual saltr la ejecucin del programa al detectar la ionterrupcin.
Usando esta opcin nos aseguramos de cumplir separadamente esta operaccin sobre los registros utilizados. Ver Hardware para mayores detalles. ON Value Accin Salta a una o ms etiquetas especificadas en funcin del valor de una variable. Nota var label1, label2 Variable numrica de analizar. Esta tambin puede ser un SFR como P1.
Etiquetas a saltar en relaccin al valor de la variable var. Con el software UART, es necesario precisar el pin del puerto y el baudrate.
Numero del canal a abrir. Debe de ser una constante positiva. Ya que existen microprocesadores como el , que disponen de 2 canales seriales a bordo, el compilador tiene que ser informado sobre la puerta que se quiere usar. Si existe una sola puerta serial a bordo del microprocesador no es necesario precisar cual se quiere usar y la instruccin OPEN puede ser omitida. Cada dispositivo abiertos tiene que ser cerrado sucesivamente a travs de la instruccin CLOSE channel.
Naturalmente especificando el mismo nmero por channel. Nota x Var Nmero de port 1 or 3. Variable a adquirir o asignar. Otros microprocesadores pueden disponer de ms puertos como P0, P2, P4 etc.
Elegiendo oportunamente el archivo. DAT que define cul microprocesador se est empleando ser posible tambin usar estos puertos adicionales como variables. En la prctica es posible utilizar cualquier SFR como una variable. Nota var address Variable numrica a la que asignar el contenido de la celda apuntada de address. Variable numrica o constante que define la direccin. Nota address value Variable numrica conteniendo la direccin de la celda de la memoria a escribir.
Se tiene que poner la mxima atencin en el empleo de la instruccin POKE, ya que la memoria interna es utilizada para memorizar las variables y una operacin errnea puede llevar al funcionamiento defectuoso del programa.
Nota La modalidad powerdown para completamente el reloj del sistema. El nico modo para reactivar el procesador es haciendo un reset. Nota var Variable o constante a transmitir print.
Para mandar ms variables con la misma instruccin, utilizar punto y coma como separador ; Acabando una lnea con punto y coma no ser mandado el carcter de cambio de lnea linefeed. Consultar el manual para informaciones sobre la realizacin de una interfaz RS La interfaz RS puede ser unida a la puerta de comunicacin serie de un PC.
De este modo es posible emplear un emulador de terminal como aparato de salida. Ejemplo: '' c , MCS Electronics '' file: PRINT. Nota var varn Variable conteniendo el valor a enviar por el puerto serie Variables a enviar. Usando una variable tipo Long, por ejemplo:, seran enviados 4 bytes. Nota var Variable conteniendo el valor a enviar por el puerto serie. Consultar el manual por informaciones sobre el realizacin de un interfaz RS Activa la prioridad de la interrupcion al nivel ms bajo.
La interrupcin a la cual define la prioridad. Otros microprocesadores pueden tener interrupciones adicionales o diferentes. Ver el hardware de los Microprocesadores para mayores detalles. La interrupcin INT0 tiene siempre la prioridad ms alta. If you have any suggestions on improving this or other tutorials, would like to see another added or even have one ready that you would like to add to the site, send the webmaster an email with the description and, if applicable, a copy of the tutorial you wish to submit.
There is no fee for submitting a tutorial nor is there a fee paid to the submitter. This site is to make available free information and is maintained through affiliate advertising. Also, you will find the user manual available on those same pages.
I performed this installation on a computer running a 2 Ghz Celeron processor with Windows XP as the operating system. Start by creating a folder on your desktop named 'bascom.
After all of the files have been successfully downloaded, unzip the files into the same folder. Open the unzipped folder bcavrd 1 and click the setup icon. You may get a warning for the digital signature validation. Figure 4. The installation is just like installing any other software. You should allow the software to install in the default locations and settings it selects if possible. When the installation begins, it will prompt you to insert disk 2. Simply perform the same action of typing the new number in the Source Pathname as you did for disk 2 for all of the remaining prompts, typing 3 for disk 3, 4 for disk 4, etc.
After the software has been installed, it is a good idea to restart your computer. Most computers will not be adversely affected without a restart, but it is good practice to do so. When it is opened, click options then programmer to open the page for selecting the programmer you will use with your project.
Again, we will proceed assuming we will be using the STK programming kit. As a result, all settings exceed the chip's capacities since there are no capacities available. Just click OK and continue. At the top of the Options menu, click the Compiler tab to select a chip as shown in figure 4.
If you will be using the same microcontroller in your version of our project, you should select the m16def. If not, simply select your chip's. If enabled, the simulator will appear each time you compile your program and you will need to close it out each time before proceeding. It is a minor inconvenience if you are not using the simulator, as we will not during this project. If you wish to disable the simulator, click on the Simulator tab and uncheck the box indicating the simulator will be used.
There is not much need to keep these on your hard drive taking up space unless you have more storage than you think you will ever use. I have always learned best by looking at examples and modifying them to suit my purposes. That is how we will show you the basics of programming the AVR microcontroller. As you go through the book, feel free to experiment with the program to get various results. Some will work and some will not. Typically you will learn more from the trials that fail because of the time you spend troubleshooting the reason for the failure.
This entire program is listed in the appendix under 'Programs' and also on my website under downloads as project1. Instructions on downloading and installing the software is located in the Appendix under Software as well as on MCS Electronic's website. Comments, chip files and clocksNow, start a new project and let's start typing some code.
Click the blank page button to start a new project. Saving in the default location is fine, but it is best to create a folder specifically for each project and save the project in that folder.
Figure 5. The lines with a ' in front of them are remarks. They are there only for our reference. It is a good idea to put as many comments in the program as possible to insure you know what it was you were doing when you return to the program to debug or modify the code.
It will bring up a screen for you to see the names of the reg files for the chips as you can see in figure 4.
0コメント