SlideShare una empresa de Scribd logo
1
PROYECTOS EN BASIC PROTON

PROYECTO 1
Escribir el siguiente programa y guardarlo en una carpeta, compilar el programa y simularlo en
Proteus
Device=16F84A
XTAL 4
Output PORTB
PORTB= %11111111

‘Selección del Pic
‘Pone los bits del puerto B como salida al igual que TRISB
‘Se envía un 1 lógico a todo el puerto B, aquí pudo ser PORTB= 255, o
‘$FF

End

PROYECTO 2
Parpadeo de Leds
El parpadeo tiene dos fases, una ON y otra de OFF. Ambas fases tienen un período de tiempo
determinado, antes de cambiar al otro estado. Esto determina la frecuencia de parpadeo. Si los
tiempos de ON y OFF son los mismos, podemos decir que es una onda cuadrada. Para ver estos
pulsos, estamos usando LEDS a través de sentencias de bucle.
Device=16f84a
XTAL 4
Output PORTB
Loop:
PORTB=255
DelayMS 1000 ‘Deja a los leds encendidos durante 1 segundo
PORTB=0
DelayMS 1000
GoTo Loop
‘Repite el proceso
End
Se declara una etiqueta llamada Loop, y una declaración correspondiente Goto Loop.
Las instrucciones entre estas dos declaraciones se repetirán indefinidamente.
PORTD = 255 todos los LEDS en ON. Sin embargo, antes de desactivarlos, tenemos que
imponer un retraso.
DelayMS 1000
Esta declaración da un retraso en mili-segundos del número. Así 1000ms de demora es igual a
1 segundo, de manera similar 500ms retraso es medio segundo, y 100 ms es 1/10 de un
segundo. También se pueden hacer retrasos en micro-segundos usando DelayUs.
Los LEDS se encienden, y el procesador demora la activación en 1 segundo, entonces PORTB =
0 apagará los LEDS. Una vez más, introducir un retraso, para mantenerlos en la condición
actual durante 1 segundo. Después de un retraso de 1segundo, cuando los leds están
apagados, el comando GOTO transfiere el control de nuevo a la sentencia de bucle, que es
seguido por PORTB = 255, que volverá a su vez LEDS ON.
El ciclo de ON / OFF con 1 segundo continuará para siempre. En otras palabras, podemos decir
una onda cuadrada de 1 Hz se está generando en todos los pines de PORTB.
2
EJERCICIOS 1. Realizar los siguientes ejercicios:
1. Led activado durante 200 ms y apagado durante 2 segundos
2. Parpadeo de Leds de dos veces, con un retraso de 500 ms seguido por un estado OFF
de 2 segundos
PROYECTO 3
Uso de una Variable
Ahora vamos a tratar de mostrar algunos números binarios en los LED. Se creara una variable,
para asignarle un valor y mostrarlo en los LEDS.
¿Qué pasa si queremos que todos los valores de 0 a 255 sean mostrados en LEDS, con un
retraso de 200ms intervenir? Ciertamente, no es una buena idea escribir 255 bloques de
código con cada uno con un valor diferente. Aquí el uso de variables y los bucles es muy útil.
Veamos este ejemplo:
Device=16f84a
XTAL 4
Output PORTB
Dim x As Byte
Loop:
For x=0 To 255
PORB=x
DelayMS 200
Next x
GoTo Loop

‘Declaración de la variable x como Byte
‘Se inicia un bucle controlado por la variable x

EJERCICIOS 2. Realizar los siguientes ejercicios:
1. En el bucle For …Next, haga variaciones de a 2, a través de la siguiente forma: For x=0
To 255 Step 2
2. Haga decrementos de a 1, comenzando en 255 y terminando en 0, con pasos (Step -1)
de a -1

