Source: https://www.scribd.com/doc/125809644/9384710-Manual-de-Practicas
Timestamp: 2017-05-25 20:28:12+00:00

Document:
ScribdExploreEXPLORE BY INTERESTSCareer & MoneyBusiness Biography & HistoryEntrepreneurshipLeadership & MentoringMoney ManagementTime ManagementPersonal GrowthHappinessPsychologyRelationships & ParentingReligion & SpiritualitySelf-ImprovementPolitics & Current AffairsPoliticsSocietyScience & TechScienceTechHealth & FitnessFitnessNutritionSportsWellnessLifestyleArts & LanguagesFashion & BeautyFood & WineHome & GardenTravelEntertainmentCelebrity Biography & MemoirPop CultureBiographies & HistoryBiography & MemoirHistoryFictionChildren’s & YAClassic LiteratureContemporary FictionHistorical FictionLGBTQ FictionMystery, Thriller & CrimeRomanceScience Fiction & FantasyBROWSE BY CONTENT TYPEBooksAudiobooksNews & MagazinesSheet MusicUploadSign inJoinOptionsJoinSign InUpload9384710 Manual de PracticasUploaded by txuxjjgMicrocontrollerComputer ProgramComputer HardwareAssembly LanguageCentral Processing Unit0.0 (0)DownloadEmbedView MoreCopyright: Attribution Non-Commercial (BY-NC)List price: $0.00Download as PDF, TXT or read online from ScribdFlag for inappropriate contentMANUAL DE PRÁCTICASINTRODUCCIÓN A MECATRÓNICA
22/10/2008 JUAN ANTONIO MOLINA TONDOPÓ.
Entrenador para Microcontroladores PIC con PBP.
¿Qué es un entrenador? La principal aplicación de un entrenador, es de servir como elemento de soporte a las personas que desean aprender el manejo del microcontrolador PIC (ya sea para los diferentes familias que utiliza el PIC), también ayuda a la persona interesada que pueda realizar los mas variados experimentos desde proyectos sencillos hasta los mas variados y complejos. El siguiente manual contiene ejercicios simples que nos permiten adquirir nuevos conocimientos tanto en la programación y en las conexiones electrónicas (software y hardware). Los ejercicios con los que cuenta el entrenador se encuentran basados en el contenido práctico del programa de la Universidad Politécnica de Chiapas (Ver Anexo A.) incluyendo también ciertos temas para poder ir desarrollando técnicas, habilidades y conocimiento en el campo de la Mecatrónica. En tanto el diseño del hardware contiene los siguientes Módulos: •
.Segundo. si la polaridad es invertida. el LED no trabaja. Ninguna conexión ha sido hecha aún a las entradas/salidas del BASIC Stamp. Hay una zona liza en un costado del LED que debería ser conectada como en la figura 1. esté seguro que la polaridad del LED es la correcta.
Figura 1.2: LED en el Protoboard.2. Muestra el LED y el resistor enchufados en el protoboard. El lado liso también tiene la pata más corta del LED.
4 a) se muestra un diagrama eléctrico es un diagrama “esquemático” del circuito del microcontrolador PIC16F84 con 2 LED’s de salida y su sistema mínimo (Componentes necesarios para que pueda funcionar correctamente el micro).
Bien. en el proto. ¡construyamos el circuito! No conecte la fuente de alimentación aún (la batería de 5 volts o el adaptador externo). serán puestas en los huecos.4 b) Montaje real del cto. debido a que ese hueco está unido con el de la izquierda o el de la derecha.3: Conexiones del Protoboard. En las Figuras siguiente 1. pero dibujado como una foto de cómo se vería el circuito físico. Estos huecos son hechos de forma que tendrán al componente en su lugar. Las líneas negras verticales muestran cómo los huecos están conectados por debajo de la protoboard. Esto significa que usted no tiene que enchufar dos cables en un mismo hueco.
Figura 1.4 b) es el mismo circuito. Es importante entender cómo trabaja el protoboard. La Figura 1.4 a) Diagrama esquemático del circuito. esto hace fácil conectar componentes juntos para construir un circuito eléctrico. las patas del LED y el resistor. Usted puede conectar diferentes componentes enchufándolos dentro de nodos comunes. Fig. El protoboard tiene muchas tiras metálicas que pasan por debajo en fila. Cada hueco es conectado a una de las tiras metálicas que corren por debajo de la plaqueta. Estas tiras conectan los huecos unos a otros.
Figura 1. Realice las conexiones necesarias en el protoboard.Entendiendo la Protoboard.
. Para usar el protoboard. 1.
Presionar el botón para el tipo de gaseosa. o si lo prefiere está descripto en el apéndice B. Así es que necesitamos. GOTO. Un “debugging” es el arte de remover errores (bug).. 8.Conecte el programador a la PC:
1. Insertar $1. entonces la primera parte de ésta sección puede ser un repaso. es muy importante para tener en mente la secuencia de la ejecución que nosotros deseamos. hará lo que nosotros esperábamos. PBP para el PIC. Abrir la gaseosa. 5. Por lo tanto. en realidad no es tan difícil. 6. tiene muchos comandos de donde elegir. nuestro cerebro ejecuta una lista de comandos para realizar esto. un programa es una lista de instrucciones que son ejecutadas en una secuencia determinada por la estructura del programa en sí mismo. Como se mencionó arriba. Para éste experimento usaremos sólo cuatro comandos.. Depurar el programa puede ser una de las experiencias más estresantes de todo el proceso. Agarrar la gaseosa.. Pero esto no es nada aún. Creamos un programa para el microcontrolador escribiéndolo en una PC (utilizando el teclado y el monitor). 7. entonces se “ejecuta” dentro del PIC. por lo tanto. 1. PAUSE. referencia rápida del PBP. ¿Cuántos de ustedes ya saben escribir un programa de computadora? Si lo ha hecho antes. Enchufe el otro extremo del cable de programación en un conector del puerto USB disponible en la PC. Ver salir la gaseosa. 3. Un programa de computadora no es nada más que una lista de instrucciones que una computadora ejecuta (o en nuestro caso un microcontrolador).
. una lista y descripción completas de cada uno de éstos comandos puede ser obtenida en cada comando usado en éstas lecciones. entonces el dispositivo no trabajará (o trabajará mal). Beber la gaseosa. teóricamente más fácil será depurarlo. Estos son: OUTPUT. Este programa (o lista de instrucciones). Por ejemplo. Tal vez algo así. como escribimos el programa. si hemos cometido un error. 2. Esperar que se encienda la luz verde. Y OUT. no se preocupe. al microcontrolador. Enchufe un extremo del cable al programador. cuánto más cuidadoso es en crear el programa. y necesitamos depurarlo. ¡Listo! Ya hemos creado un circuito (“hardware”). luego descargamos este “código” a través del cable de programación. si queremos comprar una gaseosa en una máquina expendedora.. Burp. Si hemos escrito el programa correctamente. 4.00 en la ranura. Pero si es nuevo en el tema. 2. Sin embargo.
Conecte el cable USB a su PC. ¡programemos éste microcontrolador para hacer algo! Conecte el programador.00 en la ranura. Si. De doble click en el icono MicroCode Studio. Los humanos podemos modificar nuestro programa cerebral a medida que la situación transcurra. La pantalla se verá como en la Figura 1. No pasará mucho. ¡porque no tiene gaseosa que abrir!. sin embargo.5:
Figura 1. que es el punto 2. suficiente teoría. Encienda su PC. su cerebro envía el programa siguiente: 1. pero sólo porque ya lo hemos hecho antes. Burp 6. 4. Esperar que se encienda la luz verde. Bien. Insertar $1. 7.Ahora. Doble click sobre el icono MicroCode Studio para hacer correr el software. Ver salir la gaseosa. ahora estar corriendo el programa. 8. 3. ellos son solamente capaces de ejecutar la secuencia exacta de las instrucciones que nosotros les dimos. La pantalla que se abre se verá como ésta. Este es un error de programación (bug). se “colgará” o se detendrá. su cerebro (programa). Beber la gaseosa. pero en un orden incorrecto.5: Software del MicroCode Studio. 5. Presionar el botón para el tipo de gaseosa. porque no puede ejecutar “abrir la gaseosa”. Agarrar la gaseosa. Una vez que usted ha apretado el botón para tipo de gaseosa (botón 1). Enchufe el PIC al programador. esto se ve bastante lógico. El software del MicroCode Studio funciona en Windows XP o Vista. por supuesto imaginarnos cómo obtener la gaseosa.
. sin embargo. Todos los comandos apropiados están ahí. Abrir la gaseosa. y podemos. 2. Los microcontroladores. no tienen la capacidad de adaptar y modificar su propio conjunto de instrucciones. Este es un programa que fue creado para ayudarlo a escribir y compilar programas al microcontrolador PIC.
presione la tecla “F9” notara que el programa fue compilado exitosamente. nos vamos al software del programador que usted utilice y descargamos el programa al PIC. Si todo está correcto.La pantalla. que es parte de su PC El programa que escribiremos. está en blanco. no correrá en su PC. el microcontrolador está manipulando el “mundo exterior”. Escriba el siguiente programa en el editor del MicroCode Studio. por definición.HEX que es este archivo que se necesita guardar en el PIC y que el programador requiere para descargarlo a nuestro microcontrolador. Cada señal del pin del PIC puede ser ajustada como “entrada” o “salida”. Una vez que el programa ha sido recibido.
. Escriba el código en el editor. etc. excepto por unas pocas palabras en el título. Ahora. El primer comando usado es “output”. sino le apareció ningún mensaje. Debido a que nosotros queremos que el microcontrolador encienda y apague un LED. nosotros queremos que B0 sea una salida “output”. el PIC ejecutará las instrucciones exactamente como nosotros las hemos creado.6: Software del MicroCode Studio.6:
Figura 1.). Ahora recuerde. vamos a escribir nuestro programa usando un equipo de “comunicación humano” (monitor. y se verá como en ésta pantalla
output 0 titilar: high 0 pause 1000 low 0 pause 1000 goto titilar Es necesario recordar que primeramente una vez terminado de escribir el programa se guarde el archivo con el nombre que usted quiera pero que valla relacionado con lo que se esta haciendo y una vez compilado se genera un archivo extensión . sino que será descargado o enviado al microcontrolador. Por lo tanto. teclado. Acá es donde usted creará su programa. y se verá como en la figura 1.
que significa que pueden tener un voltaje alto o bajo. Por lo tanto. “1” significa alto y “0” significa bajo. el pin B0 como lo llamamos. el programa “va” a algún punto específico en el programa. debido a que no hay flujo de corriente. Otra forma de referirnos a alto y bajo es “1 y 0”. pueden ser tanto “altos” o “bajos”. Piense en una llave de luz en la pared. usted nunca podrá poner la llave “en medio” de las dos posiciones. En el mundo de las computadoras. B0 está actuando como un interruptor. Comentar o documentar sus programas. hay sólo dos combinaciones: encendida o apagada. cuando el comando “goto” es encontrado. que puede ser cambiado a encendido o apagado bajo un control de programa. En nuestro programa. A continuación hacemos una pausa con “pause 1000” (otro segundo). Ahora. de ésta forma podemos ver si está operando correctamente o no. El siguiente ítem en el programa “titilar:”. (Aclaración: si nosotros buscábamos hacer B1 una salida. Esto es lo que causa que el LED continuamente parpadee. Este es el propósito para el segundo comando: “High 0”. El siguiente comando es ”Low 0”. no es realmente un comando. la lámpara se enciende. es donde el programa irá. El apóstrofe (‘) es usado para decirle al microcontrolador que ignore la siguiente información. o sea 1 segundo. Es el propósito del siguiente comando: “Pause 1000”. los hace más fáciles de seguir o de depurar si hay algún problema. El LED está aún apagado. Es binaria. Por lo tanto necesitamos “aletargar” el programa. lo que hace que el LED se encienda. es sólo para beneficio humano. es una salida. (El programa regresa a la segunda línea cada vez que encuentra el comando “goto titilar”. Es sólo una etiqueta. No importa cuánto insista. Tenga en cuenta que los microcontroladores ejecutan su programa muy rápidamente. una marca encierto punto del programa. Un buen hábito al que conviene acostumbrarse. Este comando hace que el programa espere por 1000 milisegundos. En nuestro ejemplo. Donde sea que esté “titilar”. voltajes en éstos pines. Durante el curso de la ejecución del programa. Si queremos encender el LED necesitamos hacer que B0 vaya alto (que tenga un 1). es “remarremark” (comentar) sus programas. la etiqueta “titilar” está en la segunda línea. Este causará que B0 vaya a nivel alto. cuando la llave está en una posición. esto pasaría demasiado rápido para que pudiéramos verlo.Resultado del primer comando: “output 0” hace B0 una salida. el comando debería haber sido “output 1”). o “1” o “0”. cuando la instrucción “goto titilar” es encontrada. “Goto” (ir) es muy simple de entender. y cuando está en otra posición. Este comando hace que B0 vaya a nivel bajo y apague el LED. el programa salta hacia la segunda línea y lo repite nuevamente. si apagáramos el LED en el siguiente comando. cualquier cosa que esté
. le decimos al programa “ir a titilar”. se apaga. En otras palabras.
luego encienda ambos LED por 0. Cada programa debería ser cargado en el PIC y probado en su protoboard.
1. Haga encender y apagar los LED alternativamente. Luego apáguelo. y viceversa. Encienda el primer LED por 2 segundos. Cuando termine de hacer el programa. ¿Qué significa “debug” (depurar)? 5. en otras palabras. 2. luego apáguelo. Haga que ambos LED se enciendan y apaguen parpadeando al mismo tiempo. ¿Cuál es la diferencia entre hardware y software? 3.5 segundos. Espere 2 segundos. y luego repetir. Espere 2 segundos y luego encienda el segundo LED por 1. Encienda el primer LED por 1. Espere 5 segundos y encienda el segundo LED por 1 segundo y luego apáguelo. luego apagarlo por 2 segundos.5 segundos. y pruébelo.
. ¿En qué se diferencia un microcontrolador de una computadora? 2. El siguiente programa debería encender el LED en B0 por 2 segundos. no es parte del código de la instrucción. para hacer lo siguiente. cárguelo en la PC (como lo ha hecho antes).
1.5 segundos encendido y 2 segundos apagado. 3. 4.escrita en una línea del programa después de un apóstrofe. Repita ésta última acción de 0.5 segundos y apáguelos por 2 segundos. ¿Por qué un microcontrolador es como nuestro cerebro? 4. luego apáguelo. mientras un LED está encendido el otro está apagado. Espere 3 segundos y repita. ¿Cuántos errores (bugs) hay en el programa y qué correcciones son necesarias? output 0 titilo: out0 = 0 pause 200 out1 = 1 pause 2000 goto titilar Reescriba el programa de la pregunta 5 anterior.
Los programadores se especializan en escribir (código de control) para teléfonos celulares. Un programa de microcontrolador es solo tan inteligente como el que lo programó.¿Qué aprendí?
Complete las siguientes oraciones con las palabras de la lista. Los microcontroladores deben tener dos componentes trabajando juntos. monitor. juguetes o incluso equipamiento industrial. Aeromodelos. Incluso cuando no se ven como una computadora. desde robots a tostadores
La gran versatilidad de los microcontroladores está en que pueden ser programados para controlar cualquier cosa que la mente humana pueda concebir. El segundo componente es el software. (¿Quién alguna vez se imaginó que un juguete tendría una computadora incluida en su interior?) Los Microcontroladores consisten de hardware y _____________. etc. son sólo ejemplos. porque pueden ser reutilizados. Muchos microcontroladores son versátiles y fáciles de usar. el programa del microcontrolador no se__________ por sí mismo. controladores de casas inteligentes o sistemas de colección de datos climáticos remotos operados por batería.
. Al contrario que el cerebro humano. una computadora que está diseñada para interactuar con humanos (con teclado. donde es realmente ________________ (“run”).______________. y pueden usarse en un sinnúmero de productos e innovaciones. Muchas personas pasan su vida diseñando hardware para microcontroladores para una infinidad de variedad de productos. Creamos programas en una PC.) y luego _____________ el programa en un microcontrolador. ni cambiará el orden de las instrucciones del programa. para que el dispositivo funcione. El primer componente es el hardware (el circuito). Los___________________ están a nuestro alrededor. El microcontrolador ejecutará un conjunto de instrucciones en la misma____________ en la que fue creado.
Piense con sus amigos en un desarrollo para comenzar a fabricar con perspectivas comerciales.. Usted puede ayudar a desarrollarlos y tal vez inventar el próximo “gran producto”.¿Cómo puedo aplicarlo?
La ventaja de los microcontroladores (y algo que usted puede considerar como una carrera futura) es que el mundo de los dispositivos inteligentes se está expandiendo a una velocidad increíble y no muestran ningún signo de disminuir su velocidad.
. ¡la tecnología es la misma. …¿Quién sabe?
A continuación se muestra varios ejemplo para que se practique y aprendan a utilizar diferentes comandos. sólo que aplicada diferente! Mire alrededor suyo y piense cómo podría usar un microcontrolador para crear una luz de seguridad para su bicicleta.. o simplemente divertirse construyendo cosas. A medida que la tecnología avanza en todas las áreas de nuestras vidas. nos vemos rodeados por un creciente número de aparatos avanzados tecnológicamente. las luces del auto. un proyecto de arte que use la luz para interactuar con los espectadores.
0 PAUSE 1000 goto inicio end
Inicio: High PORTB. Bueno aquí esta el primer ejemplo y el más sencillo y por donde aprendí.0:
Varias formas para hacer lo mismo: inicio: High 0 pause 1000 low 0 pause 1000 goto inicio end TRISB. prender y apagar un led conectado a portb.
. Led intermitente en RB0.0 = 1 pause 1000 PORTB.0 = 0 pause 1000 goto inicio end inicio: TOGGLE PORTB.ENCENDER Y APAGAR UN LED.0 pause 1000 goto inicio end led var PORTB.0 pause 1000 low PORTB.0=0 inicio: PORTB.0 inicio: high led pause 1000 low led pause 1000 goto inicio end
Cuando se quiera cambiar/conmutar el estado de una línea que esté configurada como salida es más fácil usar instrucción TOGGLE.
239].219.207.135.[191.num portb=num pause 500 next vec goto prog END
.230.255.253.134.237.end
vec var byte num VAR BYTE TRISB = 0 prog: for vec=0 to 9 lookup vec.
255.219.134.253.237.Un contador ascendente y descendente
vec var byte num VAR BYTE TRISB = 0 prog: for vec=0 to 9 lookup vec.230.219.253.239].207.num portb=num pause 500 next vec goto prog END
.237.207.255.230.239].[191.134.[191.135.135.num portb=num pause 500 next vec for vec=9 to 0 step -1 lookup vec.
0.0.1 PAUSE 5 next for a = 2500 to 1 step-1 pwm porta.el ancho de pulso sera de dato a.AQUI LES DEJO ALGUNOS EJEMPLOS SENCILLOS DE PWM TRISB=%00000000 PortB=0 cont VAR word X1: forcont=1 to 255 PWM PortB.a.1 PAUSE 5 next goto x1 'un ancho de pulso en un porcentaje incremental.el ancho de 'pulso sera de cont.a.0. el 'cual representar
. el cual representar
'la salida de pwm esta en el port.1.1 Next goto X1 OTRO EJEMPLO a VAR word trisa= %00000000 trisb= %11111111 x1: for a = 1 to 2500 pwmporta.cont.0. 'salidas 'entradas
'la salida de pwm esta en el port.
oímos. El Experimento 2 se centrará en cómo podemos diseñar un sistema microcontrolado que pueda cambiar sus salidas (outputs). curvamiento y compuestos químicos (tales como monóxido de carbono). ¼ watt (marrón. Como aprendimos en el experimento 1 (¿qué es un microcontrolador?). naranja) (1) Una batería de 9 volts o adaptador (6) Seis cables conectores (1) Un programa editor de MicroCode Studio Hay una infinita variedad de sensores que podemos conectar al Microcontrolador. Esto quiere decir que contienen una cierta lista de instrucciones (llamada programa o código).
Tomar decisiones. etc. tocamos. calor. Nuestro cerebro lo hace todo el tiempo. Este experimento incluye un pulsador (un tipo de sensor) y un LED (un dispositivo de salida). negro.
(1) Un cable de programación (2) Dos LED (diodos emisores de luz) (2) Dos pulsadores (1) Un PIC16F84 (1)Programador ( 2) Dos resistores de 470 ohm. los microcontroladores actúan como nuestro cerebro. ¼ watt (amarillo.
Partes requeridas. Tomamos decisiones basándonos en lo que vemos.EXPERIMENTO 2. Ellos manipulan el mundo exterior basados en “entradas” (inputs). Los microcontroladores son dispositivos programables.
. dependiendo de qué tipo de entradas (inputs) digitales detecta.
Sensor: Un sensor es un dispositivo de entrada usado para detectar o medir presencia física. marrón) (2) Dos resistores de 10k ohm. temperatura. violeta. Los ejemplos incluyen sensores que detectan luz. que dice qué hay que hacer bajo ciertas circunstancias.
Asegúrese que haya una resistencia de 220 ohm en serie con cada LED. Debido a que este experimento usa dos valores diferentes de resistores.000 ohm (10K ohm) conectado al “lado alto” de cada pulsador (a los 5 volts). y que haya un resistor de 10.0 = 0 then high 1 else low 1
. Leyendo las bandas con el código de colores. y ambos se ven parecidos. ¿cómo los puedo separar?. Una vez que usted tiene todos los componentes instalados en el área del prototipo.
TRISB. mire el Apéndice C para averiguarlo. Escriba el siguiente programa:
Este circuito tiene un tipo de sensor (el pulsador) y un tipo de dispositivo de salida (el LED). Si usted no conoce cómo leer el “código”.¡Constrúyalo!
Recuerde que el LED debe ser conectado con el lado liso conectado a los pines de salida P0 y P1.0=1 inicio: if PORTB.
Cuando nuestro programa eventualmente encuentre el comando “goto inicio”. Ahora analicemos paso por paso nuestro programa: Nuestro primer comando. Antes de hacer funcionar este programa. verá un valor de 0 o 1. El campo de la electrónica está generalmente dividido en dos diferentes dominios “del tipo de señal” –Digital y Analógico. Recuerde del Experimento 1. Sensores para éste tipo de aplicación. por lo tanto no hará nada. y el programa se continuará ejecutando en el siguiente comando (en este caso. corra el programa. Una vez que B0 se convierta en “0” entonces las condiciones para este comando se cumplen y el programa hará que B0 se ponga en alto. saltará hasta ella. La instrucción High 1. Analógico a Digital en un experimento futuro. es una etiqueta (simplemente un marcador o puntero a cierto lugar de su programa). y luego continuará ejecutando el programa desde ese punto. El programa lo ayudará a encontrar errores de sintaxis cuando corra el programa y no se ejecute adecuadamente aparecerán los errores indicándoles en que línea e instrucción se encuentra el error. Este es un sensor de tipo digital. el programa buscará la etiqueta “inicio”. entonces este comando hará que B1 se apague. el LED debe prender. por lo tanto el led se enciende. cuando el microcontrolador lee el estado de B0. Si (cuando el microcontrolador lo revisa) es un “1”. Por lo tanto. El microcontrolador está sensando
. Medir el nivel del volumen de un amplificador de audio. “goto inicio” – lo que causa que el programa salte al principio y continuamente revise que B0 se convierta en un “0”). Nosotros buscamos que B0 sea un “0”. luego hace que el programa regrese y revise el estado de B0 nuevamente y “repita todo nuevamente”.0=0 then ” le dice al microcontrolador que revise el estado del pin llamado “B0”. a un valor digital que el microcontrolador pueda entender. que un comando como “inicio:” realmente no es un comando. fija el registro de salida de B1 a un valor igual a “1”. convierten una medición. ¿puede usted decir qué va a hacer? El programa “tomará una decisión” basado en qué botón es presionado. o “alto” (high) por lo tanto el LED está encendido. mientras usted presiona el pulsador. beberá aprenderse la sintaxis de cada instrucción para ir adquiriendo cada vez mayor experiencia para resolver los diferentes errores que se le presente.endif goto inicio end
Ahora. El comando “if PORTB. cualquier valor distinto de 0 y 1 es considerado inválido. En electrónica digital (binaria).0=1 hace el pin B0 una entrada (“input”). Nuestra entrada del pulsador es tanto un “0” o un “1” (abierto o cerrado). Revise nuevamente su programa y asegúrese que ha escrito todo correctamente. TrisB. Una vez que cualquier botón es presionado. Si su programa está trabajando apropiadamente. lo que realmente está haciendo es leer el valor digital de ese pin. Exploraremos este mundo fascinante de la Conversión. el programa saltará a la rutina apropiada. por ejemplo de 10 cm. son ejemplos de entrada analógica. Cuando un microcontrolador revisa el estado de un pin en particular.
Una variable nos permite almacenar cierta pieza de información (ingresada ahora). Declarar una variable simplemente es una instrucción en su programa que le avisa al microcontrolador el nombre de la variable y qué tan grande es.
.una entrada.then”. se fija en la toma una decisión basada en el estado de un pin. tomando una decisión. Las variables deben ser “declaradas” antes de ser usadas en un programa. y luego creando una salida. para un análisis posterior. El comando “if . Escribamos ahora varios programas diferentes en un programa nuevo.
0 = 1 then high 1 else low 1 endif goto inicio end
.El mismo ejemplo pero esta ves con una resistencia de pull down: TRISB.0=1 inicio: if PORTB.
1=0 then cont=cont/2 PORTB=cont if cont<=1 then cont=256 endif
i var byte cont var word cmcon=7 TRISB=0 TRISA=%00000011 cont=1 PORTB=cont inicio: if PORTA.0=0 then cont=cont*2 PORTB=cont if cont>=256 then cont=1 PORTB=cont endif pause 200 else cont=cont endif if PORTA.
191.134.219.posee dos pulsantes que sirven para subir y bajar el conteo:
vec var byte num VAR BYTE TRISA = %00000011 TRISB = 0 cmcon=7 vec=0 PORTB=64 inicio: if PORTA.219.239].239].237.191.Contador con Pulsantes Este es un contador ascendente y descendente.0=0 then vec=vec+1 lookup vec.135.237..[0.255.255.num portb=num if vec<=1 then vec=11 endif pause 200 endif goto inicio
.230.230.1=0 then vec=vec-1 lookup vec.num portb=num if vec>=10 then vec=0 endif pause 200 endif if PORTA...[0.253.207.253.135.134.207.
255.num portb=num
.191.239].1=0 then flag=0 endif if flag=1 then gosub subir endif if flag=0 then gosub bajar endif goto inicio Subir: vec=vec+1 lookup vec.237.207.134..230..
vecvar byte num VAR BYTE flag var byte TRISA = %00000011 TRISB = 0 cmcon=7 vec=0 flag=1 inicio: if PORTA.219.CONTADOR CON PULSANTES A diferencia del anterior que el conteo se la hacia cuando se pulsaba aqui es conteo es automatico y los pulsantes sirven para elegir si se quiere que el conteo sea ascendente o descendente.0=0 then flag=1 endif if PORTA.253.135.[0.
237.207.if vec>=10 then vec=0 endif pause 200 return Bajar: vec=vec-1 lookup vec.253.255.135.191.134.[0.230.num portb=num if vec<=1 then vec=11 endif pause 200 return end
.219.239].
¿Cómo toma una decisión un microcontrolador? 2. 5.0 output portb. 4.Preguntas
1.0=0 then titilar if porta. Escriba el código para declarar una variable llamada “status”. La variable podría valer tanto “0” como “1”. 3. Agregue comentarios apropiados al siguiente programa: output portb.0 input porta.1 input porta.1=0 then dobletitilar goto revisar titilar: low 0 pause 200 high 0 pause 200 goto revisar doble_titilar: low 0 low 1 pause 200 high 0 ____________________________ ____________________________ ____________________________ ____________________________ ____________________________ ____________________________ ____________________________ ____________________________ ____________________________ ____________________________ ____________________________ ____________________________ ____________________________ ____________________________ ____________________________ ____________________________ ____________________________ ____________________________ ____________________________
. ¿Qué es un sensor y por qué un microcontrolador necesita uno? Mencione algunos tipos diferentes de sensores.1 revisar: if porta. Defina una variable y describa cómo puede ser usada en un programa.
escriba comentarios en su programa mostrando que cambios haría para invertir el orden en que presionaría los interruptores. 4. mientras el pulsador P2 está presionado. Escriba un programa (completo. Si ningún pulsador es presionado. el LED B1 es apagado cuando el pulsador P1 es presionado (pero el LED B0 aún sigue titilando). nuestro programa puede determinar que tipo de respuesta es la apropiada. Las variables pueden tener hasta 32 caracteres de longitud. _______________ Son usadas para retener la información. Escriba un programa que haga titilar los LED (cada . pero se apaga cuando el LED B0 está titilando. podrían fácilmente haber sido los interruptores de las puertas de un ascensor – aquellos que evitan que seamos aplastados al cerrarse las puertas. Si queremos controlar el estado (alto o bajo) de un_________ en particular. Aunque los interruptores que usamos en este experimento fueron______________ presionándolos. Las variables pueden ser _____________. Luego.
Complete las siguientes oraciones con las palabras de la lista. entonces fijamos la variable como un simple “bit”. con comentarios) que haga titilar al LED B0 (cada ½ segundo). Cuando el botón no está presionado. Escriba un programa que haga titilar alternadamente los LED cada ½ segundo. darle un
. Usando comandos PBP tales como “_____________”. y luego de que P1 sea presionado. Escriba un programa que haga titilar ambos LED (cada 1. Es importante recordar cuando usamos variables. mientras esté presionado el pulsador P2.high 1 pause 200 goto revisar
1. 2.2 segundos) cuando cualquier pulsador es presionado. 3. en 4 tamaños diferentes. ambos LED están apagados. o inicializadas (“set up”). Hay una variedad infinita de sensores que pueden ser conectados al PIC. pero solamente después de que P2 haya sido presionado y liberado. los LED están encendidos y si ambos pulsadores son presionados.2 segundos) cada vez que el pulsador P2 es presionado. el LED B1 está encendido. Microcontroladores necesitan tan _______ para saber que está pasando en el “mundo exterior”. permitiéndole al programa obtener los datos ahora (tal vez de varias entradas diferentes). y más tarde tomar decisiones en el momento apropiado. Luego.
más aplicaciones verá para la tecnología de sensores y microcontroladores.
. computado).nombre que tenga relación con el dato que almacena. Cuanto más mire a su alrededor. Cualquier sistema microcontrolador (o para el caso. Si a usted le gusta más trabajar con “hardware”. depende de las entradas digitales para tomar decisiones correctas. l/0 pin declaradas entradas (o sensores) if in1=0 programa activados debug (depurar) variables La verdadera importancia de los microcontroladores es su habilidad para tomar decisiones basándose en las entradas. La longitud del nombre no tiene influencia en que tan rápido su _________ se ejecuta. pero muchos tipos de situaciones del “mundo exterior” son analógicas por naturaleza. pero un nombre “muy descriptivo” hace mucho más fácil de ______ su programa. Mucha gente se especializa en el diseño de sensores que se comunican con microcontroladores. en lugar de escribir programas (crear software). Las entradas a los microcontroladores. Es importante recordar que las decisiones del microcontrolador son solamente tan buenas como el programa que están ejecutando. Hay cientos de tipos diferentes de sensores en el Transbordador Espacial y en los satélites que él pone en órbita. deben tener un formato digital. y de la calidad de los sensores de entrada. éste podría ser un campo muy excitante y aún desafiante. La tecnología de los sensores es una de las áreas más desafiantes de la electrónica.
usted podría detectar cuándo alguien atraviesa una puerta. si alguien está saliendo. que detecta la presencia de un objeto. usando dos tonos. Usando un sensor de proximidad. si alguien está entrando. usted podría determinar en qué dirección la están atravesando. Usando tres sensores. y con el otro.
. Cada vez que el timbre suena. podríamos saber con uno. el dueño mira y se fija quién entró.¿CÓMO PUEDO APLICARLO? Muchas tiendas tienen una especie de “timbre” en la puerta. que suena cuando uno la atraviesa. (similar a un botón que está siendo presionado). Entonces.
2 Distingue las ramas de la ingeniería 1. tres interruptores y cuatro sensores 2.1 Identifique el funcionamiento de los motores de corriente directa.3.1 Identifique el funcionamiento básico de un tren de engranes.1 El alumno distinguirá el concepto de ingeniería. una guía lineal.3 Identifica al menos una función.4 Distingue un producto y un sistema mecatrónico 2. identificara su programa de formación y campo ocupacional.5.1Identifique el funcionamiento básico de un elemento de al menos dos tipos de botones pulsadores.1. ciencia y disciplina 1. Introducción a la Ingeniería
1.4 El alumno identificara el funcionamiento y características de los elementos que permiten el movimiento a las partes mecánicas de un sistema mecatrónico 2.1. 2.7. y c. una rueda dentada y trinquete y de un sistema de transporte (banda trasportadora) 2. una banda y polea.2 Identifique el funcionamiento básico de los circuitos de control basados en relevadores y controladores lógicos programables 2.2.3. servomotores y a pasos 2. dos competencias y cinco capacidades del ingeniero mecatrónico. 2.2. identificando sus perfiles profesionales y campos ocupacionales Identifique los conceptos de ingeniería 1.2 Identifique los elementos que conforman un sistema mecatrónico 2.7 El alumno identificara el funcionamiento y características de los dispositivos que entregan energía a los sistemas mecatrónicos.3. 2. dispositivos programables.1 Identifique el funcionamiento básico de los circuitos digitales basados en compuertas lógicas. conceptos y tendencias de la mecatrónica con la ingeniería 1. analizara su funcionamiento al compararlo con las partes de un cuerpo humano 2.6 El alumno identificara el funcionamiento y características los dispositivos que acoplan las señales desde y hacia el controlador.1.1 El alumno identificara los elementos básicos de un sistema mecatrónico. 2.
2. microprocesadores y microcontroladores 2. de corriente alterna.a.1 Relacione los antecedentes.4 Distingue el campo ocupacional de un ingeniero 1.
.3 Identifique el funcionamiento de al menos dos tipos de lámparas indicadoras y desplegados.3 El alumno identificara el funcionamiento y características de los elementos que ejecutan la acción de control de un sistema mecatrónico 2.6.1 Identifique el funcionamiento básico de los circuitos acondicionadores de señal y de los circuitos manejadores para actuadores.2 Identifique el funcionamiento de al menos dos electroválvulas 2.1 Identifique el funcionamiento básico de las etapas de una fuente de alimentación c. un tornillo auto embalado.1 Ejemplifique los conceptos de sistema y sinergia 2.4.1. 1.2 El alumno identificara el funcionamiento y características básicas de los elementos que proporcionan información del entorno en sistema mecatrónico 2.d.2.5 El alumno identificara el funcionamiento y características de los dispositivos que controlan un sistema mecatrónico.1.1.3 Compare los elementos de un sistema mecatrónico con las partes del cuerpo humano 2.2.2 El alumno conceptualizara el término de ingeniería y del análisis del plan de estudios.1 Distingue los conceptos de técnica.1.1.5. 2.Apéndice A:
1.3 Distingue el perfil profesional de un ingeniero 1.2 Relacione el programa (plan de estudios) de formación con el perfil profesional y campo ocupacional 1. tecnología.
.ENDASM BRANCH BRANCHL BUTTON CALL CLEAR COUNT DATA DEBUG DISABLE DTMFOUT EEPROM ENABLE END FOR.GOTO) BRANCH fuera de pagina(BRANCH largo) Anti-rebote y auto-repeticion de entrada en el pin especificado Llamada a subrutina de ensamblador Hace cero todas las variables Cuenta el numero de pulsos en un pin Define el contenido inicial en un chip EEPROM Señal asincronica de salida en un pin fijo y baud Deshabilita el procesamiento de ON INTERRUPT Produce tonos en un pin Define el contenido inicial en un chip EEPROM Habilita el procesamiento de ON INTERRUPT Detiene la ejecucion e ingresa en modo de baja potencia Ejecuta declaraciones en forma repetitiva Produce hasta 2 freuencias en un pin Llama a una subrutina BASIC en la etiqueta especificada Continua la ejecucion en la etiqueta especificada Hace alto la salida del pin Entrada serial asincronica(hardware) Salida serial asincronica(hardware) Lee bytes de dispositivo I2C
Graba bytes en dispositivo I2C Ejecuta declaraciones en forma condicional Convierte un pin en entrada Asigna el resultado de una expresion a una variable Muestra caracteres en LCD Busca un valor en una tabla de constantes Busca un valor en una tabla de constantes o variables Obtiene un valor constante de una tabla Obtiene un valor constante o variable de una tabla Hace bajo la salida de un pin Apaga el procesador por un corto periodo de tiempo Ejecuta una subrutina BASIC en un interrupt Convierte un pin en salida Demora (resolucion 1mseg..Apéndice B:
@ ASM. a ON...NEXT FREQOUT GOSUB GOTO HIGH HSERIN HSEROUT I2CREAD
I2CWRITE IF.ELSE..THEN..ENDIF INPUT (LET) LCDOUT LOOKDOWN LOOKDOWN2 LOOKUP LOOKUP2 LOW NAP ON INTERRUPT OUTPUT PAUSE
Inserta una linea de codigo ensamblador Inserta una seccion de codigo ensamblador GOTO computado(equiv.)
. F: rotar byte a la izquierda una vez next i El atajo @ tambien se puede usar para incluir rutinas en lenguaje ensamblador en otro archivo.10
5. ASM. Este atajo se puede usar libremente para unir codigo ensamblador con declaraciones PBP..WEND WRITE XIN XOUT
5.10 Salida X .PAUSEUS PEEK POKE POT PULSIN PULSOUT PWM RANDOM RCTIME READ RESUME RETURN REVERSE SERIN SERIN2 SEROUT SEROUT2 SHIFTIN SHIFTOUT SLEEP SOUND STOP SWAP TOGGLE WHILE. La página del registro no debe ser alterada usando @ Vea la seccion de programacion del ensamblador para mayor informacion.1. provee un atajo para insertar una declaracion en lenguaje ensamblador en un programa PBP. Por ejemplo @ Include “fp.) Lee un byte del registro Graba un byte en el registro Lee el potenciometro en el pin especificado Mide el ancho de pulso en un pin Genera pulso hacia un pin Salida modulada en ancho de pulso a un pin Genera numero pseudo-aleatorio Mide el ancho de pulso en un pin Lee byte de un chip EEPROM Continua la ejecucion despues de una interrupcion Continua en la declaracion que sigue al ultimo GOSUB Convierte un pin de salida en entrada o uno de entrada en salida Entrada serial asincronica (tipo BS!) Entrada serial asincronica (tipo BS2) Salida serial asincronica (tipo BS1) Salida serial asincronica (tipo BS2) Entrada serial sincronica Salida serial sincronica Apaga el procesador por un periodo de tiempo Genera un tono o ruido blanco en un pin Detiene la ejecucion del programa Intercambia los valores de dos variables Hace salida a un pin y cambia su estado Ejecuta declaraciones mientras la condicion sea cierta Graba bytes a un chip EEPROM Entrada X . @ @ declaracion Cuando se usa al comienzo de una línea.2.ENDASM ASM
.asm “ @ resetea a 0 la página del registro antes de ejecutar la instrucción en lenguaje ensamblador. I var byte Rollme var byte For i = 1 to 4 @ rlf _rollme.
Dene ser inicializada a 0 antes de ser usada y no ser usada en cualquier lugar del programa.0) Down Estado del pin cuando se oprime el pulsador ( 0 . Si no está seguro de esto. incluyendo comentarios. THEN que usar el comando BUTTON. En general. Rate. Este es el tamaño máximo para el fuente actual. Para cambiarlo a otro valor use DEFINE.. Se pueden usar hasta 256 etiquetas en un BRANCH. 0. basándose en una variable indexada.ENDASM Estas instrucciones le dicen a PBP que el codigo entre estas dos líneas esta en lenguaje ensamblador y no debe ser interpretado como declaraciones PBP. BRANCH B4. cat. cat. Si es 0. Si está seguro que las etiquetas están en la misma página que el BRANCH ó si el microcontrolador no tiene más que una página de código (2K ó menos de ROM).. si Index es 1. 0 . fish] ´ igual que: ´ if B4=0 then dog (goto dog) ´ if B4=1 then cat (goto cat) ´ if B4=2 then fish (goto fish)
5.}] BRANCHL trabaja en forma similar a BRANCH. Etiqueta Lee Pin y opcionalmente ejecuta anti-rebote y auto-repetición.
´ goto notpressed if button not pressed on Pin2 BUTTON PORTB. etiqueta. El tamaño máximo para una sección de texto ensamblador es 8 K. Es similar al ON. . Si Index es mayor ó igual al número de etiquetas. no el código generado... es más fácil leer el estado del pin con un IF. 2..La ejecucion comienza en la etiqueta especificada. fish] ´ igual que: ´ if B4=0 then dog (goto dog) ´ if B4=1 then cat (goto cat) ´ if B4=2 then fish (goto fish)
5. Pin. etiqueta . o una variable que contenga un número 0 . si Index es 0.. BUTTON BUTTON. BRANCHL BRANCHL Index. divídalo en múltiples secciones ASM.5. Index selecciona una etiqueta de una lista . no se efectua anti-rebote ni auto.}] Causa que el programa salte a una posición diferente. Etiqueta debe estar en la misma página de código que la instrucción BRANCH. Las principales diferencias son que puede saltar a una etiqueta ubicada en otra página de código y que genera un código dos veces mayor en tamaño al de BRANCH....15 (p. no se toma ninguna acción y la ejecución continúa con la declaración siguiente al BRANCH.255).15. La ejecución comienza en esta etiqueta si es cierto Action.255) Variable con tamaño de byte usada internamente para conteo de demoras y repeticiones. si Index es 0. notpressed BUTTON necesita ser usado dentro de un loop para auto-repetición para funcionar adecuadamente.Por ejemplo. Down.. no se toma ninguna acción y la ejecución continúa con la declaración siguiente al BRANCHL. Index selecciona una etiqueta de una lista . b2. el programa salta a la primer etiqueta especificada en la lista. Estado del pulsador a ser actuado. pero no auto-repetición. Si el bloque de texto es mayor. Se pueden usar hasta 128 etiquetas en un BRANCHL.ej. setea bit 0 en PORTA Bcf PORTB.4..3. [etiqueta {. haciendo que el programa salte a una localización determinada. 100. basada en una variable indexada. BRANCH BRANCH index. BUTTON permite eliminar rebotes.. use BRANCHL. Por ejemplo.
....GOTO de otros BASIC. salta a la segunda y así sucesivamente. PORTA ..Si es 255 se eliminan rebotes. La demora por defecto es 10 ms. Se puede usar estas dos instrucciones libremente para mezclar código ensamblador con declaraciones PBP.La ejecucion comienza en la etiqueta especificada .. salta a la segunda y así sucesivamente. Bvar. Debe asegurarse que el registro de página sea 0 antes de ENDASM si el código de ensamblador lo ha alterado. [etiqueta {. ´setea la demora de anti-rebote a 50 ms DEFINE BUTTON_PAUSE 50 BUTTON_PAUSE debe estar en mayúsculas. si Index es 1. demorando la ejecución de un programa por un período de milisegundos para permitir que los contactos se asienten. 0. Pin automáticamente se toma como entrada. ASM resetea a 0 el registro de página.repetición . Valor de auto-repetición (0. BRANCHL B4.. Pin debe ser una constante. B0) ó un número de pin (p. ASM Bsf PORTA. ENDASM o incluyalo en un archivo separado. el programa salta a la primer etiqueta especificada en la lista... Action.1) Contador de ciclos antes de que comience la auto-repetición (0. Si Index es mayor ó igual al número de etiquetas.ej.. Delay. Vea la sección de programación de ensamblador para más información. 10. 0. setea bit 0 en PORTB ENDASM 5.. use BRANCH para minimizar el uso de memoria.. [dog.0. [dog.
posición de marcadores. Constante puede ser una constante numérica ó una sarta de constantes. 1= invertido DEFINE DEBUG_MODE 1 DEBUG asume un oscilador de 4 Mhz.. Period.} constante {. los datos permanecen intactos aún cuando se quite la energía. Puede ser usada para enviar información de depuración (variables. CLEAR CLEAR Coloca en cero todos los registros en cada banco. ó una variable que contenga un número de 0 a 15 (p.6. De esto.a un programa terminal como HyperTerm. para pausar 1 milisegundo entre la transmisión de cada caracter: DEFINE DEBUG_PACING 1000 Si bien los chips convertidores de nivel RS-232 son comunes y económicos. B0).IF PORTB.´ cuenta el número de pulsos en Pin1 en 100 ms COUNT PORTB. DEBUG DEBUG item {. Solo se guarda el byte menos significativo del valor numérico. 30 ´ asignar una etiqueta a un word en la próxima ubicación dlabel DATA word $1234 ´ guarda $34.001 a 65.1. etc). Var Cuenta el número de pulsos en un Pin. W1 ´ determinar la frecuencia en un Pin COUNT PORTA.} Envia uno ó más items a un pin predefinido con un baud rate predefinido en formato standard asincrónico. 20. W1 contar por 1 segundo Serout PORTB.10. DATA DATA {@ location. Si un signo (#) precede a un item. Los pin y baud rate seriales son especificadas usando DEFINEs: ‘Set Debug pin port DEFINE DEBUG_REG PORTB ‘Set Debug pin bit DEFINE DEBUG_BIT 0 ‘ Set Debug baud rate DEFINE DEBUG_BAUD 2400 ‘ Set Debug mode: 0= cierto.20 y 30 comenzando en la posición 5 DATA @5. Usando CALL se puede acceder a una etiqueta en una sección de lenguaje ensamblador. 0-15. la tasa de transmisión de las instrucciones de DEBUG podrían presentar los caracteres demasiado rápidamente al dispositivo receptor. 10. $12 ´ saltear 4 posiciones y guardar 10 ceros DATA (4). CALL
Ejecuta la subrutina ensamblador llamada etiqueta. es de 25 Khz con un oscilador de 4 Mhz y de 125 Khz con un oscilador de 20 Mhz si la frecuencia tiene un ciclo útil del 50 % (los tiempos altos son iguales a los bajos). Se puede usar TTL invertido (DEBUG_MODE =1) Se sugiere un resistor limitador de corriente (se supone que RS-232 es tolerante a los cortocircuitos). No se agregan terminadores ni se completa el largo. Un DEFINE agrega una demora de caracteres para las transmisiones seriales de salida. denominada _pass
5. las variables deben ser colocadas en un estado inicial apropiado por el programa. Si existe un valor location este indica la dirección de comienzo donde se almacenará la información. para futuras referencias del programa. CLEAR ´ Coloca todas las variables en cero
5.9. Esto permite un tiempo adicional entre los caracteres a medida que son transmitidos. constante} Guarda constantes en un chip EEPROM cuando este dispositivo se programa por primera vez. La principal diferencia entre GOSUB y CALL. en las direcciones siguientes. CALL pass ´ ejecuta la subrutina ensamblada. gracias a la implementación de corriente RS-232 y a las excelentes especificaciones I/O del micro PIC. Los datos se guardan dentro del EEPROM una sola vez en el momento en que se programa el micro controlador. incluyendo las del sistema.Esto no se hace automáticamente al comenzar un programa en PBP. lo que es inaccesible mediante PBP.Dado que el EEPROM es una memoria no-volatil.. asegurese de DEFINE el seteo de OSC al valor de oscilador deseado. En algunos casos. la mayoría de las aplicaciones no requieren convertidores de nivel. 2 = 1 THEN notpressed
5. Las sartas se guardan como bytes consecutivos de valores ASCII. se infiere que la mayor frecuencia de pulsos que puede ser contada. 1000. es que con ésta última no se chequea la existencia de etiquetas hasta el momento de ensamblar. [W1] 5. y no usando CLEAR. ´ guardar 10. se envía serialmente la representación ASCII para cada dígito. DATA solo funciona con micro controladores con EEPROM incorporado como el PIC16F84 y PIC16C84 .ó un numero de pin.7. DEBUG es una de varias funciones seriales asincronicas pre-construidas. VCOUNT chequea el estado de Pin mediante un loop y cuenta las transiciones de bajo a alto. Sigue la frecuencia del oscilador basado en DEFINE OSC. usando 8 bits de datos. automáticamente se convierte en salida.Por lo general. También se puede usar cuando se desee salida serial sobre un pin determinado y con un baud rate determinado. 0 (10) 5. item .0. Para mantener el tiempo apropiado del baud rate con otros valores de osciladores. Coloca en cero todas las variables. La resolución de Period está dada en milisegundos. Una etiqueta opcional se le puede asignar a la dirección de comienzo. WRITE se usa para colocar los valores en el EEPROM en el momento de ejecución. excepto que se use el modificador WORD. cuando está generando su tiempo de bit.535 microsegundos (.
. Pin debe ser una constante. 100. Pin es automáticamente colocado como entrada.ej. durante un período Period. DEBUG soporta los mismos modificadores de datos que SEROUT2. no cada vez que se ejecuta el programa. N2400. sin paridad y con 1 bit de parada (stop bit) (8N1)… El pin. Por ejemplo. como sucede en BASIC Stamps. Es la más pequeña de las rutinas seriales generadas por software. La demora de caracter DEFINE permite un atraso de 1 a 65.8. Con un oscilador de 20 Mhz chequea el estado cada 4 us.2. la primer declaración de DATA comienza a almacenarse en la dirección 0 y las declaraciones siguientes. Normalmente se usa GOSUB para ejecutar una subrutina PBP. Si se omite el valor opcional location. COUNT COUNT Pin. y guarda el resultado en Var.535 milisegundos) entre cada carácter transmitido. Con un oscilador de 4 Mhz chequea el estado del pin cada 20 us.
que puede ser una variable de cualquier tipo. EEPROM solo trabaja con micro controladores con EEPROM incorporado como el PIC16F84 y PIC16C84. END END Detiene la ejecución del proceso y entra en modo de baja potencia . los datos permanecerán intactos aún sin alimentación. y los Tones 12 . Las sartas son guardadas como bytes consecutivos d valores ASCII.16. El valor de Start se asigna a la variable índice. 30 comenzando en la dirección 5 5. 10 5. aunque será muy difícil de filtrar y tendrá muy baja amplitud.} [constante {. STEP.14. no cada vez que se ejecuta el programa.15..15 corresponden a las teclas extendidas A -D. N2400. [ # i. Constante puede ser una constante numérica ó una sarta de constantes. END 5. Dado que el EEPROM es una memoria no volátil. Se ejecuta el Body. DISABLE ‘Deshablita interrupciones en el handler Myint: led = 1 ‘enciende el LED cuando es interrumpido Resume ‘Vuelve al programa principal Enable ‘ENABLE interrumpe después del handler
5. Tone 10 es la clave *. ´ enviar DTMF tones para 212 en Pin1 DTMFOUT PORTB. FOR. El valor de Inc es sumado a (ó restado si se especifica “-“) Counr. usando una variable como contador. Vea ON INTERRUPT para más información. Solo se guardan los bytes menos significativos de los valores numéricos. DTMFOUT DTMFOUT Pin.. 2 ] 5. pero el manipulador de interrupciones del BASIC en el PBP. Cualquier otra frecuencia causará que DTMFOUT genere una frecuencia proporcional al oscilador comparado a 20 Mhz.} [Tone {. Si el loop necesita contar más de 255 (Count > 255). También puede trabajar con uno de 10 Mhz y aún con uno de 4 Mhz.9 son los mismos que en un teclado telefónico. Tone}] Produce una secuencia DTMF Touch Tone en Pin. DTMFOUT usa FREQOUT para generar los tonos duales. NEXT FOR Count = Start TO End {STEP {-} Inc} {Body} NEXT {Count} El loop FOR. 20.. ENABLE ENABLE ENABLE interrumpe el procesamiento que fue previamente deshabiliyado con DISABLE.´ Enviar el texto “B0=” seguido por el valor decimal de B0 y un avance de línea (linefeed) serialmente a la salida DEBUG “B0=” . 20. por defecto Onms es 200 ms y Offms es 50 ms. siguiendo a esta instrucción. lo que no será muy útil para enviar touch tones. en lugar de producir código. Offms. se incrementa Count en uno. constante . Tones tiene un valor de 0 . 30] ´ Guardar 10. es mejor describirla paso a paso. Se puede usar WRITE para colocar valores en el EEPROM en el momento de la ejecución. éste indica la dirección de comienzo para guardar los datos. [10. Usualmente se necesita algún tipo de filtro para suavizar la señal hasta una forma de onda senoidal quitándole algunas armónicas generadas: DTMFOUT trabaja mejor con un oscilador de 20 Mhz. Vea ON INTERRUPT para más información.dec B0. Pueden ocurrir otras Interrupciones. Si Count no pasó End ó desbordó el tipo de variable. B0) ó un número de pin (p. DISABLE ‘Deshablita interrupciones en el handler Myint: led = 1 ‘enciende el LED cuando es interrumpido Resume ‘Vuelve al programa principal Enable ‘ENABLE interrumpe después del handler 5. FREQOUT genera tonos usando una forma de modulación de ancho de pulso. DISABLE DISABLE DISABLE interrumpe el procesamiento siguiente a la instrucción. B0) Onms es el número de milisegundos que suena cada tono y Offms es el número de milisegundos de pausa entre cada tono . Un END.11. Si se omite el valor opcional Location. ó una variable que contenga un número de 0 a 15 (p.13. STOP ó GOTO deben ser colocados al final de un programa para evitar pasar del límite de la misma u comience nuevamente. 1. Si se indica un valor Location. Los datos en bruto que salen del pin son bastante horribles. Pin debe ser una constante. DISABLE y ENABLE son pseudo-operaciones en el sentido que dan direcciones de compilador.15. N2400. NEXT permite a los programas ejecutar un número de declaraciones (Body) un número de veces. 0 .Si no están especificados. {Onms. Body es opcional y puede ser omitido (quizás por un loop de demora).ej. [10] ´ envía un avance de línea
. EEPROM EEPROM {Location. ni se completa el largo. Count.ej.1. Debido a su complejidad y versatilidad. la primera declaración se guarda en la dirección 0 del EEPROM y las subsiguientes en las siguientes direcciones del mismo. en lugar de producir código.15. FOR i=1 TO 10 ´ cuenta de 1 a 10 Serout 0. Ñps datos son guardados en el EEPROM solo una vez.12. no se ejecutará hasta que se encuentre un ENABLE. DISABLE y ENABLE son pseudo-operaciones en el sentido que dan direcciones de compilador.” “] ´ envía cada número al pin 0 en forma serial NEXT i ´ vuelve y efectúa la próxima cuenta Serout 0. EEPROM 5. cuando el micro controlador es programado.}] Guarda constantes en un chip EEPROM. No se agregan automáticamente terminadores. Pin automáticamente se convierte en salida. [ 2. la ejecución vuelve al paso 2).Todos los pins de I/O permanecen en el estado en que se encuentran.. Si no se define una cláusula.. END trabaja ejecutando una instrucción SLEEP continua dentro de un loop. Tone 11 es la clave #.. Los tonos de 0 . se debe usar una variable de tamaño word.
0 ´ define el pin LED HIGH led ´ convierte el Pin LED en salida y lo coloca en valor alto (-5 volt) Como alternativa. ó una variable que contenga un número de 0-15 (p. guardando su dirección de regreso en la pila (stack). GOTO GOTO etiqueta La ejecución del programa continúa en la declaración de la etiqueta.15. Frequency1 {.ej.N2500. B0) ó un número de pin (p. [80. [ 10 ] ´ envía un avance de línea 5.}] Recibe uno ó más Items de un port serial (de hardware) en dispositivos que soportan comunicaciones seriales asincrónicas por hardware. PORTA. Cada anidamiento no debe ser mayor de cuatro niveles. Label. 5.0) HIGH 0 ´ convierte Pin0 en salida y lo coloca en valor alto (-5 volt) HIGH PORTA.1. Cualquier otra frecuencia causará que FREQOUT genere una frecuencia proporcional al oscilador comparado a 20 Mhz. paridad par. . 10] ´ hace sonar el parlante conectado a Pin1 Low 0 ´ apaga el LED conectado a Pin0 Return ´ vuelve a la rutina principal 5.0 ´ convierte PORTA. use DEFINE para especificar el nuevo valor OSC. Pin puede ser una constante. PORTA.17. 8 bits de datos.19. FREQOUT FREQOUT Pin. Los parametros seriales y el baud-rate son especificados usando DEFINE: ´ coloque el registro receptor en receptor habilitado DEFINE HSER_RCSTA 90h ´ coloque el registro de transmisión en transmisión habilitada DEFINE HSER_TSTA 20h ´ coloque baud rate DEFINE HSER_BAUD 2400 HSERIN asume un oscilador de 4 Mhz cuando calcula el baud rate . GOTO send ´ salta a la declaración etiquetada send Send: serout 0.232.0 = 1 ´ setea PORTB Pin0 a valor alto. HSERIN es una de varias funciones seriales asincrónicas pre-construídas. 2000. hay una forma más rápida y corta de setearlo en valor alto (desde un codigo generado standpoint): PORTB. 0 . Pin se convierte automáticamene en salida. Frequency2} Produce la ó las frecuencias especificadas en el Pin.ej.15. no es posible invertir los niveles para eliminar un driver RS . Los datos en bruto que salen del pin son bastante horribles. Solo debe ser usado si se habilitó paridad con un DEFINE anterior.ej. Pin puede ser una constante. [ ” Hi”] ´ envía “Hi” como salida al Pin0 en forma serial 5.21. paridad impar1 stop bit) pueden ser habilitados usando los siguientes DEFINEs: ´ use solo si se desea paridad par DEFINE HSER_EVEN 1 ´ use solo si se desea paridad impar DEFINE HSER_ODD 1 El seteo de paridad igual que todos los DEFINE HSER afectan tanto a HSERIN como a HSEROUT Se puede incluir ParityLabel como opcional en la declaración. Sólo puede ser usada en dispositivos que posean hardware USART.} {Timeout. Pin0 en salida y lo coloca en valor alto (-5 volt) Led var PORTB. N2400. 1 stop bit) ó 7 O 1 (7 bits de datos. Puede producir una ó dos frecuencias de 0 a 32767 Hz al mismo tiempo. GOSUB beep ´ ejecuta la subrutina beep Beep: high 0 ´ enciende el LED conectado a Pin0 Sound 1. [# B2.. durante Onms milisegundos. Timeout está especificado en unidades de 1 milisegundo.FOR B2=20 TO 10 STEP -2 ´ cuenta de 20 a 10 de a 2 Serout 0. Vea la hoja de datos del dispositivo para información de los pin seriales de entrada y otros. las subrutinas pueden llamar a otra subrutina.
. Usualmente se necesita algún tipo de filtro para suavizar la señal hasta una forma de onda senoidal quitándole algunas armónicas generadas: FREQOUT trabaja mejor con un oscilador de 20 Mhz. aunque será muy difícil de filtrar y tendrá muy baja amplitud. En otras palabras. A diferencia del GOTO. B0) ó un número de Pin (p. Dado que la recepción serial se realiza por hardware. cuando se llega a un RETURN. Onms. ““] ´ envía cada número al pin0 en forma serial NEXT B2 ´ vuelve y efectúa la próxima cuenta Serout 0. sin paridad y 1 stop bit. HSERIN HSERIN {ParityLabel.} [Item {. FREQOUT PORTB. El programa continuará en este punto si se recibe un carácter con error de paridad. Por esto debe usarse un driver adecuado con HSERIN.Para mantener una relación de baud rate apropiada con otros valores de oscilador.18. Timeout y Label pueden ser incluídos en forma opcional para permitir al programa continuar si un carácter no es recibido dentro de un límite de tiempo. ó una variable que contenga un número 0 . . 1000 ´ Enviar un tono de 1 Khz al Pin1 durante 2 segundos 5. N2400. 0-15. Se puede usar un número ilimitado de subrutinas en un programa y pueden estar anidadas. HIGH HIGH Pin Hace de valor alto el Pin especificado y lo convierte automáticamente en salida. la ejecución sigue con la declaración siguiente al último GOSUB ejecutado.0). (p. GOSUB GOSUB etiqueta Salta a la subrutina indicada en la etiqueta.ej. 7E1 (7 bits de datos. FREQOUT genera tonos usando una forma de modulación de ancho de pulso. También puede trabajar con uno de 10 Mhz y aún con uno de 4 Mhz. El formato por defecto de los datos seriales es 8N1.20. si el pin ya es salida.
1 stop bit) pueden ser habilitados usando los siguientes DEFINEs: ´ use solo si se desea paridad par DEFINE HSER_EVEN 1 ´ use solo si se desea paridad impar DEFINE HSER_ODD 1 El seteo de paridad igual que todos los DEFINE HSER afectan tanto a HSERIN como a HSEROUT Dado que la recepción serial se realiza por hardware..} [Var {. Item}] Envía uno ó más Items al port serial de hardware en dispositivos que soportan comunicaciones seriales asincrónicas por hardware. Esto permite guardar datos en una memoria externa no volátil.. Si se usa la opción Label. como sensores de temperatura y convertidores A/D.23. 7E1 (7 bits de datos. no es posible invertir los niveles para eliminar un driver RS . ClockPin y dataPin pueden ser constantes. se saltará a ella.El bit inferior es una bandera interna que indica si es un comando de lectura ó escritura y no se debe usar. Vea la hoja de datos del dispositivo para información de los pin seriales de entrada y otros. B0).
. HSEROUT es una de varias funciones seriales asincrónicas pre-construídas. como Microchip 24LC01B ó similar. HSERIN [B0. 0-15. Refiérase a la sección de SEROUT2 para mayor información. El formato por defecto de los datos seriales es 8N1. dependiendo de cada dispositivo . Asegúrese de usar este formato en operaciones PBP I2C. Asegúrese de usar una variable apropiada al dispositivo a comunicar. Si se usa una variable con tamaño byte se envía una dirección de 8 bits. Inc. HSEROUT HSEROUT [Item {. ´ enviar el valor decimal de B0 seguido por un linefeed a través del USART HSEROUT [dec B0.22. Refierase a la sección de SERIN2 para mayor información. I2CREAD DataPin. a través del ClockPin y el DataPin y guarda los bytes recibidos dentro de Var. para que sean mantenidos aún sin energía conectada. Por esto debe usarse un driver adecuado con HSEROUT. Los parametros seriales y el baud-rate son especificados usando DEFINE: ´ coloque el registro receptor en receptor habilitado DEFINE HSER_RCSTA 90h ´ coloque el registro de transmisión en transmisión habilitada DEFINE HSER_TSTA 20h ´ coloque baud rate DEFINE HSER_BAUD 2400 HSEROUT asume un oscilador de 4 Mhz cuando calcula el baud rate. Las instrucciones I2C pueden ser usadas para acceder al EEPROM incorporado en los dispositivos 12CExxx y 16CExxx.232. cuando comunicamos con un 24LC01B. se envía una dirección de 16 bits.ej. dec W1] 5. I2CREAD Copyright ©2001 microEngineering Labs. PORTA. HSEROUT soporta los mismos modificadores de datos que SEROUT2. Simplemente especifique los nombres de pin de las líneas internas adecuadas como parte del comando I2C y coloque el siguiente DEFINE en el principio del programa. Algunos formatos de Control son:
bbb = bits de selección de block (direcciones de orden alto) ddd = bits de selección de dispositivo xxx = no importa El tamaño de dirección enviado (byte ó word) es determinado por el tamaño de la variable usada. 10] 5. {Address. paridad impar. Este formato para el byte de Control es diferente al usado por el PBP original. Este orden es el inverso al que se osa normalmente con variables.Si se envía una variable de tamaño word. Los 7 bits superiores del byte de Control contienen el código de control junto con la selección del chip e información adicional de dirección.ej. use DEFINE para especificar el nuevo valor OSC. 1 stop bit) ó 7 O 1 (7 bits de datos. Estos comandos funcionan en modo I2C master y también son usados para comunicarse con otros dispositivos con interfase I2C. Para mantener una relación de baud rate apropiada con otros valores de oscilador. si no se recibe un reconocimiento del dispositivo I2C. Label} Envía los bytes de Control y opcionalmente los de Address. 8 bits de datos.. sin paridad y 1 stop bit.0) I2CREAD y I2CWRITE pueden ser usados para leer y grabar datos de un EEPROM serial usando una interfase I2C de 2 cables. Control. el código de control es %1010 y no se usa la selección de chip. una variable que contenga un número (p.HSERIN soporta los mismos modificadores de datos que SERIN2. Sólo puede ser usada en dispositivos que posean hardware USART. por lo que el byte de Control será %10100000 ó $A0.All rights reserved. se leen 2 bytes y se guarda primero el de mayor orden y luego el de orden inferior dentro de Var.}] {. Por ejemplo. ClockPin. paridad par. Si se especifica Var con tamaño word. Var . ó un número de Pin (p.
. I2CWRITE I2CWRITE DataPin.0 Then itson ‘si PORTB. addr var byte cont con %10100000 addr =17 ´ coloca la dirección en 17 ´ lee datos de la dirección 17 y los deja en B2 I2CREAD PORTA. Si lo considera cierto..24. salta a la etiqueta pushd If B0 >=40 Then old ‘si el valor en la variable B0 es mayor ó igual a 40. [B2 ] Pause 10 ´ espera 10 ms que se complete la grabación 5. addr. Cada término Comp puede relacionar una variable con una constante ú otra variable e incluye uno de los operadores listados anteriormente. Si lo considera falso.
. pin 0 es alto (1). el programa va a continuar hacia la próxima línea después del IF. sino que debe ser una etiqueta.} THEN Label IF Comp {AND/OR Comp . PORTA. a través del ClockPin y el DataPin seguidos por Value. IF. salta a old If PORTB..DEFINE I2C_INTERNAL 1 Vea las hojas de datos de Microchip para más indormación. B0).0) El tamaño de dirección enviado (byte ó word) es determinado por el tamaño de la variable usada. se debe usar el siguiente DEFINE en el programa: DEFINE I2C_SLOW 1 Vea el siguiente comando I2CREAD addr var byte cont con %10100000 addr =17 ´ coloca la dirección en 17 ´ envía el byte 6 a la dirección 17 I2CWRITE PORTA. cont. no se ejecuta la operación posterior al THEN. 1. se ejecuta la operación posterior al THEN. si no se recibe un reconocimiento del dispositivo I2C.. antes de intentar comunicarse nuevamente con el dispositivo.. el programa irá hacia la etiqueta que sigue al THEN. Si se desea acceder un dispositivo de velocidad standard a 8 Mhz. Si la condición es cierta.ej. addr. Si la condición es falsa. el THEN en un IF. ClockPin. Dispositivos rápidos (400 Mhz) pueden ser usados hasta 20 Mhz.25 IF.. Cualquier otro valor es cierto.1. La opción de grabación múltiple puede ser útil con dispositivos I2C que no deban esperar entre grabaciones. Si se envía una variable de tamaño word.. Asegurese de usar paréntesis para especificar el orden en que se deben realizar las operaciones. Las comparaciones que dan 0 se consideran falso.. Si se desea acceder un dispositivo de velocidad standard a 8 Mhz. Dispositivos rápidos (400 Mhz) pueden ser usados hasta 20 Mhz.THEN. 5.. THEN evalúa la comparación en términos de CIERTO o FALSO... addr. PORTA. IF. se debe usar el siguiente DEFINE en el programa: DEFINE I2C_SLOW 1 El clock I2C y las líneas de datos pueden ser empujados a Vcc con un resistor de 4-7 K de acuerdo al siguiente esquema. Cuando se escribe un EEPROM serial. Control. Label} Envía los bytes de Control y opcionalmente los de Address..0. Si se usa una variable con tamaño byte se envía una dirección de 8 bits. ó un número de Pin (p. Otra declaración no puede ser puesta después del THEN. Si se intenta un I2CWRITE ó I2CREAD antes que se complete la grabación.} [Value {. If Pin0 = 0 Then pushd ‘si el botón conectado al pin 0 es oprimido (0).. El tiempo de las instrucciones I2C es tal que los dispositivos de velocidad standard (100 Khz) pueden ser accedidos a velocidad de clock de hasta 8 Mhz. Algunos permiten grabar múltiples bytes en una página simple antes de necesitar una espera. Value . ya que PBP solo soporta operaciones sin signo. Las instrucciones I2C pueden ser usadas para acceder al EEPROM incorporado en los dispositivos 12CExxx y 16CExxx. ya que ambos trabajan en modo de colector abierto. se envía una dirección de 16 bits. THEN es esencialmente un GOTO. PORTA.. salta a itson If (B0 = 10) AND (B1 = 20) Then loop En la segunda forma...} THEN Declaración ELSE Declatación ENDIF Efectúa una ó más comparaciones. es necesario esperar 10 ms (dependiendo del dispositivo) para completar la grabación. con. Aunque una sola declaración I2CWRITE puede ser usada para grabar múltiples bytes simultaneamente.THEN puede ejecutar condicionalmente un grupo de declaraciones que sigan al THEN. El tiempo de las instrucciones I2C es tal que los dispositivos de velocidad standard (100 Khz) pueden ser accedidos a velocidad de clock de hasta 8 Mhz. IF. se ignorará el acceso. Revise la hoja de datos del dispositivo que esté usando. [B2] Vea el libro Microchip “NON VOLATILE MEMORY PRODUCTS” para mayor información de este ú otros dispositivos que pueden ser usados con los comandos I2CREAD y I2CWRITE. Si se usa la opción Label. Las declaraciones deben estar seguidas por un ELSE o un ENDIF para completar la estructura.0.THEN IF Comp {AND/OR Comp . Asegúrese de usar una variable apropiada al dispositivo a comunicar. una variable que contenga un número (p. la prioridad de los operadores lo determina y el resultado puede no ser el esperado.1. DEFINE I2C_INTERNAL 1 Vea las hojas de datos de Microchip para más indormación. De otra manera. se saltará a ella. se puede violar los requerimientos de tiempo de grabación para los EEPROM seriales. ClockPin y DataPin pueden ser constantes. De una forma..ej. {Address.THEN puede operar de dos maneras. PORTA. 0-15. Simplemente especifique los nombres de pin de las líneas internas adecuadas como parte del comando I2C y coloque el siguiente DEFINE en el principio del programa. cont. Todas las comparaciones son sin signo. 0. [6] Pause 10 ´ espera 10 ms que se complete la grabación addr =1 ´ coloca la dirección en 1 ´ envía el byte en B2 a la dirección 1 I2CWRITE PORTA..}] {.
PORTA. $C0 Hace que el visor comience a escribir caracteres en el principio de la segunda línea. $10 $FE. ya que el comando de LCDOUT solamente es de grabación. o una variable que contenga un número 0-15 (p. Un programa debe esperar. Pin debe ser una constante. La palabra clave LET. Vea la hoja de datos para el dispositivo LCD. con un salto entre las locaciones de memoria para los primeros y segundos caracteres de 8. LET B0 = B1 * B2 + B3 B0 = Sqr W1 5.3. PORTA. Algunos comandos útiles se muestran en la siguiente tabla:
Comando $FE. Puede tomar bastante tiempo a un LCD arrancar. la primera línea comienza en $0 y la segunda. en particular el que usted esté usando. Estos LCD. PBP soporta módulos LCD con un controlador Hitachi 44780 o equivalente.0 ‘convierte el PORTA. $0F $FE. $0E $FE.3. Si se usa un bus de 8 bit.DB7 conectadas en el micro Pic a PORTA.puede haber un salto entre las localizaciones. LCDOUT también puede usar cualquiera de los modificadores usados con SEROUT2. 0-15. pin 0 en entrada En forma alternativa.26. Para muchos LCD.27. 2 $FE.If B0 <> 10 Then B0 = B0 + 1 B1 = B1 . también tienen un mapa de memoria no ordenado. “Hello” ‘limpia el visor y muestra “Hello” LCDOUT B0. El Value puede ser una constante. Vea la sección de SEROUT2 para más información. 1 $FE. pin 0 como entrada Todos los pins en un port pueden ser colocados como entradas seteando el registro TRIS completo de una sola vez: TRISB = %11111111 ‘Setea todo el PORTB como entrada 5.4 y Enable a PORTB. INPUT INPUT Pin. es opcional. Refiérase a la sección previa acerca de operadores para más información. $0C $FE. todos en mayúsculas. coloque uno o más de los siguientes DEFINEs. ejj. R/W debe estar colocado a tierra. el pin puede ser colocado como entrada de una forma más rápida y corta (desde un código generado standpoint): TRISB.0 =1 ‘Setea el PORTB. {LET} {LET} Var = Value Asigna un Value a una Variable. otra variable o el resultado de una expresión. usando un bus de 4 bit o uno de 8 bit. El comando: LCDOUT $FE. enviando un $FE seguido por el comando. $14 $FE. en $40. tienen un cabezal de 14 o 16 pins simples o duales en un extremo. Asume que el LCD va a ser usado con un bus de 4 bits. medio segundo antes de enviar el primer comando a un LCD. B0) o el nombre de un pin (p. Para muchos visores 16x2. con las líneas de data DB4 . Si se usa un bus de 4 bit. PBP supone que el LCD está conectado a pins específicos.0). Los comandos son enviados al LCD. usualmente... $C0
Note que hay un comando para mover el cursor al comienzo de la segunda línea en un visor de dos líneas. Enable y Register Select deben estar conectados a algún pin del port.0 .. ej. Los visores de 4 líneas. LCDOUT $FE. INPUT 0 ‘convierte el Pin0 en entrada INPUT PORTA. los caracteres y líneas mostrados no son consecutivos en la memoria del visor . inicializa el LCD como un visor de dos líneas. Los visores 16x1 usualmente están formateados como visores de 8x2. LCDOUT LCDOUT Item {. por sí misma. debe estar conectado o a los 4 bit inferiores o a los 4 bit superiores de un port. #B1 El LCD puede estar conectado al micro Pic. por lo menos.28. Item. la representación ASCII para cada dígito es enviada al LCD. Register Select a PORTA. Además. a menos que se le diga de otra manera. todos los 8 bits deben estar en un port. 1. en el comienzo de su programa PBP:
. Si el signo (#) está colocado antes de un Item.. Convierte el Pin especificado en una entrada.} Muestra Items en un visor de cristal líquido inteligente (LCD).1 Endif If B0 = 20 Then led = 1 Else led = 0 Endif
5. Para cambiar este seteo. para las locaciones de memoria de caracter y comandos adicionales.
Register Select en el PORTB. LOOKUP2 genera un código 3 veces más grande que LOOKUP. aunque variables de array con índice constantes son permitidas. 512.Por ejemplo. El siguiente esquema muestra una forma de conectar un LCD a un micro Pic: 5. aunque variables de array con índice constantes son permitidas. se asume (“=”). Constant. use LOOKDOWN. se puede buscar el primer Value que sea mayor que el parámetro Search usando (“> “ ). Value. LOOKUP2 B0.. aunque variables de array con índice constantes son permitidas. B0 5. Si lo encuentra. Si no se encuentra. Si Index es cero.. 100. N2400. B0 LOOKDOWN2 W0. B1 ´ Convierte el carácter hexadecimal en B0 a un valor decimal B1 Serout 0.4. Var = 1 y así. [“0123456789ABCDEF”]. Serin 1. Si la lista consiste solamente de constantes y sartas de 8 bits. [512. Si Index es 1. B0 ´ Obtiene un carácter hexadecimal de pin1 en forma serial LOOKDOWN B0.29. LOOKDOWN LOOKDOWN Search. aunque pueden ser usadas como valor Index Las variables de array con índice variable no pueden ser usadas en LOOKUP2. La lista de constantes puede ser una mezcla de constantes numéricas y sartas.33.32. La lista de constantes puede ser una mezcla de constantes numéricas y sartas. Var La declaración LOOKDOWN2 busca un valor Search en una lista de Values.}]. Constant. y Enable en el PORTB. Si Index es 1. La lista de Values puede ser una mezcla de constantes numéricas y sartas en 16 bits y variables. No se pueden usar expresiones en una lisia de Values. no se toma ninguna acción y Var permanece sin cambios. [256. le dirá a PBP que hay conectado un LCD de 2 líneas en modo de 4 bit con el bus de datos en los 4 bit inferiores de PORTB. aunque pueden ser usadas como valor Search Las variables de array con índice variable no pueden ser usadas en LOOKDOWN2. Var = 0.}]. 1024]. Si es el segundo. Si no se encuentra. Si la lista consiste solamente de constantes y sartas de 8 bits. [Constant {. La lista de Values puede ser una mezcla de constantes numéricas y sartas en 16 bits y variables. Var = 0. B1 ´ obtiene el carácter B0 de la sarta y lo deja en B1 Serout 0. [Value [. Var = 1 y así. LOW LOW Pin
5. [B1] ´ envía el carácter en B1 al Pin0 en forma Serial Next B0 ´ va al segundo carácter
5. LOOKUP2 LOOKUP2 Index. Si Index es mayor ó igual que el número de entradas en la lista. Var LOOKUP2 puede ser usado para obtener entradas de una tabla de Values. Cada carácter en una sarta es tratado como una constante separada con el valor del carácter ASCII. no se toma ninguna acción y Var permanece sin cambios. For B0=0 to 5 ´ cuenta de 0 a 5 LOOKUP B0. Value. LOOKDOWN2 genera un código 3 veces más grande que LOOKDOWN. {Test} [Value {. si el valor es el primero de la lista. N2400.30. Var toma el valor de la primer Constant.. Si no se indica nada.}]. [#B1] ´ Envía un valor decimal a pin0 en forma serial 5. LOOKUP LOOKUP Index.}].31. Si Index es cero. El parámetro opcional Test puede ser usado para efectuar una busqueda distinta a la igualdad (“=”).. Var toma el valor del primer Value.‘Setea el port de datos LCD DEFINE LCD_DREG PORTB ‘Setea el bit de comienzo de datos (0 o 4) si el bus es de 4-bit DEFINE LCD_DBIT 0 ‘Setea el port LCD Register Select DEFINE LCD_RSREG PORTB ‘Setea el bit LCD Register Select DEFINE LCD_RSBIT 4 ‘Setea el port LCD Enable DEFINE LCD_EREG PORTB ‘Setea el bit LCD Enable DEFINE LCD_EBIT 5 ‘Setea el tamaño del bus LCD (4 o 8 bits) DEFINE LCD_BITS 4 ‘Setea el numero de lineas en el LCD DEFINE LCD_LINES 2 Este seteo. LOOKDOWN2 LOOKDOWN2 Search. LOOKDOWN2 W0.. [Constant {. No se pueden usar expresiones en una lisia de Values. no se toma ninguna acción y Var permanece sin cambios. Var toma el valor de la segunda Constant y así sucesivamente. [“Hello “]. N2400. sucesivamente. si el valor es el primero de la lista. Var LOOKUP puede ser usado para obtener valores de una tabla de constantes de 8 bits. 1024].. Cada carácter en una sarta es tratado como una constante separada con el valor del carácter ASCII. Var La declaración LOOKDOWN busca en una lista de 8 bit los valores Constant que coincidan con un valor Search. Si Index es mayor ó igual que el número de entradas en la lista de constantes. Las variables de array con índice variable no pueden ser usadas en LOOKUP. Si es el segundo. el índice de la constante es guardado en Var así. Var toma el valor del segundo Value y así sucesivamente. Si se encuentra. sucesivamente. Cada carácter en una sarta es tratado como una constante separada con el valor del carácter ASCII. aunque variables de array con índice constantes son permitidas. W1. 1000]. Las variables de array con índice variable no pueden ser usadas en LOOKDOWN.. use LOOKUP.5. < [10. el índice de la constante es guardado en Var así. no se toma ninguna acción y Var permanece sin cambios. Cada carácter en una sarta es tratado como una constante separada con el valor del carácter ASCII..
Este método se discute más adelante.15. Se debe diseñar el programa tomando en cuenta esta latencia.
.34. DISABLE elimina la posibilidad de usar esta instrucción y ENABLE la habilita.. Se puede usar más de un ON INTERRUPT en un programa: ON INTERRUPT GOTO myint ´ el handler de interrupciones es myint INTCON = %10010000 ´ habilita la interrupción RB0 .36. PORTA. La primera es escribir una subrutina de interrupción en LEnguaje ensamblador. 0 ´ Coloca PORTA.. PORTA. se reduce al mínimo el consumo de energía.0 ´ convierte PORTA pin 0 en salida En forma alternativa. puede demorarse bastante hasta que sea reconocida la interrupción.. Existen dos formas de manejar interrupciones usando PBP. pero termina con un RESUME.ej. Cuando ocurre una interrupción. coloque INTCON en $80 INTCON = $80 5.) en milisegundos 18 36 72 144 288 576 1152 2304
NAP 7 ´ pausa en baja potencia por aprox.0) OUTPUT 0 ´ convierte pin 0 en salida OUTPUT PORTA. Durante este NAP.. ó una variable que contenga un número de 0-15 (p. Latencia es el tiempo entre el pedido de interrupción y el momento en que se ingresa en el handler de interrupciones. Cuando la ejecución de la declaración PBP que se estaba ejecutando termina. el pin puede ser convertido en salida de una manera más rápida y corta (con un código generado standpoint). se debe usar una rutina en lenguaje ensamblador. O el handler puede ser colocado antes que la declaración ON INTERRUPT ya que la bandera de interrupciones no se chequea antes del primer ON INTERRUPT en un programa. para chequear si ocurre ó no una interrupción.0 como salida y en nivel bajo (0 volt) Led var PORTB.ej. porque el tiempo se deriva del Watchdog Timer que está controlado por R/C y puede variar de chip a chip y también con la temperatura. PBP no ingresará al handler BASIC de interrupciones hasta que haya terminado de ejecutar la declaración en curso. +o una variable que contenga un número 0-15 (p. OUTPUT OUTPUT Pin Convierte el pin especificado en salida. puede existir una latencia considerable hasta que se ingrese a la rutina de interrupciones. 0 ´ define un pin LED LOW led ´ coloca el pin LED como salida y en valor bajo (0 volt) Si el pin ya es una salida. Period 0 1 2 3 4 5 6 7 Demora (aprox. tomando todo como lo dejó. Si la declaración es PAUSE ö SERIN. se marca con una bandera.ej. El segundo método es escribir un handler (manejador) de interrupciones PBP. DISABLE y ENABLE permiten que distintas secciones de un programa PBP se ejecuten sin la posibilidad de ser interrumpidas. B0) ó un nombre de pin (p. en la sección avanzada. 0 . 0-15. Es similar a una subrutina PBP. pero programas largos en pequeñas computadoras si lo son. no se puede ejecutar una declaración mientras se está ejecutando una anterior). ON INTERRUPT ON INTERRUPT GOTO Label Permite el manejo de las interrupciones del micro controlador por medio de una subrutina PBP.. ON INTERRUPT agregará una instrucción después de cada declaración. Overhead es otro tema.0) LOW 0 ´ Coloca el Pin9 en salida y nivel bajo (9 volt) LOW PORTA. Pin puede ser una xonstante. Como las declaraciones de PBP no son reentrantes (p. las instrucciones adicionales no son un problema. El lugar más notorio para usar DISABLE es justo antes del actual handler de interrupciones. 2..ej. Los períodos indicados son solo aproximados. Normalmente. 3 segundos
5.ej.Coloca el pin especificado en valor bajo y automáticamente lo convierte en salida. Si esta es inaceptable y las interrupciones deben ser manejados más rapidamente. Como NAP usa el Watchdog Timer es independiente de la frecuencia del oscilador.35. una declaración RESUME envía el programa de vuelta a donde estaba cuando ocurrió la interrupción. es más rápido corto usar un código ya generado: PORTB... Esta es la forma de manejar interrupciones con la menor latencia y el menor overhead . Pin puede ser una constante. una vez que se usó ON INTERRUPT. el programa salta al handler de interrupciones indicado en Label. DISABLE ´ deshabilita las interrupciones en el Handler Myint: led=1 ´ enciende el LED con una interrupción RESUME ´ vuelve al programa principal ENABLE ´ habilita las interrupciones después del Handler Para deshabilitar permanentemente las interrupciones (ó hasta que se necesiten).0 = 0 ´ coloca en nivel bajo el pin0 de PORTB 5.. Una vez que termina el trabajo del handler. B0) ó un número de Pin (p. NAP NAP Period Coloca al micro controlador en modo de baja potencia por períodos de tiempo reducidos.
ej. Si se usa un oscilador de otra frecuencia. Scale se usa para ajustar distintas constantes RC.535 milisegundos. PEEK y POKE permiten acceso directo a los registros del microPIC incluyendo PORTA. B0) ó un número de Pin (p. Opciones especiales del microPIC. En estas condiciones. No coloca el micro controlador en modo de baja potencia como las otras funciones de retardo (NAP y SLEEP). Period tiene 16 bit. N2400. La tabla siguiente muestra el número mínimo de microsegundos obtenible para una determinada frecuencia de oscilador. Tiene la misma precisión que el clock. No coloca el micro controlador en modo de baja potencia como las otras funcion de retardo (NAP y SLEEP). Vea la sección sobre velocidad para mayores detalles.535 milisegundos. 3. por lo que los retardos pueden ser de hasta 65. Cuando se hace un POKE de datos a PORTA. 0 ´ graba 0 en el registro 85 hexadecimal (setea todo PORTA como salidas) PBP puede acceder directamente a registros y bits sin necesidad de utilizar PEEK y POKE. consume mayor potencia.0 = 1 ´ setea alto el bit 0 de PORTA 5. Para constantes RC grandes. 0 .58) 4 8 10 12 16 20 Demora mínima 20us 24us 12us 8us 7us 5us 3us
PAUSEUS asume la frecuencia de 4 Mhz del oscilador. B0 = PORTA toma el estado actual de PORTA y lo coloca en B0 5.42. coloque el dispositivo a medir en máxima resistencia y midalo con Scale=255.37. pero es más exacto. Var Lee un potenciómetro (ú otro dispositivo resistivo) en Pin. POKE $85. State. Si se usa un oscilador de otra frecuencia. Var debe ser cero para mínma resistencia y 255 para máxima resistencia. Pin puede ser una constante. 255. PORTB.40. consume mayor potencia.. PAUSE PAUSE Period Detiene el programa por Period milisegundos . POT. OSC 3(3. POT POT Pin. Scale debe ser baja (valor mínmo 1). Vea la sección sobre velocidad para mayores detalles. Var
. por lo que los retardos pueden ser de hasta 65. PAUSE 1000 demora de 1 segundo 5. como convertidores A/D y ports adicionales pueden ser leídos usando PEEK. [#B0] ´ envia el valor del potenciometro en forma serial al pin 0 5. Se recomienda usar el acceso directo y no PEEK y POKE. PORTE y sus registros asociados de dirección de datos (TRIS). Para constantes RC pequeñas. como convertidores A/D y ports adicionales pueden ser leídos usando PEEK. PORTA.TRISB. no solamente un bit individual. B0 ´ lee el potenciómetro en pin 3 para determinar Scale Serout 0. Var Lee el registro del micro controlador en la dirección Address especificada y guarda la lectura en Var. PAUSEUS PAUSEUS Period Detiene el programa por Period milisegundos. PAUSEUS 1000 demora de 1 segundo 5. Para obtener demoras precisas. PEEK PEEK Address. Tiene la misma precisión que el clock. no es posible obtener demoras menores a un número mínimo de microsegundos usando PAUSEUS. se debe indicar usando el comando DEFINE OSC. Scale. PAUSE asume la frecuencia de 4 Mhz del oscilador. menores que esto use una rutina ensambladora tipo ASM.ENDASM. B0 ´ toma el estado actual de PORTA y lo coloca en B0 PBP puede acceder directamente a registros y bits sin necesidad de utilizar PEEK y POKE. Scale debe ser máxima (255). PAUSE tiene un número mínimo de ciclos para operar. se debe indicar usando el comando DEFINE OSC. PEEK y POKE operan en todos los bits de un registro simultaneamente.0) La resistencia se mide tomando el tiempo de descarga de un capacitor a través de un resistor (5 K a 50 K). POKE POKE Address. se actualiza el port completo. PORTA.38. Como depende de la frecuencia del oscilador. Para ésto. Inclusive. PULSIN PULSIN Pin. Se recomienda usar el acceso directo y no PEEK y POKE. (Este es el mismo tipo de proceso que efectúa la opción ALT-P en BS1).ej. Var tendrá un valor apropiado de Scale. PORTC. Opciones especiales del microPIC.0 = 0 ´ setea PORTB pin 0 como salida Tofos los pins de un port pueden ser seteados simultaneamente como salida usando el registro TRIS completo: TRISB = %00000000 ´ setea todos los pins de PORTB como salidas 5. TRISA = 0 ´ setea todo PORTA como salidas) PORTA. Si el valor de Scale es correcto. Desafortunadamente. PEEK.39. (Un poco más de 1 minuto).41. Inclusive. PORTD.15 ó una variable que contenga un número de 0-15 (p. pero es más exacto.Period tiene 16 bit. Value Graba Value en el registro del micro controlador en la dirección Address especificada.. Scale debe ser determinada en forma experimental.
el ancho de pulso se obtiene en incrementos de 10 us. 127. con un Period especificado. como para guardar el resultado. Pin puede ser una constante. La resolución siempre cambia con la velocidad del oscilador en uso. por lo que la polaridad del pulso depende del estado inicial del pin. Gosub sub1 ´ va a la subrutina denominada sub1
. RANDOM W4 ´coloca un número aleatorio en W4
5. PORTA. Pin puede ser una constante.46. PORTA. B2 ´ coloca en B2 el valor de la dirección 5 del EEPROM
5.ej. No se pueden usar variables de array con índice variable.ej. PORTA. Var. el tiempo estará en incrementos de 10 us. RETURN RETURN Vuelve desde una subrutina.7.44. PWM PWM Pin. RANDOM RANDOM Var Efectúa una iteración pseudo-aleatoria en Var. RCTIME PORTB. cada Cycle será de aproximadamente 5 mseg. De largo. Var Lee el EEPROM incorporado en la dirección Address. B0) ó un número de Pin (p. B0) ó un número de Pin (p. Si se usa una variable de 8 bit.47.5.48.a pin 5 (a 4 Mhz) PULSOUT PORTB. Definir un valor de OSC no tiene efectos sobre PULSOUT. se devuelve 0 Low PORTB. Retoma la ejecución en la declaración que sigue al GOSUB que llamó la subrutina.15 ó una variable que contenga un número de 0-15 (p. Si el flanco del pulso no llega.ej. La resolución de RCTIME depende de la frecuencia del oscilador.Si se usa un oscilador de 20 Mhz.ej. PWM PORTB. PULSEOUT PULSEOUT Pin. el ancho de pulso tendrá una resolución de 2 us. W3 5. Esta instrucción solo puede ser usada con un microPIC que tenga un EEPROM incorporado como el PIC16F84 ó PIC16C84 READ 5. después que termina de procesarse una interrupción.4. 0 . 0 . El ciclo útil Duty para cada ciclo varía de 0 (0%) a 255 (100%= . Si se usa un oscilador de 20 Mhz. solo se usan los bits menos significativos de la medición de 16 bits.0) RCTIME puede usarse para leer un potenciómetro (ó cualquier dispositivo resistivo).ej. 1.Definir un valor de OSC no tiene efectos sobre PULSOUT.0) La resolución de PULSOUT depende de la frecuencia del oscilador. B0) ó un número de Pin (p.0) La resolución de PULSIN depende de la frecuencia del oscilador. Con un oscilador de 20 Mhz el largo aproximado será de 1 mseg. W0 ´lee el potenciómetro en pin 3
5. Cada ciclo de PWM está compuesto de 256 pasos. Definir un valor de OSC no tiene efecto sobre PWM. y guarda el resultado en Var. Period Genera un pulso en Pin. Si se usa un oscilador de 4 Mhz.El ciclo PWM es repetido Cycle veces. Un circuito R/C se puede usar como un simple convertidor D/A. Duty. RESUME es similar a RETURN. 0 . Pin puede ser una constante. y no tiene forma de onda cuadrada. Vea ON INTERRUPT para mayor información. ó una variable que contenga un número de 0-15 (p. B0) ó un número de Pin (p. READ READ Address. RESUME RESUME {Label} Vuelve al lugar del programa que se abandonó. La resolución siempre cambia con la velocidad del oscilador en uso. Si se usa un oscilador de 4 Mhz. Si se usa un oscilador de 4 Mhz. pero es usado al final de un handler de interrupciones PBP.15. 0 . Con un oscilador de 4 Mhz. cuando cesa.49. Pin puede ser una constante. el tiempo tendrá una resolución de 2 us.15. la ejecución del programa va a continuar en este Label y no donde estaba el programa cuando ocurrió la interrupción . State.3 ´ descarga el capacitor para comenzar Pause 10 ´ descarga por 10 mseg. 0. ´ mide el pulso alto en pin 4 guardado en W3 PULSIN PORTB. Period una resolución de 2 us . El pulso se genera activando dos veces el pin. Cycle Envía un tren de pulsos modulados en ancho a Pin. El ancho medido se coloca en Var. Mide el tiempo que un Pin permanece en un estado State determinado Básicamente es la mitad de un PULSIN.Mide el ancho del pulso en Pin.3. Es necesario usar algún tipo de filtro para convertirla en algo útil. Si el pin no cambia de estado. Var=0. La resolución siempre cambia con la velocidad del oscilador en uso. Si State es cero se mide el ancho de un pulso bajo. ó una variable que contenga un número de 0-15 (p. La resistencia puede ser medida descargando un capacitor a través de un resistor (5 K a 50 K) y midiendo el tiempo de carga (ó viceversa). Si State es uno. Pin se convierte en salida justo antes de la generación del pulso y vuelve a ser entrada.ej.En este caso. El algoritmo pseudo-aleatorio usado tiene un paso de 65535 (el único número que no produce es el cero). Si se usa el Label opcional. Si se usa un oscilador de 20 Mhz. pero se permite usar variables de array con índice constante. PORTA. Var debe ser una variable de 16 bit. Clockint: seconds=seconds+1 ´cuenta tiempo RESUME ´vuelve al programa después de la Interrupción error: high errorled ´enciende el led de error RESUME restart ´ vuelve a algun otro lugar
5. el Period del pulso generado estará en incrementos de 10 us . se mide el ancho de un pulso alto.0) Cycle depende de la frecuencia del oscilador. ó el ancho del pulso es demasiado grande para ser medido.ej. ó una variable que contenga un número de 0-15 (p.15.ej. 100 ´ envía una señal PWM con un ciclo útil del 50% al pin 7. ´envia un pulso de 1 mseg. cualquier otra dirección de retorno. RCTIME RCTIME Pin. no será accesible. La salida de PWM en un pin tiene mucho ruido. El tiempo de Cycle siempre cambia con la velocidad del oscilador en uso.43. Var se usa tanto como origen.45. 100
5. Definir un valor de OSC no tiene efectos sobre PULSIN. durante 100 ciclos
B0) ó un número de Pin (p. {Timeout. Si es salida. Cada carácter de una sarta es tratado como un calificador individual.BAS y BS2DEFS. Aunque los chips convertidores de nivel RS-232 son comunes y baratos.} {Timeout.ej. SERIN es similar al comando Serin de BS1 con el agregado de Timeout. sub1: serout 0.bas” al comienzo del programa PBP. B0) ó un número de Pin (p. SERIN 1. Pin puede ser una constante.. Mode se usa para especificar el baud rate y los parámetros de operación de la transferencia serial.52. Si algún byte recibido no concuerda con el byte siguiente de la secuencia de calificación. ó una variable que contenga un número de 0-15 (p. B0 ´ espera hasta que el carácter “A” sea recibido en forma serial en el pin 1 y coloca el próximo carácter en B0
5.0) Output 4 ´ convierte pin 4 en salida REVERSE 4 ´ cambia pin 3 a entrada
5.ej. N2400..ej. BS1DEFS. FlowPin es automáticamente habilitado para permitir la transmisión de cada carácter. Una vez que se completan los calificadores. Para usarlos. 0 . El carácter no-dígito que termina el valor decimal también se descarta. lo convierte en salida. Todos los no-dígitos recibidos antes del primer dígito del valor decimal son ignorados y descartados.] Recibe uno ó más Items en el Pin especificado en formato standard asincrónico. Este estado habilitado es determinado por la polaridad del dato especificado en Mode.50. se pueden usar entradas invertidas (N300. PORTA.. Label. Más aún. Los bits de baud rate especifican el el tiempo de bit en microsegundos -20.15.Si la variable es precedida por el signo #.BAS..]. 0 ..N9600) junto con un resistor limitador de corriente. Si el nombre de variable es único.ej.BAS.15 ó una variable que contenga un número de 0-15 (p.ej. si ya está usando alguno de estos archivos. Timeout está especificado en unidades de 1 milisegundo.. use la ecuación: (1000000/bayd)-20 Algunos baud rate standard se muestran en la tabla siguiente: Baud rate 300 600 1200 Bits 0 . 0 . Pin puede ser una constante.} Recibe uno ó más Items en Pin. ó una variable que contenga un número de 0-15 (p. puede ser incluído para ayudar a que los datos no desborden la capacidad del receptor. SERIN2 SERIN2 DataPin {FlowPin}. sin paridad y un stop bit (8N1).ej. SERIN: SERIN Pin. lo convierte en entrada.0) El pin opcional de control de flujo FlowPin.. SERIN convierte un valor decimal en ASCII y guarda el resultado en esa variable. variable ó una sarta de constantes. Bit 14 selecciona nivel cierto ó invertido. Pin automaticamente se convierte en entrada. Bit 15 no se usa. FlowPin es opcional y es automáticamente colocado como salida..0) Los nombres Mode (p. SERIN comienza a guardar datos en la variable asociada con cada Item. REVERSE: REVERSE Pin Si Pin es entrada. La lista de Items de datos a ser recibida puede estar precedida por uno ó más calificadores encerrados entre corchetes.15. N2400. Mode.. No lo incluya. Para encontrar un valor dado. PORTA. DataPin y FlowPin pueden ser una constante. antes de recibir los datos. Un Qualifier puede ser constante. SERIN debe recibir estos bytes en un orden exacto. usando 8 bit de datos.ej. Mode.12 3313 1646 813
.. el valor del carácter ASCII recibido es guardado en la variable . las excelentes especificaciones de I/O de los microPIC permiten ejecutar muchas aplicaciones sin usar convertidores de nivel. en formato standard asincrónico. B0) ó un número de Pin (p. Mode T2400 T1200 T9600 T300 N2400 N1200 N9600 N300 Mode N° 0 1 2 3 4 5 6 7 Baud rate 2400 1200 9600 300 2400 1200 9600 300 FALSO State CIERTO
Timeout y Label son opciones que pueden ser incluídas para permitir al programa continuar si no se recibe un carácter durante un cierto tiempo. el proceso de calificación comienza nuevamente (p.. Bit 13 selecciona paridad ó no paridad.51. Si se usa. Los números Mode pueden ser usados sin incluir este archivo. agregue la línea: Include “modedefs. DataPin es colocado como entrada en forma automática.} [Item.ej. T2400) están definidos en el archivo MODEDEFS. Los 13 bits de menor orden seleccionan el baud rate.BAS ya incluyen MODEDEFS. [“Lunch”] ´ envia “Lunch” al pin 0 en forma serial RETURN ´ vuelve al programa principal despues del gosub
5. el próximo hyte recibido es comparado con el primer Item de la lista de calificación). [“A”]. PORTA.} {Item. SERIN2 es similar al comando Serin de BS2.} {[Qual. {ParityLabel. Label.
va a recibir una sarta de caracteres. La lista de items de datos a ser recibidos. decimal ó hexadecimal en su equivalente ASCII y guarda el resultado en esa variable. sin paridad. Mode = 27889 (300 baud. dec4 B0] SERIN2 PORTA. recomienza el proceso de calificación. Normalmente.Se sugiere el uso de un resistor limitador de corriente (se supone que RS-232 es tolerante a los cortocircuitos). Cada carácter de una sarta es tratado como un calificador individual. los datos se reciben invertidos.Por ejemplo. Si se incluye ParityLabel. Si la variable está precedida por BIN. invertido). 100. 16780.. str ar]
. tlabel.opcionalmente terminada en el carácter c Espera por una secuencia de caracteres Espera por una sarta de caracteres
Una variable precedida por BIN va a recibir la representación ASCII de su valor binario.. El carácter no-digito que termina el valor también es descartado. Bit 14 selecciona el nivel de los pins de datos y de control de flujo. DEC ö HEX. un contador y un carácter opcional de finalización. ´ espera hasta que el carácter “A” sea recibido en forma serial en Pin1 y Pone el próximo carácter en B0 SERIN2 1.0. B0 será 254. Solo debe ser usado con paridad par seleccionada (bit 13=1) En forma opcional se puede incluir Timeout y Label para permitir que el programa continúe si no se recibe un carácter dentro de un cierto tiempo.Si bit 14=1. 1.5} HEX{1. va a saltear esa cantidad de caracteres en el flujo de datos. Si bit 14=0. se saltará a la etiqueta indicada si se recibe un carácter con error de paridad. salteando dígitos adicionales si es necesario. no se requieren convertidores de nivel en muchas aplicaciones. sin paridad. si está especificado HEX B0 y se recibe “FE”. Si se selecciona paridad.4} SKIP n STR ArrayVar{} WAIT () WAITSTRArrayVar{ } Operación Recibe digitos binarios Recibe digitos decimales Recibe digitos hexadecimales Saltea n caracteres recibidos Recibe una sarta de n caracteres . Si algún byte recibido no concuerda con el próximo en la secuencia de calificación. B0 será 123. los datos son recibidos como 7E1 (7 bit de datos. que pueden ser combinados entre sí. Timeout se especifica en unidades de 1 milisegundo. Reciben tantos digitos como hay en la entrada.. La longitud de la sarta está determinada por el contador ó cuando se encuentre el carácter opcional. Una vez que los calificadores WAIT y WAITSTR están cumplimentados. Una variable precedida por HEX va a recibir la representación ASCII de su valor hexadecimal. [wait (“x”. Por ejemplo. b0).. Modificador BIN {1. B0] ´ saltea 2 caracteres y toma un número decimal de 4 dígitos SERIN2 PORTA. si un número sigue a un modificador. Mode = 16780 (2400 baud. Algunos ejemplos de Mode son: Mode = 84 (9600 baud.. dentro de una declaración SERIN2 para obtener distintos formatos. Todos los no-díhitos recibidos antes que el primer digito del valor decimal es ignorado y descartado. SERIN2 asume un valor de oscilador de 4 Mhz cuando genera sus tiempos de bit.16} DEC{1. [wait (”A”).ej. Una variable precedida por DEC va a recibir la representación ASCII de su valor decimal. las transmisiones seriales son 8N1 (8 bit de datos. B0 será 8. si está especificado BIN B0 y se recibe “ 1000”. 84. antes de seguir adelante. WAUTSTR puede ser usado como WAIT anteriormente. Se puede usar TTL invertido (Mode bit14 = 1) . variable ó una sarta de constantes. SERIN” comienza a guardar los datos en las variables asociadas con cada Item. SKIP 4 salteará 4 caracteres. BIN. (p. [skip 2. el el próximo byte recibido se compara con el primer item en la lista de calificadores)… Un Qualifier puede ser constante. paridad par invertido). SERIN2 convierte un valor binario. asegúrese de usar DEFINE OSC con el nuevo valor de oscilador.1 stop bit). SERIN2 siempre recibirá ese número de dígitos. si está especificado DEC B0 y se recibe “123”. Si se usa solo el nombre de la variable. cierto).1 stop bit). Por ejemplo. SERIN2 debe recibir estos bytes en un orden exacto.1. 84. SKIP seguido por un contador.. SERIN2 soporta distintos modificadores. DEC y HEX pueden estar seguidos por un número. paridad par .2400 4800 9600 19200
Bit 13 selecciona paridad par (bit13=1) ó sin paridad (bit13=0). puede estar precedida por uno ó más calificadores entre parentesis después del WAIT. para forzar a SERIN2 a esperar por una sarta de caracteres de un determinado largo.. se guarda el valor del carácter ASCII. Para mantener los valores de baud rate adecuados con otro oscilador. Por ejemplo. Sin embargo. sin paridad . se reciben los datos en forma normal.. STR seguido por una variable de array. Esto se puede usar para evitar usar drivers RS-232. antes de recibir los datos.. Aunque los chips convertidores de nivel RS-232 son comunes y baratos gracias a la implementación de corriente RS-232 y las excelentes especificaciones de I/O del microPIC. para usar con los drivers RS-232 .
0) El pin opcional de control de flujo FlowPin. Un DEFINE agrega tiempo entre caracteres en la transmisión de salida. Se puede lograr una demora entre cada carácter transmitido de 1 a 65535 microsegundos (. DataPin y FlowPin pueden ser una constante. SEROUT es similar al comando Serout de BS1. No lo incluya. {Pace.} {Timeout...} [Item.15. los rangos de transmisión de SEROUT pueden presentar los caracteres demasiado rápidamente en el dispositivi receptor.ej.. SEROUT SEROUT Pin.Los números Mode pueden ser usados sin incluir este archivo. Mode.53. Item.0) Los nombres Mode (p. Pin puede ser una constante.. si ya está usando uno de ellos .
.BAS ya incluyen MODEDEFS. N2400. 0 . SEROUT asume un valor de oscilador de 4 Mhz cuando genera sus tiempos de bit . [#B0. no se requieren convertidores de nivel en muchas aplicaciones.15 ó una variable que contenga un número de 0-15 (p. Timeout esta especificado en unidades de 1 milisegundo. En algunos casos. SEROUT2 SEROUT2 DataPin {FlowPin}. seguido por un LF al pin 0. SEROUT 0. T2400) están definidos en el archivo MODEDEFS. para pausar 1 milisegundo entre cada carácter transmitido: DEFINE CHAR_PACING 1000 Aunque los chips convertidores de nivel RS-232 son comunes y baratos gracias a la implementación de corriente RS-232 y las excelentes especificaciones de I/O del microPIC. Por ejemplo. PORTA. si W0=123.. que pueden ser combinados libremente dentro de una declaración SEROUT. 10] ´ envía el valor ASCII de B0. asegúrese de usar DEFINE OSC con el nuevo valor de oscilador.ej. Un valor numérico precedido por el signo # va a enviar la representación ASCII de su valor decimal.Para mantener los valores de baud rate adecuados con otro oscilador. N9600). FlowPin es opcional y es automáticamente colocado como entrada. Pin es automáticamente colocado como salida.5. puede ser incluído para ayudar a que los datos no desborden la capacidad del receptor. Se sugiere el uso de un resistor limitador de corriente (se supone que RS-232 es tolerante a los cortocircuitos). en formato standard asincrónico usando 8 bits de datos. Mode.ej. 13 es retorno de carro (Carriage Return ó CR) y 10 es avance de línea (Line Feed ó LF).. Se puede usar TTL invertido (N300.BAS. ”2”.535 milisegundos). PORTA. entonces #W0 (ó #123) va a enviar “1”. Label. B0) ó un número de Pin (p. sin paridad y 1 stop bit (8N1). SEROUT2 es similar al comando Serout de BS2.ej. en forma serial 5. agregue la línea: Include “modedefs.bas” al comienzo de su programa PBP. Para usarlos. Por ejemplo. Este estado es determinado por la polaridad del dato especificado en Mode. Como opción se puede incluir Timeout y Label para permitir continuar al programa si el FlowPin no cambia al estado de habilitación dentro de un cierto tiempo. Más aún.ej. los datos seriales no serán enviados hasta que FlowPin esté en el estado adecuado. ”3”. Si se usa.
SEROUT soporta 3 tipos distintos de datos. [Item [.BAS y BS2DEFS. 0 .001 a 65.BAS.] Envía uno ó más Items al Pin especificado en formato standard asincrónico. Una sarta de constantes es enviada como una sarta de caracteres literales. Esto permite un tiempo adicional entre caracteres a medida que son transmitidos.}] Envía uno ó más Items a Pin. DataPin es colocado como salida en forma automática.. BS1DEFS. ó una variable que contenga un número de 0-15 (p. Un valor numérico (constante ó variable) va a enviar el correspondiente carácter ASCII.54. B0) ó un número de Pin (p..
. La salida estará precedida por alguno de los símbolos %. Normalmente. Se puede usar TTL invertido (N300. Mode se usa para especificar el baud rate y los parámetros de operación de la transferencia serial. entonces DEC B0 va a enviar”123” Un valor numérico precedido por HEX va a enviar la representación ASCII de su valor hexadecimal. con carga).Sin embargo.12 3313 1646 813 396 188 84 32
Bit 13 selecciona paridad par (bit13=1) ó sin paridad (bit13=0). no se requieren convertidores de nivel en muchas aplicaciones. Esto permite la transmisión de números negativos. si un npumero sigue a un modificador.ej. para usar con los drivers RS-232.. ´ envía el valor ASCII de B0.. y un contador opcional.10. dado que se envía el bit de alto orden. Enviando sDEC B0 daría “-1”. Si alguno está precedido por una s (por signo). entonces HEX B0 envia “FE”. Si bit 14=1. Aunque los chips convertidores de nivel RS-232 son comunes y baratos gracias a la implementación de corriente RS-232 y las excelentes especificaciones de I/O del microPIC. las transmisiones seriales son 8N1 (8 bit de datos. si B0=123. DEC y HEX también pueden estar acompañados de un número. va a enviar una sarta de caracteres. Por ejemplo. ó seguidos por varios parámetros opcionales.. Por ejemplo.. $ para indicar que el valor siguiente es binario. SEROUT2 siempre ese número de dígitos. Por ejemplo.ej. Sin embargo. los datos son enviados como 7E1 (7 bit de datos. DEC y HEX pueden estar precedidos.
Modificador {I}{S}BIN {1.16} {I}{S}DEC{1. si el bit de alto orden del dato está alto. sin paridad . Se sugiere el uso de un resistor limitador de corriente (se supone que RS-232 es tolerante a los cortocircuitos). invertido. Los 13 bits de menor orden seleccionan el baud rate. Para encontrar un valor dado. BIN. Algunos ejemplos de Mode son: Mode = 84 (9600 baud. Por ejemplo. BIN6 8 sería enviado como “001000” y BIN2 8 como “00”. ajusta cualquier bit extra de orden superior. si B0=254. Por ejemplo. Mode = 60657 (300 baud. Se puede usar cualquier combinación de modificadores simultáneamente . La longitud de la sarta está determinada por el contador ó cuando se encuentre un carácter 0 en la sarta.. Los bits de baud rate especifican el el tiempo de bit en microsegundos -20. B0 = 9 . en forma serial a 2400 baud
. Recuerde que todas las operaciones u comparaciones de PBP son sin signo. use la ecuación: (1000000/bayd)-20 Algunos baud rate standard se muestran en la tabla siguiente: Baud rate 300 600 1200 2400 4800 9600 19200 Bits 0 . Normalmente. la salida estará precedida por “. Mode = 16780 (2400 baud. 1 stop bit). 13 es retorno de carro (Carriage Return ó CR) y 10 es avance de línea (Line Feed ó LF). ISDEC4 B0. BIN.. La demora puede ser de 1 a 65535 milisegundos entre cada carácter transmitido. si B0=8.1 stop bit). N9600). cierto. REP “0”´ 4 enviará “0000” STR seguido por una variable de array.. Bit 14 selecciona nivel cierto ó invertido. los datos se envian invertidos. SEROUT2 soporta distintos modificadores. paridad par. abierto). Si bit 14=0. como sea necesario. Si se selecciona paridad.P.P. las matemáticas sin signo pueden llevar a resultados con signo.En algunos casos.4} REP c n STR ArrayVar{}
Una sarta de constantes es enviada como una sarta de caracteres literales. los rangos de transmisión de SEROUT2 pueden presentar los datos demasiado rápidamente al dispositivo receptor. Bit 14 selecciona el nivel de los pins de datos y de control de flujo. Si alguno de ellos está precedido por una I (por indicado). dentro de una declaración SEROUT2 para obtener distintos formatos. La opción Pace se puede usar para agregar tiempo entre cada carácter durante la transmisión. que pueden ser combinados entre sí.“. Bit 13 selecciona paridad ó no paridad.. Bit 15 selecciona si está abierto ó no. seguido por un LF al pin 0. El resultado de DEC B0 será “255”. sin paridad. entonces BIN B0 va a enviar “1000” Un valor numérico precedido por DEC va a enviar la representación ASCII de su valor decimal.. con carga). Puede no desearse usar un pin extra para control de flujo. REP seguido por un carácter y un contador. decimal ó hexadecimal.Más aún. El modo abierto puede usarse para conectar varios dispositivos juntos en el mismo bus serial. estos modificadores muestran exactamente tantos dígitos como sean necesarios (sin enviar los ceros a la izquierda). va a repetir el carácter la cantidad de veces que indique el contador. Esto se puede usar para evitar usar drivers RS-232 Bit 15 selecciona si el pin de datos está siempre con carga (bit15=0) ó si queda abierto en uno de los estados (bit15=1). Un valor numérico (constante ó variable) va a enviar el correspondiente carácter ASCII . Un valor numérico precedido por BIN va a enviar la representación ASCII de su valor binario. sin paridad. paridad parinvertido. #. agregando tantos ceros al comienzo. se envian los datos en forma normal.5} {I}{S}HEX{1. Además..
pero sí variables de array con índice constante.0) (en forma opcional) especifica el número de bits a ser desplazado.56. Para usarlos. ejecutando un loop sin fin. Mode. Temp = B0 ´ anteriormente B0=B1 B1=Tem
. Los tonos y el ruido blanco están en una escala ascendente (p.ej. SOUND SOUND Pin.ej. [Var {}. 50. a 9600 baud SEROUT2 PORTA. Pin es automáticamente colocado como salida. Los nombres Mode (p.BAS.ej.15 ó una variable que contenga un número de 0-15 (p. LSBFIRST) están definidos en el archivo MODEDEFS. Los nombres Mode (p. 1 y 128 son las frecuencias menores 129 y 266 las mayores). MSBPRE. B0) ó un número de Pin (p.ej.ej. 10000 Hz.BAS. 1 minuto 5. 0 . si ya está usando uno de ellos. Notes 128-255 son ruido blanco.15.57. Gracias a las características del micro PIC. Normalmente intercambiar los valores de dos variables es un proceso tedioso.74 Hz y Note 127 es aproz. Si no se especifica. Para usarlos.1.BAS y BS2DEFS.7.] El ClockPin. en incrementos de 12 milisegundos. se puede manejar un parlante a través de un capacitor -El valor del capacitor debe ser determinado enfunción de las frecuencias a usar y la carga del parlante. PORTA. Note y Duration no necesitan ser constantes.. ClockPin.. 10. Se necesitó este cambio. Duration es 0-255 y determina el largo de la nota. independientemente del tipo de variable. [B0] SHIFTOUT PORTA. 0 . Ejecutando el comando SLEEP sin calibrar.55. Los números Mode pueden ser usados sin incluir este archivo.bas” al comienzo de su programa PBP. B0) ó un número de Pin (p. No lo incluya. Note 1 es aprox. [wordvar 4] 5. a PORTA pin1. SHIFTIN SHIFTIN DataPin. STOP ´ envía el programa a vía muerta 5.] Desplaza en forma sincrónica el contenido de Var sobre DataPin y ClockPin.0) Note 0 es silencio. Mode LSBFIRST MSBFIRST Mode N° 0 1 Operación Primero desplaza datos del bit inferior Primero desplaza datos del bit superior
SHIFTOUT 0. Period tiene 16 bit.. Nte 1-127 son tonos. 0 . Mode. SOUND entrega como salida ondas cuadradas con nivel TTL. MSBFIRST. también pone valores predefinidos en los registros internos. si ya está usando uno de ellos. [Note. Pin puede ser una constante.ej. SWAP SWAP Variable. SLEEP SLEEP Period Coloca al micro controlador en modo de baja potencia por Period segundos. por lo que es independiente de la frecuencia del oscilador utilizado.BAS ya incluyen MODEDEFS. Si no se especifica. porque cuando el micro PIC pone a cero (resetea) el WatchDog Timer.. Variables de array con índice variable no son permitidas. Los números Mode pueden ser usados sin incluir este archivo. lee datos después de mandar clock
5. Estos valores pueden diferir de los esperados por su programa.2. SHIFTOUT SHIFTOUT DataPin. [Var {}. 1[100. Esta variación es distinta a la de BASIC Stamp. ó una variable que contenga un número de 0-15 (p.SEROUT2 0. este paso se deja de lado. La granulación es aproximadamente 2. ó una variable que contenga un número de 0-15 (p. ClockPin.3 segundos y puede variar de acuerdo al dispositivo y la temperatura. ClockPin y DataPin pueden ser una constante. 84.60. por lo que los retardos pueden ser de hasta 65535 segundos (aprox. desplaza en forma sincrónica los bits en DataPin y guarda los bytes recibidos en Var.58. 10] ´ envía “B0 = 0” seguido por el valor binario de B0. lee datos antes de mandar clock Primero desplaza datos en el bit superior . STOP STOP Detiene la ejecución del programa..ej. 18 horas). [“B0=0”. B0) ó un número de Pin (p. SLEEP usa el WatchDog Timer. PORTA. sin variables intermedias.}] Gebera un tono y/o ruido blanco en el Pin especificado.bas” al comienzo de su programa PBP. 1. Puede ser usado con variables de bit. Note.1.. agregue la línea: Include “modedefs. se desplazan 8 bits. 16780. en forma serial. [B0] Mode N° 0 1 2 3 Operación Primero desplaza datos en el bit superior . BS1DEFS. ihex4 B0] 5. No lo incluya. [dec B0. BS1DEFS. No coloca al micro controlador en modo de baja potencia. Duration {. Parlantes piezo eléctricos pueden ser conectados directamente. 78. MSBPRE) están definidos en el archivo MODEDEFS.BAS y BS2DEFS. 1. PORTA.59. Mode MSBPRE LSBPRE MSBPOST LSBPOST SHIFTIN 0. SOUND PORTB.0) (en forma opcional) especifica el número de bits a ser desplazado.lee datos antes de mandar clock Primero desplaza datos en el bit inferior . independientemente del tipo de variable. 10] ´envía 2 sonidos consecutivos a pin7 5. se desplazan 8 bits. agregue la línea: Include “modedefs. Duration. 1.BAS.ej. SWAP lo hace con una sola declaración.15. SLEEP 60 ´ duerme por aprox. PORTA. vyte y word.lee datos después de mandar clock Primero desplaza datos en el bit inferior .ej. Variable Intercambia los valores de dos variables.BAS. El micro controlador trabaja igual que siempre.BAS ya incluyen MODEDEFS. ClockPin y DataPin pueden ser una constante.
Como X-10 está patentado. esta interfase también cubre el licenciamiento. Si Var es un byte. que corresponde al juego House Code del módulo X-10 de A a P.. 0 .. XIN solamente procesa datos en el momento en que la línea de AC pasa por cero (en ese momento recibe ZeroPin).ej. Cada WRITE se auto regula en tiempo y toma aproximadamente 10 milisegundos ejecutarlo en un microPIC WRIT 5.ej. DataPin es automáticamente convertido en entrada para recibir datos de la interfase X-10. [“No:” #i. {Timeout. Para grabar datos en el EEPROM durante la programación..byte1. 10] WEND 5. Label. PORTA. por lo que el número de módulo es innecesario. Si no hay transiciones en esta línea.15 ó una variable que contenga un número de 0-15 (p. [HouseCode KeyCode {} {. cada códigi House Code recibido. TOGGLE TOGGLE Pin Invierte el estado del Pin especificado.
. Se requiere una interfase para conectar el micro controlador a la línea de AC. #housekey. ZeroPin.63.. B0) ó un número de Pin (p. seguido por un comando especificando la función deseada.”House=”.ej. XOUT después lista las funciones y la información de conexionado.} [Var {.WEND WHILE Condition Statement WEND Ejecuta las declaraciones Statement en forma repetida. DataPin y ZeroPin pueden ser una constante. ZeroPin es automáticamente convertido en entrada para recibir el tiempo de cruce por cero de la interfase X-10 . I=1 WHILE i < = 10 Serout 0. Condition puede ser cualquier expresión de comparación. si no hay va a nodata XIN PORTA. WRITE WRITE Address. B0) ó un número de Pin (p. Se necesita un TW-523 para comunicaciones de dos vías. XIN se usa para recibir información de dispositivos X-10.. El Hpuse Code es un número 0-15. para trabajar con XIN.ej. DataPin es automáticamente convertido en salida para enviar datos a la interfase X-10. Cuando Condition deja de ser cierta. si no se reciben datos en un lapso de tiempo determinado.. En la práctica. que corresponde al juego House Code del módulo X-10 de A a P.64. Como X-10 está patentado. XIN XIN DataPin. Si Var tiene tamaño de word. B0 ´ envía el valor de B0 al EEPROM pin 5
5. mientras la condición Condition sea cierta. Algunas funciones operan en todos los módulos.0) En forma opcional se pueden incluir Timeout y Label para permitir continuar el programa. se guarda en el byte superior del word. El Hpuse Code es un número 0-15. 13. Los módulos X-10 están disponibles en muchos lugares y de distintos proveedores. Los ejemplos posteriores ayudarán a clarificar el tema. Pin puede ser una constante. Si no hay transiciones en esta línea.ej. XOUT XOUT DataPin. Esta instrucción solo puede ser usada con un microPIC que tenga un EEPROM incorporado como el PIC16F84 ó PIC16C84 Es usado para colocar datos en el EEPROM durante el momento de la ejecución. XOUT se usa para enviar información de control a dispositivos X-10. nodata.15.0) Low 0 ´ comienza Pin0 como bajo TOGGLE 0 ´ cambia a alto el estado del pin 0 5. 0 . Pin es automáticamente colocado como salida. Housekey var word ´ obtiene datos X-10 loop: XIN PORTA. Timeout está especificado en medios ciclos de la línea de AC (aprox. [housekey] 5. Repeat usualmente se usa con los comandos Bright y Dim. PORTA..SWAP B0.. esta interfase también cubre el licenciamiento.0. se usan las declaraciones DATA y EEPROM.Ambos pins pueden ser llevados a 5 volt con resistores de 4.}] Recibe datos X-10 y guarda el House Code y el Key Code en Var. la ejecución continúa con la declaración siguiente al WEND.65. 8. repetidos un número Repeat de veces en formato X-10. Value Graba valores Value en el EEPROM incorporado en la dirección Address especificada. Cada código Key Code recibido se guarda en el byte inferior del word.0) XOUT solamente procesa datos en el momento en que la línea de AC pasa por cero (en ese momento recibe ZeroPin). El HouseCode apropiado debe ser enviado como parte de cada comando..ej.2. XIN esperará que las haya. [housekey] ´ muestra los datos X-10 en un LCD Lcdout $fe.15 ó una variable que contenga un número de 0-15 (p. PORTA.61. Se requiere una interfase para conectar el micro controlador a la línea de AC. solo se guarda el Key Code. Los módulos X-10 están disponibles en muchos lugares y de distintos proveedores. PORTA. 1. Key Code 0-15 corresponden a números de módulo 1-16. Se necesita un TW-523 para comunicaciones de dos vías para trabajar con XIN. 1. ZeroPin. N2400. 0 .7 K. #housekey.33 milisegundos).”Key=”.byte0 Goto loop ´ por siempre ´ chequea por datos X-10. ZeroPin es automáticamente convertido en entrada para recibir el tiempo de cruce por cero de la interfase X-10. PORTA. Si no se usa Repeat se asume 2 veces como mínimo. Este dispositivo tiene la interfase a la línea de alimentación y aísla el micro controlador de la línea de AC.. primero se envía un comando especificando el número de módulo X-10.}] Env+ia un HoseCode seguido por un KeyCode. ó un PL-513 para enviar solamente. B1 ´ahora 5. Estos dispositivos tienen la interfase a la línea de alimentación y aíslan el micro controlador de la línea de AC. WHILE.. DataPin y ZeroPin pueden ser una constante. XIN esperará que las haya. ó una variable que contenga un número de 0-15 (p. Ambos pins pueden ser llevados a 5 volt con resistores de 4. B0) ó un número de Pin (p.0.7K. El Key Code puede ser el número de un módulo específico de X-10 ó la función que debe ser realizada por un módulo..62.2.
1 PORTA.BAS.0.1. BS1DEFS. La salida de la interfase X-10 (cruce por cero y datos) es a colector abierto y necesita un resistor de aprox. Para usarlos. PORTA. [house] pause10000 XOUT PORTA. si ya está usando uno de ellos. bas” house=0 unit=8 ´ coloca 0 en house (A) ´ coloca 8 en unit (9)
XOUT PORTA.BAS y BS2DEFS.0. seguido por un comando especificando la función deseada. 4.1.BAS. En la práctica. house unitOn] ´ enciende unit 8 en house 0 XOUT PORTA. [house] pause 10000 ´ espera 10 segundos goto loop ´ espera 10 segundos ´ apaga todas las luces en house 0 ´ parpadea la luz 0 cada 10 segundos
. primero se envía un comando especificando el número de módulo X-10. [house0] loop XOUT PORTA.0. Algunas funciones operan en todos los módulos.bas” al comienzo de su programa PBP.ej.0.El Key Code puede ser el número de un módulo específico de X-10 ó la función que debe ser realizada por un módulo. por lo que el número de módulo es innecesario.BAS ya incluyen MODEDEFS. Los nombres Keycode (funciones) (p. Key Code 0-15 corresponden a números de módulo 1-16.1 PORTA. agregue la línea: Include “modedefs. [house unit. PORTA. uniton) están definidos en el archivo MODEDEFS.1. No lo incluya. PORTA.0. [house lightsOff] XOUT PORTA.7 K conectado a 5 volt. Los ejemplos posteriores ayudarán a clarificar el tema. La tabla siguiente muestra el xonexionado: Cable N° 1 2 3 4 Color del cable Negro Rojo Verde Amarillo Conexión Salida cruce por cero Comun cruce por cero Común transmisión X-10 Entrada transmisión X-10
Include “modedefs. Los números KeyCode pueden ser usados sin incluir este archivo.
Conectarse a la interfase X-10 requiere 4 conexiones.
= amarillo Banda 4. A mayor valor. Las primeras tres bandas nos dicen el valor. Si se fija en la secuencia de bandas observará que una de las bandas (en un extremo) es dorada. determine su valor de la lista de arriba y escríbalo.Apéndice C: Leyendo el Código de Colores de los Resistores Leyendo el Código de Colores de los Resistores
La mayoría de los tipos comunes de resistores tienen bandas de colores que indican su valor. de carbón. mire el primer color. Por ejemplo: Un resistor tiene las siguientes bandas de color: Banda 1. La tercer banda es la cantidad de ceros a agregar. Ésta es la cuarta banda. con una tolerancia del 5%”. = rojo Banda 2. Haga lo mismo con la segunda banda. = violeta Banda 3. Los resistores que usaremos en esta serie de experimentos son normalmente “1/4 watt. y el color dorado significa que tiene una tolerancia del 5%. menor es el flujo de corriente a través del resistor (a un voltaje dado). medido en “ohms”. = dorado
. Los valores de los colores son los siguientes: negro 0 marrón 1 rojo 2 naranja 3 amarillo 4 verde 5 azul 6 violeta 7 gris 8 blanco 9 Para determinar el valor del resistor.
Mirando la lista de arriba vemos que el rojo vale 2. Violeta tiene un valor de 7. Así que escribimos: “2”.000 ohms (o 270k) y una tolerancia del 5%. Así que escribimos: “27” Amarillo tiene un valor de 4. Así que escribimos: “27 y cuatro ceros” o “270. Este resistor tiene un valor de 270.000”.
Documents Similar To Pic 16f628a -Manual de PracticasSkip carouselProyectos Microcode Studio PlusElectronic A Practica MicroControladores-Santiago Corrales VMis primeros programas con PIC16F84A y PIC16F628A.pdf157485942 Curso de Programacion de PIC en PICBasic Pro DocxMicro Control Adores PIC VallejoManual de Microcode Studiopic16F628Configuracion Oscilador Interno de Pic 16f628aTutorial PicMicrocontroladores PIC16F877A Y PIC16F887 - Daniel Salvatierra 2Caracteristicas Del Pic 16f628aMicro Control Adores Pic BasicElectronica Practica Con Microcontroladores Pic.pdfISSUU+Proyectos+con+Microcontroladoresmicrocontroladores_picCurso en c Para Pic Ccs[Valdez Pallas] Fundamentos y Aplicaciones Con PICCurso de Mcu_proteusIntroduccion a La Programacion de Microcontroladores Pic en C-John CaipaTutorial-Programacion de Microcontroladores pic18F2550 con BasicTutorial PIC16F877A(Algunas Mejoras)Libro Simulacion MikrocMicrocode Studio PlusTutorial I -Prender y apagar un led-curso basico de microcontroladores pic-cekitC + Para AutomatizacionPic Microcontroladores(Ejemplos Interesantes)4.-Ejercicios Resueltos de MicrocontroladoresPracticas Del Libro en ProteusFUENTE de ALIMENTACION Regula de 30v Terminado Para ImprimirMore From Juan Fco Rocha ParedesSkip carouseltransformador 1a164824694 Ejercicio 22 RuedaComplement o 1Manual de Hidraulica Industrial.pdfneumatica ejercicios.pdfneumatica-Norgren-ejercicios.pdfrodamientos trabajos.pdfneumatica-2(teoria)neumatica-1(teoria)labandatransportadora-120103174749-phpapp02Ingeniería de Control - 2da Edición - W. BoltonLibro.de.ORO.de.Visual.basic.6.0Curso Práctico de AudioEl_Lenguaje de Programacion C++_StroustrupHTML CursoProyectos de ElectronicaManual de Soldadura Electrica Mig y TigResistencia de Materiales Problemas ResueltosLD MICRO Guia Plc AlternativoCircuitos de Electronica_150 Alarmas Amplificadoressistemas_mecanicosRelevadores Inteligentes-manual de ZelioDibujo MecanicoManejo Del OsciloscopioSeguridad IndustrialCircuitos Electronicos - LibroElectronic Hobby Circuits - Ravi GurmaniArrancador Motor TrifacicoCCS ManualServomotor Porgramacion Controlar La Pocicion

References: resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución