Upload
javier-piscoya-sanchez
View
31
Download
2
Embed Size (px)
DESCRIPTION
PROTON IDE
Citation preview
PROTON IDE
PROTON IDEGRENELECTRONIC DESARROLLO CON MICROCONTROLADORES PICndice1. Introduccin
2. Cdigo de programacin Basic
3. Cdigos Binario, hex., Decimal, ASCII4. Programacin I Laso abierto, secuencia
Actividades de programacin I
5. Programacin II
Laso cerrado, compuertas lgicas Secuencia de control y carga
Actividades de programacin II6. Programacin III Display de 7 segmentos
Actividades de programacin III
7. Programacin IV LCD, lm35, instrumentacin
Actividades de programacin IV
8. Programacin V Motores, Servos y PAP Actividades de programacin V
9. Programacin VI Robtica sensorial
Actividades de programacin VI
10. Programacin VII Visual Basic Comunicacin serial rx tx Actividades de Programacin VII
Qu es un microcontrolador?Es un circuito integrado programable que acepta un listado de instrucciones y contiene todos los componentes de un computador. Se utilizan para realizar determinadas tareas o para gobernar dispositivos, debido a su reducido tamao, suele ir incorporado en el propio dispositivo que gobierna.
El microcontrolador es un dispositivo dedicado. En su memoria solo reside un programa destinado a gobernar una aplicacin determinada, sus lneas de entradas y salidas (I/O) permiten la conexin de sensores y relay. Una vez programado y configurado el microcontrolador solamente sirve para gobernar la tarea asignadaLos microcontroladores en general, y los de la empresa Microchip en particular, necesitan de un circuito electrnico auxiliar que nos permita transferirles desde el ordenador el programa que hemos escrito para ellos.Hay muchas maneras de encarar este problema, y en general se suele utilizar alguno de los puertos disponibles en cualquier ordenador para este fin. As es que en el mercado es posible conseguir quemadores de PICs con conexin para puerto USB, paralelo o serie (RS-232).
Los microcontroladores de Microchip (PICs) se programan mediante un protocolo tipo serie. Se necesitan dos tensiones de alimentacin para poder llevar a cabo la programacin: una de 4.5v a 5.5v (VDD) y otra comprendida entre 12v y 14v (VPP), que es la que indica al PIC que va a ser programado, para que el cambie la funcin que realizan los pines I/O implicados en la programacin. Los pines implicados en la programacin varan de un microcontrolador a otro, pero en general, los de un mismo numero de pines (8, 18, etc.) tienen las mismas patitas asignadas a la programacin, lo que nos permite construir programadores que sirvan para mas de un PIC.Es muy recomendable leer la hoja de datos de Microchip sobre este tema dado que es conveniente conocer el mecanismo implicado en la programacin (tiempos, seales, etc). El documento se refiere especficamente a la familia 16F8x, pero los dems no difieren demasiado de lo all expuesto.El programador, ser el encargado de transferir el programa que escribamos en la PC a la memoria FLASH del PIC. Esta es una memoria no voltil, de bajo consumo, que se puede escribir y borrar en el circuito integrado (al igual que las EEPROM). Microchip comercializa dos microcontroladores prcticamente iguales que slo se diferencian en que la memoria de programa de uno de ellos es tipo EEPROM y la del otro tipo Flash. Se trata del PIC16C84 y el PIC16F84, respectivamente.Adems de esta memoria, casi todos los PICs tambin disponen de una memoria de datos de lectura y escritura no voltil, (esta del tipo EEPROM). De esta forma, un corte en el suministro de la alimentacin no ocasiona la prdida de la informacin, que est disponible al reiniciarse el programa. Por ejemplo, el 16F84 dispone de 64 bytes de memoria EEPROM para contener datos, y los programas que creemos pueden leer y escribir en ella.
BOOTLOADER
Un bootloader (cargador de arranque ) es un programa sencillo que no tiene la totalidad de las funcionalidades de un sistema operativo, diseado exclusivamente para preparar todo lo que necesita el sistema operativo para funcionar. Normalmente se utilizan los cargadores de arranque multietapas, en los que varios programas pequeos se suman los unos a los otros, hasta que el ltimo de ellos carga el sistema operativo.
En los ordenadores modernos, el proceso de arranque comienza con la CPU ejecutando los programas contenidos en la memoria ROM en una direccin predefinida y se configura la CPU para ejecutar este programa, sin ayuda externa, al encender el ordenador.
Bootloader es un pequeo programa de arranque, residente en las primeras 0x800 bytes de la memoria de programa de un Microcontroladores PIC. El bootloader funciona en el momento del cargado de programa (justo cuando el PIC es reseteado) y es capaz de cargar un completo programa de aplicacin en la memoria de programa del PIC.Microchip ofrece, de tamao compacto, verstil, autnomo, que ha sido diseado pensando en la necesidad de contar con un modulo que fcilmente pueda ser montado sobre un Protoboard y la ves se pueda tener un potente microcontrolador de la gama serie 18 equipado con puerto de comunicaciones USB, Serie, I2C, Paralelo, Conversores A/D, mltiples puerto I/O, los cuales estn disponibles para ser conectados a diferentes circuitos y configuraciones sin necesidad de retirar el PIC del Protoboard para programarlo cada ves que sea necesario, modificar el programa grabado el PIC o para una fcil depuracin del programa en proceso de desarrollo.Estructura del programa en Pic BasicUn programa bsico consta de:
Programa de cabecera
Declaraciones
Explicacin de los signos e identificadores
Declaraciones y comandos
Adems de estas estructuras de base, algunos compiladores tambin permiten programacin orientada a objetos, as como procedimientos y funciones. Sin embargo
Protn IDE no permite los procedimientos y funciones en el verdadero sentido, as como no es compatible con los objetos.
Tiene enfoque orientado hacia el simple y sencillo llamado de instrucciones. La programacin comienza en la parte superior, y la contina hacia abajo. Sin embargo permite las repeticiones.
Las primeras lneas del programa BASIC, difieren en la memoria de los microcontroladores, EEPROM, nmero de puertos y registros, etc., es necesario informar al compilador sobre el microcontrolador que se utilizar. En segundo lugar la velocidad de procesamiento depende de la frecuencia del cristal. Por lo tanto, a fin de calcular con precisin el calendario de funciones de retraso tambin es necesario informar al compilador de la frecuencia del cristal Los programas de lenguaje BASIC usualmente comienzan as:
Device = 16F877A
XTAL = 4
La primera lnea indica el procesador y la segunda lnea dice que el hardware utiliza
20MHz de cristal.
Declaraciones
Son instrucciones especiales sobre los diversos dispositivos a utilizar, esto ayuda al compilador a generar instrucciones especficas. Por ejemplo, si estamos usando una pantalla LCD y se conecta en PORTD, entonces tenemos que informar las conexiones de nuestro LCD. Vamos a declarar este tipo de configuracin generalmente despus de la seccin de encabezado utilizando los comandos:
Declare LCD_DTPIN PORTD.0
Hay un nmero de declaraciones, sin embargo, slo las necesarias en el proyecto actual se fijan normalmente....
Identificadores
Los identificadores son smbolos de texto especial que se utiliza para representar algo.
Pueden ser utilizados como etiquetas para marcar ciertos lugares en el programa, de modo que el programa se puede hacer para ir a las etiquetas y luego continuar con el programa a partir de entonces. Del mismo modo los identificadores pueden usarse para nombrar algunas ubicaciones de memoria.
Estos son por lo general variables llamadas, y son los identificadores ms importantes en la programacin. Los identificadores tambin se pueden utilizar como alias en cierto texto, de modo que en lugar de escribir el texto concerniente del identificador, el compilador inserta el texto pertinente en su lugar.
Las declaraciones y comandos
Hay tres tipos de declaraciones:
Comparacin y declaraciones condicionales
Repeticin y declaraciones de bucle
Biblioteca de comandos
Comparacin y sentencias condicionales nos permiten comparar dos o ms variables, los puertos, los pines del puerto o registros de funciones especiales y luego tomar la decisin de ejecutar un conjunto de instrucciones o de otro conjunto.
Considerando la importancia de estas declaraciones, el lenguaje BASIC prev diferentes construcciones de esto. Vamos a explorar estas a continuacin.
La repeticin y de bucle es una de las mayores ventajas de los microprocesadores.
Podemos encargar al microcontrolador repetir continuamente ciertas instrucciones, ya sea indefinidamente, o hasta que una determinada condicin existe.
Por ejemplo, para mantener un LED, hasta que la temperatura es alta desde un punto de ajuste.
Biblioteca de Comandos, no son propiamente los comandos del lenguaje BASIC, pero son proporcionados por el fabricante del compilador para hacer las tareas comunes. Por ejemplo, un comando de biblioteca para mostrar algunos datos sobre la LCD o para leer los datos analgicos de un pin de entrada.
Etiquetas
Para marcar las declaraciones que el programa podra hacer referencia con los comandos Goto, Call o Gosub, PROTON utiliza las etiquetas de lnea. A diferencia de los antiguos BASICS, PROTON no permite o exige a los nmeros de lnea y no requiere que se etiquete cada lnea. En cambio, cualquier lnea puede comenzar con una etiqueta de lnea, que es simplemente un identificador seguido de dos puntos (:).
LAB:
PRINT "Hola Mundo"
GOTO LAB
Los nombres de etiqueta pueden ser de hasta 32 caracteres de longitud y puede contener cualquier carcter alfanumrico, pero no debe comenzar con un valor numrico. Por ejemplo:
Label1:
Es perfectamente vlido, sin embargo:
1LABEL:
Se producir un error de sintaxis porque las etiquetas se inician con el valor 1. Una etiqueta que contenga ms de 32 caracteres producir un error de sintaxis sealando la etiqueta de reincidencia. Tambin se permite caracteres como parte de la etiqueta. Esto ayuda a crear ms nombres de etiqueta descriptiva. Por ejemplo:
THISISALABEL: No tiene la misma claridad de significado como: THIS_IS_A_LABEL:
Variables: Las variables se utilizan para almacenar datos temporalmente o para mantener nmeros que se utilizarn en los clculos. El nmero de variables que pueden ser utilizados en un programa depende de la memoria RAM del microcontrolador, la arquitectura del Microcontrolador, la parte de la memoria RAM, la memoria del programa.
Smbolos y grficos
Un diagrama de flujo se construye con unos smbolos grficos especiales que representan acciones, funciones, y equipamiento usado para lograr un resultado especfico.
PROGRAMACION CON PROTON IDECONFIGURAR MICROCONTROLADOR
Device 16F870
Device 16F873A
Device 16F877A
Device 18F225
CONFIGURAR VELOCIDAD DEL MICRO EN Mhz
Xtal 4
Xtal 10
Xtal 20
Xtal 40
CONFIGURAR PINES DIGITALES
All_Digital= true ' PARA PUERTOS A Y E
CONFIGURAR MEMORIA
BUS I2C -------
SCL_Pin= PORTA.7
SDA_Pin= PORTA.6
CONFIGURAR VARIABLES
Tecla var Byte ' no se recomiendaDim tecla As Byte
Dim cont2 As WORD
Dim cont1 As DWORD
CONFIGURAR LCD
Declare LCD_Type = 0
Declare LCD_DTPin = PORTD.0
Declare LCD_ENPin = PORTD.5
Declare LCD_RSPin = PORTD.4
Declare LCD_Interface = 4
Declare LCD_Lines = 2
CONFIGURAR LCD GRAFICOLCD_DTPort = PORTD
LCD_RSPin = PORTC.1
LCD_ENPin = PORTE.0
LCD_RWPin = PORTC.0
LCD_CS1Pin = PORTE.1
LCD_CS2Pin = PORTE.2
LCD_Type = GRAPHIC
Internal_Font = OFF
Font_Addr = 0
CONFIGURAR TECLADOKeypad_Port = PORTB
CONFIGURAR COMUNICACIN SERIALSerial_Baud = 9600
Rsout_Pin = PORTC.6
Rsout_Mode = TRUE
Rsout_Pace = 1
Rsin_Pin = PORTC.7
Rsin_Mode = TRUE
Hserial_Baud = 9600' velocidad baudios 9600
Hserial_RCSTA = %10010000 ' Enable serial port and continuous receive
Hserial_TXSTA = %00100100 ' Enable transmit and asynchronous mode
Hserial_Clear = On ' Enable Error clearing on received characters
CONFIGURAR UNA ENTRADA
Input PORTC.3 'declaro que el puerto C pin.3 es entradaTRISA=1 'declaro que el puerto A es entrada pero solo el pin.0TRISA.0=1 'declaro que el puerto A es entrada pero solo el pin.0
TRISA=%11111111 'declaro que el puerto A es entrada
TRISA=$FF 'declaro que el puerto A es entrada
TRISA=255 'declaro que el puerto A es entrada
CONFIGURAR UNA SALIDA
Output PORTC.7 'declaro que el puerto C pin.7 es salidaTRISA=0 'declaro que el puerto A es salidaTRISA.0=0 'declaro que el puerto A es salida pero solo el pin.0
TRISA=%00000000 'declaro que el puerto A es salida
TRISA=$0 'declaro que el puerto A es salida
CONFIGURACION COMBINADA
TRISA=%00001111 'declaro que el puerto A ser: entrada los pines 0,1,2,3 y salida 4,5,6,7
TRISA=$F 'declaro que el puerto A ser: entrada los pines 0,1,2,3 y salida 4,5,6,7
TRISA=15 'declaro que el puerto A ser: entrada los pines 0,1,2,3 y salida 4,5,6,7
ACTIVAR PUERTO
High xx8Low xx8Low PORTB 'el puerto b esta en nivel bajo (apagado)High PORTB 'el puerto b esta en nivel ALTO (ACTIVO)PORTB=0 'el puerto b esta en nivel bajo (apagado)PORTB.0=0 'el puerto b solo el pin.0 con nivel bajo
PORTB=%00000000 'el puerto b esta con nivel bajo
PORTB=1 'el puerto b solo el pin.0 con nivel alto (activado)PORTB.0=1 'el puerto b solo el pin.0 con nivel alto
PORTB=7 'el puerto b reproduce el dato 00000111 dec
PORTB=3 'el puerto b reproduce el dato 00000011 dec
PORTB=$F 'el puerto b reproduce el dato 00001111 hex
PORTB=$3F 'el puerto b reproduce el dato 00111111 hex
PORTB=%11111111 'el puerto b esta con nivel alto bin
ALIAS PARA PERIFERICOS
Symbol MOTOR = PORTA.1 existe un motor conectado en el puerto A pin.1Symbol SW = PORTA.2existe un pulsador conectado en el puerto A pin.2
ACTIVAR POR CONDICION
If s1=0 Then ' el micro espera un 0 para activar una rutina
If s1=1 Then ' el micro espera un 1 para activar una rutina
If s1=1 And s2=0 And s3=0 Then PROG 'debe cumplir e ir a una sub rutina
EndIf ' antes de concluir una rutina al usar IF sin bucle
ACTIVAR SOFT.WERE POR etiquetas
GoSub GIRA activar una rutina llamada GIRA
GIRA:
Return retornar al punto de inicioRETARDOS
DelayMS 1000 ' RETARDO DEL ESTADO 1000 ES 1SEG
DelayMS 500 ' RETARDO DEL ESTADO 500 ES 1/2SEG
DelayUS 1000 ' RETARDO DEL ESTADO 1000 ES 1mseg
pause 1000 ' RETARDO DEL ESTADO 1000 ES 1SEG no se recomienda
ACTIVAR TEXTO EN UN LCD
Print At 1,1, " ACTIVAR ESTACION "'ESCRIBE EN LA LINEA 1 POSICION 1 DelayMS 5000
RESCATAR UN VALOR EN DECIMAL
Dim cc As Word
Print At 1,1, "f = ", Dec cc' imprimir el dato en el LCD desde ccCONTAR LOS PULSOS QUE ENTRAN EN UN PIN
WRD = Counter Pin , 1000 ' LA VARIABLE WRD CONTIENE EL VALOR DE ENTRADA EN 1seg
CONTADOR DE EVENTOS CON OPERATORIA
If IRIS =1 Then
DelayMS 500
cont1 = cont1 + 1 'se ejecuta una suma en memoria
EndIf
Organizador de instrucciones (branch,on goto,on gosub)
IF VAR1 = 0 THEN GOTO LAB_0 por BRANCH VAR1, [Lab_0, Lab_1, Lab_2] IF VAR1 = 1 THEN GOTO Lab_1 ON VAR1 GOTO LABEL_0, LABEL_1, LABEL_2IF VAR1 = 2 THEN GOTO Lab_2 ON VAR1 GOSUB LABEL_0, LABEL_1, LABEL_2
Quiebre de bucle o rutina
IF VAR1 = 10 THEN BREAK ' BREAK ROMPE EL BUCLE CUANDO LLEGUE A 10DELAYMS 200
Ejecutar un bloque de instrucciones hasta que una condicin es verdadera
VAR1 = 1 REPEAT PRINT AT 1, 1, DEC VAR1 O REPEAT HIGH LED: UNTIL PORTA.0 = 1 DELAYMS 200INC VAR1 UNTIL VAR1 > 10Configurar una entrada analgica
Declare ADIN_RES10 'resolucinDeclare ADIN_TAD2 'CLK options are 0, 1, 2, 3 (0-2 are based on internal cycles)
Declare ADIN_STIME100 'tiempo de muestreoADCON1 = %10000000 ' Setup Del registro ADCON1, AN1 / RA1 es anlogo
Mueva la posicin del cursor en la pantalla LCD para una lnea y posicin determinada.
DIM Line as BYTE DIM Xpos as BYTE Line = 2 Xpos = 1 CLS PRINT "HELLO" ' Display LCD CURSOR Line , Xpos ' line 2, position 1 ACTIVAR POR BUCLE
gg: ' etiqueta princial, ejecuta una rutina
PORTD.2=1
DelayMS 200
PORTD.2=0
DelayMS 200
GoTo gg ' termina la rutina y regresa a la etiqueta
``````````````````````````````````````````````````````````````````
LOOP: LED = 1 ' First LED on
DelayMS 300 ' Delay for .3 seconds
For SCAN = 1 To 7 ' Go through For..Next loop 7 times
LED = LED ?
ASCII
Hex
Smbolo
64656667686970717273747576777879
404142434445464748494A4B4C4D4E4F
@ABCDEFGHIJKLMNO
ASCII
Hex
Smbolo
80818283848586878889909192939495
505152535455565758595A5B5C5D5E5F
PQRSTUVWXYZ[\]^_
ASCII
Hex
Smbolo
96979899100101102103104105106107108109110111
606162636465666768696A6B6C6D6E6F
`abcdefghijklmno
ASCII
Hex
Smbolo
112113114115116117118119120121122123124125126127
707172737475767778797A7B7C7D7E7F
pqrstuvwxyz{|}~
Programacin IEl proceso se desarrolla en diferentes fases sin comprobar que el objetivo se ha alcanzado satisfactoriamente. En el ejemplo de una lavadora, la seal de salida (que sera la ropa lavada) no se introduce en el sistema en ningn momento para poder dar el proceso por terminado. Es posible que la ropa no est bien lavada pero el sistema no puede rectificar automticamente. Esto se denomina laso abierto1-ACTIVEMOS UN LED, pero con un destello
Device 16F870 'microcontrolador
Xtal = 20 'velocidad
TRISB=0 ' DECLARO PUERTO B SALIDA
PORTB=0 ' ASEGURO EL PUERTO B LOW
E: 'ETIQUETA
PORTB.0=1 'ENVIO UN NIVEL ALTO AL PIN 0DelayMS 1000 ' EL LED SE MANTIENE ACTIVO POR 1SEG
PORTB.0=0 'ENVIO UN NIVEL BAJO AL PIN 0
DelayMS 1000 ' EL LED SE MANTIENE APAGADO POR 1SEG
End 'FIN DE LA RUTINA
2-ACTIVEMOS UN LED, destello infinitoDevice 16F870 'microcontrolador
Xtal = 20 'velocidad
TRISB=0 ' DECLARO PUERTO B SALIDA
PORTB=0 ' ASEGURO EL PUERTO B LOW
E: 'ETIQUETA
PORTB.0=1 'ENVIO UN NIVEL ALTO AL PIN 0DelayMS 1000 ' EL LED SE MANTIENE ACTIVO POR 1SEG
PORTB.0=0 'ENVIO UN NIVEL BAJO AL PIN 0
DelayMS 1000 ' EL LED SE MANTIENE APAGADO POR 1SEG
GoTo E 'IR A ETIQUETA
3-ACTIVEMOS UN LED, alterando la pausaDevice 16F870 'microcontrolador
Xtal = 20 'velocidad
TRISB=0 ' DECLARO PUERTO B SALIDA
PORTB=0 ' ASEGURO EL PUERTO B LOW
E: 'ETIQUETA
PORTB.0=1 'ENVIO UN NIVEL ALTO AL PIN 0DelayMS 50 ' EL LED SE MANTIENE ACTIVO POR 50mSEG
PORTB.0=0 'ENVIO UN NIVEL BAJO AL PIN 0
DelayMS 50 ' EL LED SE MANTIENE APAGADO POR 50mSEG
Goto E ' IR AL COMIENZO DEL PROGRAMA4-ACTIVEMOS UN LED, cambiando el pin
Device 16F870 'microcontroladorXtal = 20 'velocidad
TRISB=0 ' DECLARO PUERTO B SALIDA
PORTB=0 ' ASEGURO EL PUERTO B LOW
E: 'ETIQUETA
PORTB.5=1 'ENVIO UN NIVEL ALTO AL PIN 5DelayMS 100 ' EL LED SE MANTIENE ACTIVO POR 100mSEG
PORTB.5=0 'ENVIO UN NIVEL BAJO AL PIN 5
DelayMS 100 ' EL LED SE MANTIENE APAGADO POR 100mSEG
Goto E ' IR AL COMIENZO DEL PROGRAMA5-ACTIVEMOS UN LED, cambiando de puerto
Device 16F870 'microcontrolador
Xtal = 20 'velocidad
TRISC=0 ' DECLARO PUERTO C SALIDA
PORTC=0 ' ASEGURO EL PUERTO C LOW
E: 'ETIQUETA
PORTC.0=1 'ENVIO UN NIVEL ALTO AL PIN 5DelayMS 50 ' EL LED SE MANTIENE ACTIVO POR 50mSEG
PORTC.0=0 'ENVIO UN NIVEL BAJO AL PIN 5
DelayMS 50 ' EL LED SE MANTIENE APAGADO POR 50mSEG
Goto E ' IR AL COMIENZO DEL PROGRAMA
OTRAS FORMAS
inicio:
High led pause 1000
Low led pause 1000
GoTo inicio
End
inicio:
High PORTB.0
pause 1000
Low PORTB.0
pause 1000
GoTo inicio
End``````````````````````````````````````````````````````````````````````inicio1:
PORTB.0 = 1
pause 1000
PORTB.0 = 0
pause 1000
GoTo inicio
End
inicio:
High 0:Low 1:Low 2:Low 3:Low 4: High 5
DelayMS 1000
High 0:High 1:Low 2:Low 3:Low 4: High 5
DelayMS 1000
GoTo inicio
End
inicio:
PORTB = %00100001
delayms 1000
PORTB = %00100011
delayms 1000
GoTo inicio
End Actividades de programacin I
1. DESARROLLE UN SISTEMA PROGRAMADO QUE ACTIVE 8 LED EN EL PUERTO C DEL MICROCONTROLADOR 16F870, CON UNA PAUSA DE Segundo EN FORMA INFINITA, CADA UN0 DE LOS LED ACTUARAN EN ESCALERA.
2. DESARROLLE UN SISTEMA PROGRAMADO QUE ACTIVE 8 LED EN EL PUERTO C DEL MICROCONTROLADOR 16F870, CON UNA PAUSA DE Segundo EN FORMA INFINITA, LOS LED ACTUARAN EN PENDULO
3. DESARROLLE UN PENDULO INFINITO CON LOS PUERTOS B Y C, CON PAUSAS DE 100 mseg.CON EFECTO SEGUIDOR DE POSICION, los led se activaran, dejandolo en posicin otro led.4. DESARROLLE SEMAFORO CON EL PUERTO B , CON PAUSAS DE 100 mseg.Nota: esquematice cada circuito en un formato A4, con su diagrama de flujo y programa.Programacin IISi la seal que queremos controlar debe alcanzar un valor determinado, es habitual que el sistema la mida constantemente y acte para alcanzar ese valor deseado. En este caso el sistema es realimentado, y hablamos de un sistema automtico de lazo cerrado. El funcionamiento de un sistema automtico de lazo cerrado se resume de esta forma.
El circuito, se a complementado con un pulsador, y una resistencia, enviaran un estado lgico al PIC, en este caso el pulsador enviara un 1 al pulsar, sin pulsar la resistencia mantiene un estado 0 por estar a tierra, si no esta la resistencia siempre existir un 1.
El circuito, se a complementado con un pulsador, y una resistencia, enviaran un estado lgico al PIC, en este caso el pulsador enviara un 0 al pulsar, sin pulsar la resistencia mantiene un estado 1 por estar a +5vcc, si no esta la resistencia siempre existir un 1.
Estos circuitos, sern capas de relacionar estados externos, actuando como condicionales para la ejecucin de los programas. Vea: IF_____Then______Endif1-ACTIVANDO UN LED, por un pulsador, enviando un1(button)
Device 16F870 'microcontrolador
Xtal = 20 'velocidad
TRISA=1 'declaro que el puerto A es entrada
TRISB=0 ' DECLARO PUERTO B SALIDA
All_Digital= true ' todos los pines del micro son digitales
PORTB=0 ' ASEGURO EL PUERTO B LOW
E: 'ETIQUETA
If PORTA.0 = 1 Then 'el micro espera un 1 para activar
PORTB.0=1 'ENVIO UN NIVEL ALTO AL PIN 7
DelayMS 1000 ' EL LED SE MANTIENE ACTIVO POR 1SEG
PORTB.0=0 'ENVIO UN NIVEL BAJO AL PIN 7
DelayMS 1000 ' EL LED SE MANTIENE APAGADO POR 1SEG
EndIf ' si es fin
End 'fin
2-ACTIVANDO UN LED, por un pulsador, enviando un 0 (button)
Device 16F870 'microcontrolador
Xtal = 20 'velocidad
TRISA=1 'declaro que el puerto A es entrada
TRISB=0 ' DECLARO PUERTO B SALIDA
All_Digital= true ' todos los pines del micro son digitales
PORTB=0 ' ASEGURO EL PUERTO B LOW
E: 'ETIQUETA
If PORTA.0 = 0 Then 'el micro espera un 1 para activar
PORTB.0=1 'ENVIO UN NIVEL ALTO AL PIN 0DelayMS 1000 ' EL LED SE MANTIENE ACTIVO POR 1SEG
PORTB.0=0 'ENVIO UN NIVEL BAJO AL PIN 0
DelayMS 1000 ' EL LED SE MANTIENE APAGADO POR 1SEG
EndIf ' si es fin
End 'fin
3-ACTIVANDO UN LED, por 2 pulsadores, solo cuando estn en 1 (button)
Device 16F870 'microcontrolador
Xtal = 20 'velocidad
TRISA.0=1 'declaro que el puerto A pin 0 es entrada
TRISA.1=1 'declaro que el puerto A pin 1 es entrada
TRISB=0 ' DECLARO PUERTO B SALIDA
All_Digital= true ' todos los pines del micro son digitales
PORTB=0 ' ASEGURO EL PUERTO B LOW
E: 'ETIQUETA
If PORTA.0 = 1 AND PORTA.1 = 1 THEN 'los 2 sw activaran el ledPORTB.0=1 'ENVIO UN NIVEL ALTO AL PIN 0DelayMS 1000 ' EL LED SE MANTIENE ACTIVO POR 1SEG
PORTB.0=0 'ENVIO UN NIVEL BAJO AL PIN 0
DelayMS 1000 ' EL LED SE MANTIENE APAGADO POR 1SEG
EndIf ' si es fin
End 'fin
4-ACTIVANDO UN LED, por 2 pulsadores, segn tabla (button)
button1button2led
000
011
101
110
Device 16F870 'microcontrolador
Xtal = 20 'velocidad
TRISA=1 'declaro que el puerto A es entrada
TRISB=0 ' DECLARO PUERTO B SALIDA
All_Digital= true ' declaro que todos los pines del micro son digitales
PORTB=0 ' ASEGURO EL PUERTO B LOW
E: 'ETIQUETA
If PORTA.0 = 0 And PORTA.1 = 0 Then E' estado regreza a etiqueta principal
If PORTA.0 = 0 And PORTA.1 = 1 Then
PORTB.0=1 'ENVIO UN NIVEL ALTO AL PIN 0
DelayMS 1000 ' EL LED SE MANTIENE ACTIVO POR 1SEG
PORTB.0=0 'ENVIO UN NIVEL BAJO AL PIN 0
DelayMS 1000 ' EL LED SE MANTIENE APAGADO POR 1SEG
EndIf
If PORTA.0 = 1 And PORTA.1 = 0 Then
PORTB.0=1 'ENVIO UN NIVEL ALTO AL PIN 0
DelayMS 1000 ' EL LED SE MANTIENE ACTIVO POR 1SEG
PORTB.0=0 'ENVIO UN NIVEL BAJO AL PIN 0
DelayMS 1000 ' EL LED SE MANTIENE APAGADO POR 1SEG
EndIf
If PORTA.0 = 1 And PORTA.1 = 1 Then
PORTB.0=1 'ENVIO UN NIVEL ALTO AL PIN 0
DelayMS 1000 ' EL LED SE MANTIENE ACTIVO POR 1SEG
PORTB.0=0 'ENVIO UN NIVEL BAJO AL PIN 0
DelayMS 1000 ' EL LED SE MANTIENE APAGADO POR 1SEG
EndIf ' si es fin
GoTo E 'ir al principio5-ACTIVANDO UN LED, por 2 pulsadores, segn tabla con sub. Programasbutton1button2led
000
011
101
111
Device 16F870 'microcontrolador
Xtal = 20 'velocidad
TRISA=1 'declaro que el puerto A es entrada
TRISB=0 ' DECLARO PUERTO B SALIDA
All_Digital= true ' declaro que todos los pines del micro son digitales
PORTB=0 ' ASEGURO EL PUERTO B LOW
E: 'ETIQUETA
If PORTA.0 = 0 And PORTA.1 = 0 Then E' estado regreza a etiqueta principal
If PORTA.0 = 0 And PORTA.1 = 1 Then activo ' sub programa
If PORTA.0 = 1 And PORTA.1 = 1 Then activo ' sub programa
If PORTA.0 = 1 And PORTA.1 = 1 Then activo ' sub programa
GoTo E
activo: ' sub programaPORTB.0=1 'ENVIO UN NIVEL ALTO AL PIN 0
DelayMS 1000 ' EL LED SE MANTIENE ACTIVO POR 1SEG
PORTB.0=0 'ENVIO UN NIVEL BAJO AL PIN 0
DelayMS 1000 ' EL LED SE MANTIENE APAGADO POR 1SEG
GoTo E 'ir al principio Actividades de programacin II
1. DESARROLLE UN SISTEMA DOMOTICO, PARA 3 PIESAS LOS CUALES SE RELACIONAN CON 3 PULSADORES. ELLOS ACTIVARAN, LA ILUMINACION DE CADA PIESA.
2. DESARROLLE UN SISTEMA PROGRAMADO QUE ACTIVE 4 LED EN EL PUERTO C DEL MICROCONTROLADOR 16F870, CON UNA PAUSA DE segundo. LOS LED TENDRAN DIRECTA RELACION CON 4 PULSADORES, LOS CUALES EJUTARAN 4 DISTINTAS RUTINAS CON UN MAXIMO DE 6SEG, OCUPANDO SUB PROGRAMAS.
3. DESARROLLE UN SISTEMA PROGRAMADO QUE ACTIVE LAS 8 COMPUERTAS LOGICAS CON EL 16F870, BUFFER, OR, AND, NOT, XOR, NAND, NOR Y XNORProgramacin IIIACTIVANDO UN DISPLAY DE 7 SEGMENTOS
LOS DISPLAYS SON FABRICADOS CON ANODO COMUN O CATADO COMUN, SI ES DE CATODO COMUN DEBERA ACTIVAR CON NIVEL ALTO, PERO SI ES ANODO COMUN CON NIVEL BAJO.
PORTB=%01111111 forma el numero 8 para catado comunPORTB=%00000000 forma el numero 8 para anodo comun
Segun puertob seria % X g f e d c b A
1. ACTIVE UN DISPLAY DE CATODO COMUN, FORMANDO LOS NUMEROS DEL 0 AL 9
Device 16F870
Dim num As Byte
Dim vec As Byte
TRISB = 0 prog:
For vec = 0 To 9
LookUp vec, [191,134,219,207,230,237,253,135,255,239], numPORTB=num
DelayMS 500
Next vec
GoTo prog
End
2. ACTIVE UN DISPLAY DE CATODO COMUN, FORMANDO LOS NUMEROS DEL 0 AL 9 (Baja - sube)
Device 16F870
Dim vec As Byte
Dim num As Byte TRISB = 0 prog:
For vec=0 To 9
LookUp vec, [191,134,219,207,230,237,253,135,255,239], numPORTB=num
DelayMS 500
Next vec
For vec=9 To 0 Step -1
LookUp vec,[191,134,219,207,230,237,253,135,255,239],num
PORTB=num
DelayMS 500
Next vec
GoTo prog
End
3. Contador con un display pero ahora con un vector en el cual almacenaremos los valores correspondientes a cada numero (Para los dos ejemplos el Display es de nodo Comn)
ACTIVE UN DISPLAY DE ANODO COMUN, FORMANDO LOS NUMEROS DEL 0 AL 9 con vectoresDevice 16F870
Dim vec[10] As Byte
Dim pos As Byte
vec[0]=191
vec[1]=134
vec[2]=219
vec[3]=207
vec[4]=230
vec[5]=237
vec[6]=253
vec[7]=135
vec[8]=255
vec[9]=239
TRISB=%00000000
loop:
For pos=0 To 9
PORTB=vec[pos]
DelayMS 500
Next
GoTo loop
End 5-ACTIVANDO UN DISPLAY, contador ascendente y descendente posee dos pulsantes que sirven para subir y bajar el conteoDevice 16F870
Dim vec[10] As Byte
Dim pos As Byte
TRISA = %00000011
TRISB = 0
CMCON=7
vec=0
PORTB=64
inicio:
If PORTA.0=0 Then
vec=vec+1
LookUp vec,[0,191,134,219,207,230,237,253,135,255,239],num
PORTB=num
If vec>=10 Then
vec=0
EndIf
pause 200
EndIf
If PORTA.1=0 Then
vec=vec-1
LookUp vec,[0,191,134,219,207,230,237,253,135,255,239],num
PORTB=num
If vec200 Then X=200 'Determina un valor mximo de 200
Return
menos: 'Subrutina de disminucin de posicin
DelayMS 10
X=x-1 'Disminucin del pulso de salida
If X