PROYECTO 4
Utilización de un Bit por un puerto
Se han realizado una serie de ejercicios, para asignar números distintos a un puerto. Hasta
ahora se han asignado valores a la totalidad del puerto, que afectan a los 8 bits a la vez. En
nuestros proyectos del mundo real la totalidad del puerto prácticamente no se utiliza, de
hecho bits individuales de un puerto se adjuntan a los diferentes dispositivos. Por ejemplo, si
el bit 0 del PORTB está conectado a un relé de control del ventilador, y el bit 1 conectado a un
relé de control de segundo ventilador y el bit 3 adjunto al relevo del calentador. Así que nos
gustaría el control de los tres bits de forma individual. A pesar de que puede hacerse mediante
la asignación de número es mejor el control de bits individuales directamente sin afectar a
otros bits. Esto es aún más útil, cuando algunos de los bits en un puerto actúan como insumos.
Un bit individual puede ser contemplado no sólo en un puerto, sino también en los registros de
funciones especiales, e incluso variables de memoria. Esto hace la programación muy fácil y
manejable. Los bits del puerto se hacen referencia mediante la colocación de un punto
después del nombre del puerto y un número para indicar el número del bit. Por ejemplo, para
3
referirse al bit 7 (bit más alto) en PORTB, usamos PORTB.7, observe que el número 7 indica el
número del bit. Al igual que en el acceso del registro de estado 0, por ejemplo, usamos
STATUS.0 similar para hacer el bit 0 de PORTB como entrada, con registro TRISB, TRISB.0 = 1.
Con el fin de establecer el bit del puerto en alto o en bajo, puede asignar un valor de 1 o 0.
También puede utilizar el comando, High y Low los cuales hacen lo mismo. Los comandos High
and Low sólo funcionan en bits del registro del puerto y no en los bits de variable general.
Device=16f84a
XTAL=4
Output PORTB.7
Loop:
High PORTB.7
DelayMS 500
Low PORTB.7
DelayMS 500
GoTo Loop

PROYECTO 5
Cambio de Operadores
Los Bits pueden ser transferidos dentro de una variable o un puerto a la izquierda o la derecha.
El Desplazamiento de los bits hacia la izquierda tiene un efecto matemático de multiplicar por
2, y el desplazamiento de los bits a la derecha se divide por defecto en 2 .El Desplazamiento a
la izquierda se indica con operador << y desplazamiento a la derecha por operador >>.
Analizar el siguiente ejemplo:
Device=16F84A
XTAL=4
Output PORTB
PORTB=0
Loop:
High PORTB.0
Dim x As Byte
For x=0 To 7
DelayMS 500
PORTB=PORTB << 1
Next x
DelayMS 500
GoTo Loop
PROYECTO 6
Proyecto con Interruptores 1
En el siguiente programa se supervisa el pin 0 del puerto A (PORTA.0) asignando a la línea un
interruptor SW1.
Cuando el interruptor está desactivado la línea lee un 1 lógico, tan pronto como se pulsa el
interruptor y sí IF es ejecutado, la línea lee 0 lógico y ejecuta las instrucciones que se adjuntan
en la estructura del IF... End IF.
4
Observe el pequeño retraso de DelayMS 300, se ha hecho así, para que una vez que activado
el interruptor sea detectado, se encienda el led ubicado en PORTB.0, permaneciendo en este
estado una vez se libera el interruptor.
Device=16F84a
XTAL=4
Output PORTB
Input PORTA.0
Symbol LED = PORTB.0
Symbol SW1 = PORTA.0
Low LED
Loop:
If SW1=0 Then
DelayMS 300
High LED
End If
GoTo Loop

EJERCICIOS 3. Realizar los siguientes ejercicios:
1. Hacer un programa que encienda un LED cuando se pulsa un swiche 1 y lo apague
cuando se pulse un swiche 2.
2. Hacer un programa que al pulsar un swiche 1 se prenda un LED0 y se apague un LED1 y
si se pulsa un swiche 2 se apague un LED0 y se prenda un LED1
PROYECTO 7
Variación de velocidad de parpadeo de un LED
Este programa lee dos interruptores, SW1 y SW2 y cuando se detecta que son activados se
incrementa o disminuye el valor de una variable x por 5. A su vez la X se utiliza en la demora de
activación del LED ubicado en PORTB.0. Así, la velocidad de parpadeo del LED se puede
cambiar pulsando SW1 o SW2
Device=16F84A
XTAL=4
Output PORTB
Input PORTA.0
Input PORTA.1
Symbol LED = PORTB.0
Symbol SW1 = PORTA.0
Symbol SW2 = PORTA.1
Dim x As Byte
x=100
Low LED
Loop:
DelayMS x* 10
Toggle LED
‘Conmuta el valor del Led
If SW1=0 Then
‘Nota: el swiche normalmente estará abierto conectado a Vcc
x=x+5
DelayMS 200
EndIf
If SW2=0 Then
‘Nota: el swiche normalmente estará abierto conectado a Vcc
x=x-5
5
DelayMS 200
EndIf
GoTo Loop
PROYECTO 8
Manejo del rebote de una pulsación
Cuando se pulsa un botón, los contactos hacen una conexión a corto (1 a 20 ms). El Comando
Button evita este ruido para ser interpretado como una acción más del interruptor, realizando
un retraso después de leer el estado de entrada.
En las aplicaciones del mundo real, los botones se suponen que deben realizar más que una
sola activación. El software soporta una variedad de maneras de pulsar un botón. Por ejemplo,
en el caso de la selección de un valor de entrada, cuando se pulsa el botón se supone
incrementar el número, sin embargo, si se pulsa un cierto período, comienza a comportarse
como si el botón se activara varias veces. Esto se llama repetición automática característica.
PROTON proporciona un comando llamado Button. Este comando supervisa un pin específico
de un puerto para la entrada, lee el valor como activados en bajo o alto, también acepta un
número que es el retraso de espera, después de que una repetición automática sea
establecida. La frecuencia de repetición automática también puede ser mencionada en la
declaración
El siguiente programa utiliza el comando Button para leer el estado de un botón, SW1. Si se
pulsa el botón, se alterna el LED, si se mantiene pulsado el botón, se iniciará la repetición
automática después de una pequeña demora.
EJERCICIO 4. Analizar el siguiente ejemplo, buscando la estructura del comando Button en el
“Manual del compilador del Protón” y anote el significado de la sentencia “Button” de este
programa:
Device=16f84a
XTAL=4
Output PORTB
Input PORTA.0
Input PORTA.1
Symbol LED = PORTB.0
Symbol SW1 = PORTA.0
Dim x As Byte
x=0
loop:
Button SW1, 0, 100, 250, x, 0, aa
Toggle LED
DelayMS 100
aa:
GoTo loop
PROYECTO 9
Lectura de una combinación de interruptores
A veces, en un programa es necesario leer una combinación de botones, esto se utiliza para
ampliar la gama de capacidades de entrada, así como proporcionar un mecanismo de
seguridad para funciones importantes. La combinación se puede leer en la misma línea, con el
uso del operador AND, o como IFS anidados.
6

Miremos el siguiente ejemplo:
Device=16f84a
XTAL=4
Output PORTB
Input PORTA.0
Input PORTA.1
Symbol LED = PORTB.0
Symbol SW1 = PORTA.0
Symbol SW2 = PORTA.1
loop:
If SW1=0 And SW2=0 Then
Toggle LED
DelayMS 300
EndIf
GoTo loop

PROYECTO 10
Secuencia de swiches con fines de seguridad o control
En este programa se configura SW1 como interruptor principal, cuando se activa, se cambia de
estado el LED1 (PORTB.1) y espera dos segundos; esto da tiempo a la activación de SW2, al
final de 2 segundos, que se comprobará si SW2 sigue presionado, entonces, se activará el
LED0. Sea o no SW2 presionado, en lapso de 2 segundos, el LED1 se apagará, y el ciclo se
repite. Este tipo de mecanismo, asegura que una determinada secuencia de teclas presionadas
antes de una acción importante, como apagar un motor etc, sea llevada a cabo.
Device=16F84A
XTAL=4
Output PORTB
Input PORTA.0
Input PORTA.1
Symbol LED0 = PORTB.0
Symbol LED1 = PORTB.1
Symbol SW1 = PORTA.0
Symbol SW2 = PORTA.1
loop:
If SW1=0 Then
High LED1
DelayMS 2000
If SW2=0 Then
DelayMS 200
Toggle LED0
EndIf
Low LED1
EndIf
GoTo loop
EJERCICIO 5. Realizar los siguientes ejercicios:
7
1. Se tienen 4 pulsadores SW0 a SW3 y una lámpara L0, se desea que al pulsar SW0 y
SW1 o SW2 y SW3 se prende L0 y en otro caso se apague.
2. Realizar ejercicio de comparación: si el valor de dos swiches en binario es mayor que
14, se encienden los leds del puerto B

Más contenido relacionado

PDF
Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones
PDF
Laboratorio de Microcomputadoras - Práctica 01
PDF
Microcontroladores pic basic_-
PDF
programacion con microcontrolador pic 16f84
PDF
⭐⭐⭐⭐⭐ SOLUCIÓN EXAMEN SISTEMAS DIGITALES 1, Mejoramiento (2018 1er Término)
PDF
Tutorial proton ide plus part 1
PDF
Sistemas de Telecomunicaciones cap 3 1
PDF
Prob de error_2
Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones
Laboratorio de Microcomputadoras - Práctica 01
Microcontroladores pic basic_-
programacion con microcontrolador pic 16f84
⭐⭐⭐⭐⭐ SOLUCIÓN EXAMEN SISTEMAS DIGITALES 1, Mejoramiento (2018 1er Término)
Tutorial proton ide plus part 1
Sistemas de Telecomunicaciones cap 3 1
Prob de error_2

La actualidad más candente (20)

DOCX
Proyecto final AMPLIFICACIÓN Y ACONDICIONAMIENTO DE SEÑALES
DOC
ejercicios de subnetting
PDF
⭐⭐⭐⭐⭐ INTRODUCCÓN A LOS CPLDs Y FPGAs
PPTX
Exposición transistores de union
PPTX
La importancia de la programación en la actualidad
DOCX
Practica 7 Flip Flop
PDF
PDF
Practica0,1,2,3,4
PDF
Laboratorio de Microcomputadoras - Práctica 06
PPSX
Aplicaciones con el pic 16f84
PDF
Ejercicios de Multiplexores y decodificadores
PDF
Uso de las tablas en lenguaje ensamblador
PPTX
Sumadores,codificadores, decodificadores,multiplexores y demultiplexores
PPTX
Cursores
PPT
Mod demod am_2014_1(1)
PDF
EJERCICIOS TEMA 1. MICROCONTROLADORES II EN C
PDF
Informe 4 digitales
PDF
Control lcd 16X2 proton
PDF
GUÍA DE EJERCICIOS RESUELTOS TEMA 4
DOCX
Proyecto 7 Flip Flop
Proyecto final AMPLIFICACIÓN Y ACONDICIONAMIENTO DE SEÑALES
ejercicios de subnetting
⭐⭐⭐⭐⭐ INTRODUCCÓN A LOS CPLDs Y FPGAs
Exposición transistores de union
La importancia de la programación en la actualidad
Practica 7 Flip Flop
Practica0,1,2,3,4
Laboratorio de Microcomputadoras - Práctica 06
Aplicaciones con el pic 16f84
Ejercicios de Multiplexores y decodificadores
Uso de las tablas en lenguaje ensamblador
Sumadores,codificadores, decodificadores,multiplexores y demultiplexores
Cursores
Mod demod am_2014_1(1)
EJERCICIOS TEMA 1. MICROCONTROLADORES II EN C
Informe 4 digitales
Control lcd 16X2 proton
GUÍA DE EJERCICIOS RESUELTOS TEMA 4
Proyecto 7 Flip Flop
Publicidad

Similar a Tutorial ii proyectos en basic proton (20)

PDF
Tutorial proton part 4
PDF
Tutorial proton part 5
PPTX
Puertos de entrada diapositivas
PPTX
Puertos de entrada/salida
PDF
Lógica cableada y Lógica programable - Automatización Industrial
PDF
Descripcion detallada del pic 16 f877
PDF
Proyecto1
PDF
Programación del microcontrolador
PDF
Microcontroladores de microchip pic16f877-en-espanol.pdf
PDF
Microprogramacion - Interrupciones y timers
PPT
Niple diapopsitiva
PPT
Niple diapopsitiva
PPT
Niple diapopsitiva
PPTX
Tarea final
PPTX
Introducción a Arduino y Ejercicios Prácticos
DOCX
Arduino: Reporte de diseño controlador acuario con Arduino
PPTX
catalogo de control
DOCX
Informe N°2-Microcontroladores
PPTX
Cubo de LEDs controlado por microprocesador
Tutorial proton part 4
Tutorial proton part 5
Puertos de entrada diapositivas
Puertos de entrada/salida
Lógica cableada y Lógica programable - Automatización Industrial
Descripcion detallada del pic 16 f877
Proyecto1
Programación del microcontrolador
Microcontroladores de microchip pic16f877-en-espanol.pdf
Microprogramacion - Interrupciones y timers
Niple diapopsitiva
Niple diapopsitiva
Niple diapopsitiva
Tarea final
Introducción a Arduino y Ejercicios Prácticos
Arduino: Reporte de diseño controlador acuario con Arduino
catalogo de control
Informe N°2-Microcontroladores
Cubo de LEDs controlado por microprocesador
Publicidad

Último (20)

PDF
Tomo 1 de biologia gratis ultra plusenmas
DOCX
2 GRADO UNIDAD 5 - 2025.docx para primaria
PDF
biología es un libro sobre casi todo el tema de biología
PDF
Lección 6 Escuela Sab. A través del mar rojo.pdf
PDF
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
PDF
TRAUMA_Y_RECUPERACION consecuencias de la violencia JUDITH HERMAN
PDF
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
PDF
Breve historia de los Incas -- Patricia Temoche [Temoche, Patricia] -- Breve ...
PDF
Escuelas Desarmando una mirada subjetiva a la educación
PDF
Crear o Morir - Andres Oppenheimer Ccesa007.pdf
PDF
DI, TEA, TDAH.pdf guía se secuencias didacticas
PDF
Habitos de Ricos - Juan Diego Gomez Ccesa007.pdf
PDF
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
DOCX
Tarea De El Colegio Coding For Kids 1 y 2
PDF
Híper Mega Repaso Histológico Bloque 3.pdf
PDF
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe
PDF
Educación Artística y Desarrollo Humano - Howard Gardner Ccesa007.pdf
DOCX
V UNIDAD - PRIMER GRADO. del mes de agosto
PDF
benveniste-problemas-de-linguistica-general-i-cap-6 (1)_compressed.pdf
PDF
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
Tomo 1 de biologia gratis ultra plusenmas
2 GRADO UNIDAD 5 - 2025.docx para primaria
biología es un libro sobre casi todo el tema de biología
Lección 6 Escuela Sab. A través del mar rojo.pdf
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
TRAUMA_Y_RECUPERACION consecuencias de la violencia JUDITH HERMAN
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
Breve historia de los Incas -- Patricia Temoche [Temoche, Patricia] -- Breve ...
Escuelas Desarmando una mirada subjetiva a la educación
Crear o Morir - Andres Oppenheimer Ccesa007.pdf
DI, TEA, TDAH.pdf guía se secuencias didacticas
Habitos de Ricos - Juan Diego Gomez Ccesa007.pdf
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
Tarea De El Colegio Coding For Kids 1 y 2
Híper Mega Repaso Histológico Bloque 3.pdf
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe
Educación Artística y Desarrollo Humano - Howard Gardner Ccesa007.pdf
V UNIDAD - PRIMER GRADO. del mes de agosto
benveniste-problemas-de-linguistica-general-i-cap-6 (1)_compressed.pdf
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf

Tutorial ii proyectos en basic proton

  • 1. 1 PROYECTOS EN BASIC PROTON PROYECTO 1 Escribir el siguiente programa y guardarlo en una carpeta, compilar el programa y simularlo en Proteus Device=16F84A XTAL 4 Output PORTB PORTB= %11111111 ‘Selección del Pic ‘Pone los bits del puerto B como salida al igual que TRISB ‘Se envía un 1 lógico a todo el puerto B, aquí pudo ser PORTB= 255, o ‘$FF End PROYECTO 2 Parpadeo de Leds El parpadeo tiene dos fases, una ON y otra de OFF. Ambas fases tienen un período de tiempo determinado, antes de cambiar al otro estado. Esto determina la frecuencia de parpadeo. Si los tiempos de ON y OFF son los mismos, podemos decir que es una onda cuadrada. Para ver estos pulsos, estamos usando LEDS a través de sentencias de bucle. Device=16f84a XTAL 4 Output PORTB Loop: PORTB=255 DelayMS 1000 ‘Deja a los leds encendidos durante 1 segundo PORTB=0 DelayMS 1000 GoTo Loop ‘Repite el proceso End Se declara una etiqueta llamada Loop, y una declaración correspondiente Goto Loop. Las instrucciones entre estas dos declaraciones se repetirán indefinidamente. PORTD = 255 todos los LEDS en ON. Sin embargo, antes de desactivarlos, tenemos que imponer un retraso. DelayMS 1000 Esta declaración da un retraso en mili-segundos del número. Así 1000ms de demora es igual a 1 segundo, de manera similar 500ms retraso es medio segundo, y 100 ms es 1/10 de un segundo. También se pueden hacer retrasos en micro-segundos usando DelayUs. Los LEDS se encienden, y el procesador demora la activación en 1 segundo, entonces PORTB = 0 apagará los LEDS. Una vez más, introducir un retraso, para mantenerlos en la condición actual durante 1 segundo. Después de un retraso de 1segundo, cuando los leds están apagados, el comando GOTO transfiere el control de nuevo a la sentencia de bucle, que es seguido por PORTB = 255, que volverá a su vez LEDS ON. El ciclo de ON / OFF con 1 segundo continuará para siempre. En otras palabras, podemos decir una onda cuadrada de 1 Hz se está generando en todos los pines de PORTB.
  • 2. 2 EJERCICIOS 1. Realizar los siguientes ejercicios: 1. Led activado durante 200 ms y apagado durante 2 segundos 2. Parpadeo de Leds de dos veces, con un retraso de 500 ms seguido por un estado OFF de 2 segundos PROYECTO 3 Uso de una Variable Ahora vamos a tratar de mostrar algunos números binarios en los LED. Se creara una variable, para asignarle un valor y mostrarlo en los LEDS. ¿Qué pasa si queremos que todos los valores de 0 a 255 sean mostrados en LEDS, con un retraso de 200ms intervenir? Ciertamente, no es una buena idea escribir 255 bloques de código con cada uno con un valor diferente. Aquí el uso de variables y los bucles es muy útil. Veamos este ejemplo: Device=16f84a XTAL 4 Output PORTB Dim x As Byte Loop: For x=0 To 255 PORB=x DelayMS 200 Next x GoTo Loop ‘Declaración de la variable x como Byte ‘Se inicia un bucle controlado por la variable x EJERCICIOS 2. Realizar los siguientes ejercicios: 1. En el bucle For …Next, haga variaciones de a 2, a través de la siguiente forma: For x=0 To 255 Step 2 2. Haga decrementos de a 1, comenzando en 255 y terminando en 0, con pasos (Step -1) de a -1 PROYECTO 4 Utilización de un Bit por un puerto Se han realizado una serie de ejercicios, para asignar números distintos a un puerto. Hasta ahora se han asignado valores a la totalidad del puerto, que afectan a los 8 bits a la vez. En nuestros proyectos del mundo real la totalidad del puerto prácticamente no se utiliza, de hecho bits individuales de un puerto se adjuntan a los diferentes dispositivos. Por ejemplo, si el bit 0 del PORTB está conectado a un relé de control del ventilador, y el bit 1 conectado a un relé de control de segundo ventilador y el bit 3 adjunto al relevo del calentador. Así que nos gustaría el control de los tres bits de forma individual. A pesar de que puede hacerse mediante la asignación de número es mejor el control de bits individuales directamente sin afectar a otros bits. Esto es aún más útil, cuando algunos de los bits en un puerto actúan como insumos. Un bit individual puede ser contemplado no sólo en un puerto, sino también en los registros de funciones especiales, e incluso variables de memoria. Esto hace la programación muy fácil y manejable. Los bits del puerto se hacen referencia mediante la colocación de un punto después del nombre del puerto y un número para indicar el número del bit. Por ejemplo, para
  • 3. 3 referirse al bit 7 (bit más alto) en PORTB, usamos PORTB.7, observe que el número 7 indica el número del bit. Al igual que en el acceso del registro de estado 0, por ejemplo, usamos STATUS.0 similar para hacer el bit 0 de PORTB como entrada, con registro TRISB, TRISB.0 = 1. Con el fin de establecer el bit del puerto en alto o en bajo, puede asignar un valor de 1 o 0. También puede utilizar el comando, High y Low los cuales hacen lo mismo. Los comandos High and Low sólo funcionan en bits del registro del puerto y no en los bits de variable general. Device=16f84a XTAL=4 Output PORTB.7 Loop: High PORTB.7 DelayMS 500 Low PORTB.7 DelayMS 500 GoTo Loop PROYECTO 5 Cambio de Operadores Los Bits pueden ser transferidos dentro de una variable o un puerto a la izquierda o la derecha. El Desplazamiento de los bits hacia la izquierda tiene un efecto matemático de multiplicar por 2, y el desplazamiento de los bits a la derecha se divide por defecto en 2 .El Desplazamiento a la izquierda se indica con operador << y desplazamiento a la derecha por operador >>. Analizar el siguiente ejemplo: Device=16F84A XTAL=4 Output PORTB PORTB=0 Loop: High PORTB.0 Dim x As Byte For x=0 To 7 DelayMS 500 PORTB=PORTB << 1 Next x DelayMS 500 GoTo Loop PROYECTO 6 Proyecto con Interruptores 1 En el siguiente programa se supervisa el pin 0 del puerto A (PORTA.0) asignando a la línea un interruptor SW1. Cuando el interruptor está desactivado la línea lee un 1 lógico, tan pronto como se pulsa el interruptor y sí IF es ejecutado, la línea lee 0 lógico y ejecuta las instrucciones que se adjuntan en la estructura del IF... End IF.
  • 4. 4 Observe el pequeño retraso de DelayMS 300, se ha hecho así, para que una vez que activado el interruptor sea detectado, se encienda el led ubicado en PORTB.0, permaneciendo en este estado una vez se libera el interruptor. Device=16F84a XTAL=4 Output PORTB Input PORTA.0 Symbol LED = PORTB.0 Symbol SW1 = PORTA.0 Low LED Loop: If SW1=0 Then DelayMS 300 High LED End If GoTo Loop EJERCICIOS 3. Realizar los siguientes ejercicios: 1. Hacer un programa que encienda un LED cuando se pulsa un swiche 1 y lo apague cuando se pulse un swiche 2. 2. Hacer un programa que al pulsar un swiche 1 se prenda un LED0 y se apague un LED1 y si se pulsa un swiche 2 se apague un LED0 y se prenda un LED1 PROYECTO 7 Variación de velocidad de parpadeo de un LED Este programa lee dos interruptores, SW1 y SW2 y cuando se detecta que son activados se incrementa o disminuye el valor de una variable x por 5. A su vez la X se utiliza en la demora de activación del LED ubicado en PORTB.0. Así, la velocidad de parpadeo del LED se puede cambiar pulsando SW1 o SW2 Device=16F84A XTAL=4 Output PORTB Input PORTA.0 Input PORTA.1 Symbol LED = PORTB.0 Symbol SW1 = PORTA.0 Symbol SW2 = PORTA.1 Dim x As Byte x=100 Low LED Loop: DelayMS x* 10 Toggle LED ‘Conmuta el valor del Led If SW1=0 Then ‘Nota: el swiche normalmente estará abierto conectado a Vcc x=x+5 DelayMS 200 EndIf If SW2=0 Then ‘Nota: el swiche normalmente estará abierto conectado a Vcc x=x-5
  • 5. 5 DelayMS 200 EndIf GoTo Loop PROYECTO 8 Manejo del rebote de una pulsación Cuando se pulsa un botón, los contactos hacen una conexión a corto (1 a 20 ms). El Comando Button evita este ruido para ser interpretado como una acción más del interruptor, realizando un retraso después de leer el estado de entrada. En las aplicaciones del mundo real, los botones se suponen que deben realizar más que una sola activación. El software soporta una variedad de maneras de pulsar un botón. Por ejemplo, en el caso de la selección de un valor de entrada, cuando se pulsa el botón se supone incrementar el número, sin embargo, si se pulsa un cierto período, comienza a comportarse como si el botón se activara varias veces. Esto se llama repetición automática característica. PROTON proporciona un comando llamado Button. Este comando supervisa un pin específico de un puerto para la entrada, lee el valor como activados en bajo o alto, también acepta un número que es el retraso de espera, después de que una repetición automática sea establecida. La frecuencia de repetición automática también puede ser mencionada en la declaración El siguiente programa utiliza el comando Button para leer el estado de un botón, SW1. Si se pulsa el botón, se alterna el LED, si se mantiene pulsado el botón, se iniciará la repetición automática después de una pequeña demora. EJERCICIO 4. Analizar el siguiente ejemplo, buscando la estructura del comando Button en el “Manual del compilador del Protón” y anote el significado de la sentencia “Button” de este programa: Device=16f84a XTAL=4 Output PORTB Input PORTA.0 Input PORTA.1 Symbol LED = PORTB.0 Symbol SW1 = PORTA.0 Dim x As Byte x=0 loop: Button SW1, 0, 100, 250, x, 0, aa Toggle LED DelayMS 100 aa: GoTo loop PROYECTO 9 Lectura de una combinación de interruptores A veces, en un programa es necesario leer una combinación de botones, esto se utiliza para ampliar la gama de capacidades de entrada, así como proporcionar un mecanismo de seguridad para funciones importantes. La combinación se puede leer en la misma línea, con el uso del operador AND, o como IFS anidados.
  • 6. 6 Miremos el siguiente ejemplo: Device=16f84a XTAL=4 Output PORTB Input PORTA.0 Input PORTA.1 Symbol LED = PORTB.0 Symbol SW1 = PORTA.0 Symbol SW2 = PORTA.1 loop: If SW1=0 And SW2=0 Then Toggle LED DelayMS 300 EndIf GoTo loop PROYECTO 10 Secuencia de swiches con fines de seguridad o control En este programa se configura SW1 como interruptor principal, cuando se activa, se cambia de estado el LED1 (PORTB.1) y espera dos segundos; esto da tiempo a la activación de SW2, al final de 2 segundos, que se comprobará si SW2 sigue presionado, entonces, se activará el LED0. Sea o no SW2 presionado, en lapso de 2 segundos, el LED1 se apagará, y el ciclo se repite. Este tipo de mecanismo, asegura que una determinada secuencia de teclas presionadas antes de una acción importante, como apagar un motor etc, sea llevada a cabo. Device=16F84A XTAL=4 Output PORTB Input PORTA.0 Input PORTA.1 Symbol LED0 = PORTB.0 Symbol LED1 = PORTB.1 Symbol SW1 = PORTA.0 Symbol SW2 = PORTA.1 loop: If SW1=0 Then High LED1 DelayMS 2000 If SW2=0 Then DelayMS 200 Toggle LED0 EndIf Low LED1 EndIf GoTo loop EJERCICIO 5. Realizar los siguientes ejercicios:
  • 7. 7 1. Se tienen 4 pulsadores SW0 a SW3 y una lámpara L0, se desea que al pulsar SW0 y SW1 o SW2 y SW3 se prende L0 y en otro caso se apague. 2. Realizar ejercicio de comparación: si el valor de dos swiches en binario es mayor que 14, se encienden los leds del puerto B