SlideShare una empresa de Scribd logo
1 de 8
Descargar para leer sin conexión
 


                     PROYECTOS CON INTERRUPTORES



Un escenario típico en el mundo de microcontrolador consta del procesamiento de una
entrada, para establecer una salida. Leer entradas de un número de fuentes es muy
importante. La entrada en un sistema puede ser analógica, que varía con el voltaje, o
digital, que es verdadera o falsa. Interruptores u otros dispositivos pueden dar señales
al microcontrolador como 0 lógico o 1. Aquí vamos a hablar de la conexión de
interruptores de pulsar para varias líneas E / S del microcontrolador.

Los Interruptores pueden ser conectados en una de las dos maneras:

    •   Activo. Esto significa que cuando se pulsa un interruptor, se conecta a la línea I
        / O a VCC o 5V en línea, para dar un 1 lógico.
    •   Línea Baja. Esto se conoce como activos de alta, lo contrario es poco activa. Sin
        embargo, a fin de evitar una la línea abierta, se conecta la línea utilizando
        resistencias a GND.




El esquema tiene 5 interruptores de entrada. Estos interruptores están configurados
como activos. Así, se han asociado resistencias conectadas a VCC. La           línea
correspondiente a leer 1 lógico, cuando el interruptor NO se presiona y 0 lógica
cuando está siendo presionado.

La línea especificada debe ser declarada como digital y como entrada antes de usar el
interruptor.




 
 



Ejercicio 1.

Device=18F4550
XTAL=20
ALL_DIGITAL=true
Output PORTC
Input PORTA.0
Symbol LED = PORTC.0
Symbol SW1 = PORTA.0
Low LED
Loop:
If SW1=0 Then
DelayMS 300
High LED
End If
GoTo Loop




En este programa se supervisa 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.




 
 


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 PORTC.0,
permaneciendo en este estado una vez se libera el interruptor.




Circuito EJERCICIO 1.




Hágalo usted mismo

    1. Hacer un programa que deba encender el LED y en cada pulsación de un botón
       lo apague.
    2. Hacer un programa que encienda un LED cuando se pulsa SW1 y lo apague
       cuando se pulsa SW2.
    3. Se desea que al pulsar SW1 se prenda un LED y al soltar SW1 se apague el
       LED.
    4. Se desea que al pulsar SW1 se prenda un LED0 y se apague un LED1, y si se
       pulsa SW2 se prende LED1 y se paga LED0.
    5. Se desea que al pulsar SW1 se prendan todas las lámparas LEDS ubicadas en
       PORTA del PIC 18F4550, y al soltar SW1 se apaguen.




 
 




Ejercicio 2.




Circuito EJERCICIO 2, 3, 4,5.

Device=18F4550
XTAL=20
ALL_DIGITAL=true
Output PORTC
Input PORTA.0
Input PORTA.1
Symbol LED = PORTC.0
Symbol SW1 = PORTA.0
Symbol SW2 = PORTA.1
Dim x As Byte
x=100
Low LED
Loop:
DelayMS x* 10
Toggle LED
If SW3=0 Then



 
 


x=x+5
DelayMS 200
EndIf
If SW4=0 Then
x=x-5
DelayMS 200
EndIf
GoTo Loop


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 PORTC.0. Así, la velocidad de
parpadeo del LED se puede cambiar pulsando SW1 o SW2.

Rebote de 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 activos de baja o alta, también acepta un número que es el retraso de
espera, después de que una repetición automática sea publicada. La frecuencia de
repetición automática también puede ser mencionada en la declaración.

Ejercicio 3.

Device=18F4550
XTAL=20
ALL_DIGITAL=true
Output PORTC
Input PORTA.0
Input PORTA.1
Symbol LED = PORTC.0
Symbol SW1 = PORTA.0
Symbol SW2 = PORTA.1
Dim x As Byte
x=0
loop:
Button SW1, 0, 100, 250, x, 0, aa
Toggle LED
DelayMS 100
aa:
GoTo loop



 
 



Este 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.

Además de los botones, muchos tipos de interruptores, como puentes o conmutadores
DIP pueden ser utilizados en el de hardware para indicar varias configuraciones. Se
puede leer como cualquier cambio, como 0 lógico o 1, dependiendo de la configuración
del hardware.

Lectura de una combinación de botones


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.


Ejercicio 4.

Device=18F4550
XTAL=20
ALL_DIGITAL=true
Output PORTC
Input PORTA.0
Input PORTA.1
Symbol LED = PORTC.0
Symbol SW1 = PORTA.0
Symbol SW2 = PORTA.1
loop:
If SW1=0 And SW2=0 Then
Toggle LED
DelayMS 300
EndIf
GoTo loop


Este programa hará un seguimiento del interruptor SW1 y SW2. Se cambiará el
estado del LED sólo si se pulsan las dos teclas. En una segunda situación queremos
que SW2 preceda a SW1.

Ejercicio 5.


Device=18F4550
XTAL=20
ALL_DIGITAL=true
Output PORTC
Input PORTA.0
Input PORTA.1
Symbol LED0 = PORTC.0


 
 


Symbol LED1 = PORTC.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


Este programa se configura SW1 como interruptor principal, cuando se activa, se
cambia de estado el LED1 (PORTC.1) y espere 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. es llevado a cabo.



PINES ESPECIALES PARA CONECTAR INTERUPTORES



El PORTB.0 de interrupción

Se puede ubicar un interruptor de uso general, situado en PORTB.0. Aunque puede
funcionar como un interruptor normal, descrito anteriormente, el PORTB.0 puede ser
configurado para desarrollar un procedimiento interno de la interrupción cada vez que
se produce un cambio, en el PIN. Vamos a hablar de esto más adelante en la sección
correspondiente. Aquí sólo quiero mencionar que este PIN puede ser utilizado no sólo
como interruptor de entrada de uso general, sino también como un medio de prueba
de la interrupción.


El PORTA.4 T0CKI


También puede ser utilizado de otra forma. El PIN PORTA.4 puede ser configurado
como entrada para el Timer 0. Timer 0 puede ser configurado para contar el número
de impulsos procedentes de PORTA.4. Con el fin de experimentar con esto podemos
utilizar in interruptor para dar impulsos externos para este contador o hacer una
fuente externa, como un oscilador basado en 555, y conectarlo a este conector, para
valorar los acontecimientos externos, que se pueden contar.



 
 




Ejercicios propuestos


En los siguientes ejercicios escribir las decisiones y realizar la simulación en PROTEUS.


    1. Se tienen 3 pulsadores SW1, SW2 y SW3, un LED0, se desea que al pulsar solo
       dos se prenda LED0, y si no se pulsa ninguno se apague LED0.

    2. Se tienen 2 lámparas L0 y L1, dos pulsadores SW1 y SW2, se desea que al
       pulsar SW1 se prendan las dos lámparas y se apaguen si se pulsa SW2.


    3. Se tienen 4 pulsadores SW0 a SW3, una lámpara L0, se desea que al pulsar
       SW0 y SW1 o SW22 y SW3 se prenda L0 en otro caso se apague.

    4. Se tiene A=1, B=10, C=4, si A+B>3 cargar en C 25, si A>C or B<C entonces
       cargue en A 34 y en B 12. Mostrar resultado con leds.


    5. Se tienen 4 pulsadores Sw1 a Sw4, y tres lámparas L1 a L3, se desea que L1
       solo prenda cuando se pulsen al menos dos, L2 solo prende cuando se pulsen
       solo 3, L3 solo prende si L1 y L2 están prendidas.




 

Más contenido relacionado

La actualidad más candente

Digital E
Digital EDigital E
Digital E
toni
 
Microcontroladores ii en c. tema 4
Microcontroladores ii en c. tema 4Microcontroladores ii en c. tema 4
Microcontroladores ii en c. tema 4
Luis Zurita
 
Practica7 katherine mariana figueroa flores
Practica7  katherine mariana figueroa floresPractica7  katherine mariana figueroa flores
Practica7 katherine mariana figueroa flores
WhitneyPeralta
 
MICROCONTROLADORES II EN C. TEMA 5
MICROCONTROLADORES II EN C. TEMA 5MICROCONTROLADORES II EN C. TEMA 5
MICROCONTROLADORES II EN C. TEMA 5
Luis Zurita
 

La actualidad más candente (20)

electronica digital
electronica digitalelectronica digital
electronica digital
 
GENERADOR DE SEÑALES CON LM741 - SIGNAL GENERATOR
GENERADOR DE SEÑALES CON LM741 - SIGNAL GENERATORGENERADOR DE SEÑALES CON LM741 - SIGNAL GENERATOR
GENERADOR DE SEÑALES CON LM741 - SIGNAL GENERATOR
 
Digital E
Digital EDigital E
Digital E
 
Pulsos de reloj de Circuito integrado 555
Pulsos de reloj de Circuito integrado 555Pulsos de reloj de Circuito integrado 555
Pulsos de reloj de Circuito integrado 555
 
2.1 puertos como salida
2.1 puertos como salida2.1 puertos como salida
2.1 puertos como salida
 
Actividadcontadores2medio
Actividadcontadores2medioActividadcontadores2medio
Actividadcontadores2medio
 
Informe Practico (proyecto)
Informe  Practico (proyecto)Informe  Practico (proyecto)
Informe Practico (proyecto)
 
Circuitos lógicos secuenciales
Circuitos lógicos secuencialesCircuitos lógicos secuenciales
Circuitos lógicos secuenciales
 
Experiencia 01
Experiencia 01Experiencia 01
Experiencia 01
 
Practicas simulador arduino del 1 al 8
Practicas simulador arduino del 1 al 8Practicas simulador arduino del 1 al 8
Practicas simulador arduino del 1 al 8
 
Microcontroladores ii en c. tema 4
Microcontroladores ii en c. tema 4Microcontroladores ii en c. tema 4
Microcontroladores ii en c. tema 4
 
Practica 7 Flip Flop
Practica 7 Flip FlopPractica 7 Flip Flop
Practica 7 Flip Flop
 
Ampliación arduino
Ampliación arduinoAmpliación arduino
Ampliación arduino
 
Cerradura Electrónica
Cerradura ElectrónicaCerradura Electrónica
Cerradura Electrónica
 
Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...
Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...
Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...
 
Proyecto no7
Proyecto no7Proyecto no7
Proyecto no7
 
Practica 5 SAIA UFT VJSS
Practica 5 SAIA UFT VJSSPractica 5 SAIA UFT VJSS
Practica 5 SAIA UFT VJSS
 
Practica7 katherine mariana figueroa flores
Practica7  katherine mariana figueroa floresPractica7  katherine mariana figueroa flores
Practica7 katherine mariana figueroa flores
 
MICROCONTROLADORES II EN C. TEMA 5
MICROCONTROLADORES II EN C. TEMA 5MICROCONTROLADORES II EN C. TEMA 5
MICROCONTROLADORES II EN C. TEMA 5
 
Proyecto 7 - Claurimar Medina Quintero
Proyecto 7 - Claurimar Medina QuinteroProyecto 7 - Claurimar Medina Quintero
Proyecto 7 - Claurimar Medina Quintero
 

Destacado

Tutorial proton part 2
Tutorial proton part 2Tutorial proton part 2
Tutorial proton part 2
dar851112
 
C:\Documents And Settings\Earias\Escritorio\Pic 32\Iniciacion A La Programaci...
C:\Documents And Settings\Earias\Escritorio\Pic 32\Iniciacion A La Programaci...C:\Documents And Settings\Earias\Escritorio\Pic 32\Iniciacion A La Programaci...
C:\Documents And Settings\Earias\Escritorio\Pic 32\Iniciacion A La Programaci...
ezequiel
 
Introduccion a las herramientas libres GNU/Linux para la programacion de micr...
Introduccion a las herramientas libres GNU/Linux para la programacion de micr...Introduccion a las herramientas libres GNU/Linux para la programacion de micr...
Introduccion a las herramientas libres GNU/Linux para la programacion de micr...
georgeguitar
 
Presentacion pic 16f887 y 18f4550
Presentacion pic 16f887 y 18f4550 Presentacion pic 16f887 y 18f4550
Presentacion pic 16f887 y 18f4550
Alejandra Ruiz
 

Destacado (20)

Tutorial proton part 2
Tutorial proton part 2Tutorial proton part 2
Tutorial proton part 2
 
Tutorial de diseño de circuitos impresos por técnica de termotransferible
Tutorial de diseño de circuitos impresos por técnica de termotransferibleTutorial de diseño de circuitos impresos por técnica de termotransferible
Tutorial de diseño de circuitos impresos por técnica de termotransferible
 
Presentacion
PresentacionPresentacion
Presentacion
 
Comunicación via bluetooth
Comunicación via bluetoothComunicación via bluetooth
Comunicación via bluetooth
 
Diapositivas pic 18f452 microprocesadores
Diapositivas pic 18f452  microprocesadoresDiapositivas pic 18f452  microprocesadores
Diapositivas pic 18f452 microprocesadores
 
Programador usb 2011_pickit2 modificado
Programador usb 2011_pickit2 modificadoProgramador usb 2011_pickit2 modificado
Programador usb 2011_pickit2 modificado
 
Juego de instrucciones: PIC 16F87x
Juego de instrucciones: PIC 16F87xJuego de instrucciones: PIC 16F87x
Juego de instrucciones: PIC 16F87x
 
Gea fuente de_voltaje
Gea fuente de_voltajeGea fuente de_voltaje
Gea fuente de_voltaje
 
Pic problemas resueltos
Pic problemas resueltos Pic problemas resueltos
Pic problemas resueltos
 
PEP Comida - Jasone
PEP Comida - JasonePEP Comida - Jasone
PEP Comida - Jasone
 
C:\Documents And Settings\Earias\Escritorio\Pic 32\Iniciacion A La Programaci...
C:\Documents And Settings\Earias\Escritorio\Pic 32\Iniciacion A La Programaci...C:\Documents And Settings\Earias\Escritorio\Pic 32\Iniciacion A La Programaci...
C:\Documents And Settings\Earias\Escritorio\Pic 32\Iniciacion A La Programaci...
 
Introduccion a las herramientas libres GNU/Linux para la programacion de micr...
Introduccion a las herramientas libres GNU/Linux para la programacion de micr...Introduccion a las herramientas libres GNU/Linux para la programacion de micr...
Introduccion a las herramientas libres GNU/Linux para la programacion de micr...
 
pic 18f4550
pic 18f4550 pic 18f4550
pic 18f4550
 
Tutorial comunicación bluetooth con módulos rn42 y rn41_by_ editronikx
Tutorial comunicación bluetooth con módulos rn42 y rn41_by_ editronikxTutorial comunicación bluetooth con módulos rn42 y rn41_by_ editronikx
Tutorial comunicación bluetooth con módulos rn42 y rn41_by_ editronikx
 
50824079 datasheet-pic18f4550-espanol
50824079 datasheet-pic18f4550-espanol50824079 datasheet-pic18f4550-espanol
50824079 datasheet-pic18f4550-espanol
 
Presentacion pic 16f887 y 18f4550
Presentacion pic 16f887 y 18f4550 Presentacion pic 16f887 y 18f4550
Presentacion pic 16f887 y 18f4550
 
Interrupciones y Temporizadores
Interrupciones y TemporizadoresInterrupciones y Temporizadores
Interrupciones y Temporizadores
 
Bootloader USB Multiplataforma para pic18f4550
Bootloader USB Multiplataforma para pic18f4550Bootloader USB Multiplataforma para pic18f4550
Bootloader USB Multiplataforma para pic18f4550
 
Ejemplos de diagramas
Ejemplos de diagramasEjemplos de diagramas
Ejemplos de diagramas
 
Como programar un pic
Como programar un pic  Como programar un pic
Como programar un pic
 

Similar a Tutorial proton part 5

Práctica 8
Práctica 8Práctica 8
Práctica 8
Jomicast
 
Delta dta controlador de temperatura - instrucciones
Delta dta   controlador de temperatura - instruccionesDelta dta   controlador de temperatura - instrucciones
Delta dta controlador de temperatura - instrucciones
osito2012
 
2. entradas salidas digitales
2. entradas salidas digitales2. entradas salidas digitales
2. entradas salidas digitales
David Narváez
 
Practicas finales
Practicas finalesPracticas finales
Practicas finales
Tecillo
 
Ejercicios de programacion_resueltos_con
Ejercicios de programacion_resueltos_conEjercicios de programacion_resueltos_con
Ejercicios de programacion_resueltos_con
Carlos Benito
 

Similar a Tutorial proton part 5 (20)

Práctica 8
Práctica 8Práctica 8
Práctica 8
 
Circuitos digitales act4
Circuitos digitales act4Circuitos digitales act4
Circuitos digitales act4
 
catalogo de control
catalogo de controlcatalogo de control
catalogo de control
 
2. Entradas salidas digitales Arduino PUCESI 2017
2. Entradas salidas digitales    Arduino PUCESI 20172. Entradas salidas digitales    Arduino PUCESI 2017
2. Entradas salidas digitales Arduino PUCESI 2017
 
Como diseñar empleando PLC, neumática y electroneumática
Como diseñar empleando PLC, neumática y electroneumática Como diseñar empleando PLC, neumática y electroneumática
Como diseñar empleando PLC, neumática y electroneumática
 
Delta dta controlador de temperatura - instrucciones
Delta dta   controlador de temperatura - instruccionesDelta dta   controlador de temperatura - instrucciones
Delta dta controlador de temperatura - instrucciones
 
Actividades arduino bellavista
Actividades arduino bellavistaActividades arduino bellavista
Actividades arduino bellavista
 
APCap11.pdf
APCap11.pdfAPCap11.pdf
APCap11.pdf
 
Arduino: Actividades programación con Arduino
Arduino: Actividades programación con ArduinoArduino: Actividades programación con Arduino
Arduino: Actividades programación con Arduino
 
Arduino-programación-17-18-3º-ESO-presentación.pdf
Arduino-programación-17-18-3º-ESO-presentación.pdfArduino-programación-17-18-3º-ESO-presentación.pdf
Arduino-programación-17-18-3º-ESO-presentación.pdf
 
2. entradas salidas digitales
2. entradas salidas digitales2. entradas salidas digitales
2. entradas salidas digitales
 
Practicas finales
Practicas finalesPracticas finales
Practicas finales
 
circuitos555.pdf
circuitos555.pdfcircuitos555.pdf
circuitos555.pdf
 
10 09 20_trabajo_final
10 09 20_trabajo_final10 09 20_trabajo_final
10 09 20_trabajo_final
 
Alarma para casa
Alarma para casaAlarma para casa
Alarma para casa
 
Presentacion
PresentacionPresentacion
Presentacion
 
ARDUINO - METODOLOGÍA PARA TRADUCIR AL LENGUAJE PROCESSING UN CIRCUITO E...
ARDUINO - METODOLOGÍA PARA TRADUCIR  AL  LENGUAJE  PROCESSING  UN CIRCUITO  E...ARDUINO - METODOLOGÍA PARA TRADUCIR  AL  LENGUAJE  PROCESSING  UN CIRCUITO  E...
ARDUINO - METODOLOGÍA PARA TRADUCIR AL LENGUAJE PROCESSING UN CIRCUITO E...
 
Ejercicios de programacion_resueltos_con
Ejercicios de programacion_resueltos_conEjercicios de programacion_resueltos_con
Ejercicios de programacion_resueltos_con
 
Ejercicios de-programacic3b3n-resueltos-con-step-7
Ejercicios de-programacic3b3n-resueltos-con-step-7Ejercicios de-programacic3b3n-resueltos-con-step-7
Ejercicios de-programacic3b3n-resueltos-con-step-7
 
EJERCICIOS_DE_PROGRAMACION_RESUELTOS_CON (1).pdf
EJERCICIOS_DE_PROGRAMACION_RESUELTOS_CON (1).pdfEJERCICIOS_DE_PROGRAMACION_RESUELTOS_CON (1).pdf
EJERCICIOS_DE_PROGRAMACION_RESUELTOS_CON (1).pdf
 

Tutorial proton part 5

  • 1.   PROYECTOS CON INTERRUPTORES Un escenario típico en el mundo de microcontrolador consta del procesamiento de una entrada, para establecer una salida. Leer entradas de un número de fuentes es muy importante. La entrada en un sistema puede ser analógica, que varía con el voltaje, o digital, que es verdadera o falsa. Interruptores u otros dispositivos pueden dar señales al microcontrolador como 0 lógico o 1. Aquí vamos a hablar de la conexión de interruptores de pulsar para varias líneas E / S del microcontrolador. Los Interruptores pueden ser conectados en una de las dos maneras: • Activo. Esto significa que cuando se pulsa un interruptor, se conecta a la línea I / O a VCC o 5V en línea, para dar un 1 lógico. • Línea Baja. Esto se conoce como activos de alta, lo contrario es poco activa. Sin embargo, a fin de evitar una la línea abierta, se conecta la línea utilizando resistencias a GND. El esquema tiene 5 interruptores de entrada. Estos interruptores están configurados como activos. Así, se han asociado resistencias conectadas a VCC. La línea correspondiente a leer 1 lógico, cuando el interruptor NO se presiona y 0 lógica cuando está siendo presionado. La línea especificada debe ser declarada como digital y como entrada antes de usar el interruptor.  
  • 2.   Ejercicio 1. Device=18F4550 XTAL=20 ALL_DIGITAL=true Output PORTC Input PORTA.0 Symbol LED = PORTC.0 Symbol SW1 = PORTA.0 Low LED Loop: If SW1=0 Then DelayMS 300 High LED End If GoTo Loop En este programa se supervisa 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.  
  • 3.   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 PORTC.0, permaneciendo en este estado una vez se libera el interruptor. Circuito EJERCICIO 1. Hágalo usted mismo 1. Hacer un programa que deba encender el LED y en cada pulsación de un botón lo apague. 2. Hacer un programa que encienda un LED cuando se pulsa SW1 y lo apague cuando se pulsa SW2. 3. Se desea que al pulsar SW1 se prenda un LED y al soltar SW1 se apague el LED. 4. Se desea que al pulsar SW1 se prenda un LED0 y se apague un LED1, y si se pulsa SW2 se prende LED1 y se paga LED0. 5. Se desea que al pulsar SW1 se prendan todas las lámparas LEDS ubicadas en PORTA del PIC 18F4550, y al soltar SW1 se apaguen.  
  • 4.   Ejercicio 2. Circuito EJERCICIO 2, 3, 4,5. Device=18F4550 XTAL=20 ALL_DIGITAL=true Output PORTC Input PORTA.0 Input PORTA.1 Symbol LED = PORTC.0 Symbol SW1 = PORTA.0 Symbol SW2 = PORTA.1 Dim x As Byte x=100 Low LED Loop: DelayMS x* 10 Toggle LED If SW3=0 Then  
  • 5.   x=x+5 DelayMS 200 EndIf If SW4=0 Then x=x-5 DelayMS 200 EndIf GoTo Loop 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 PORTC.0. Así, la velocidad de parpadeo del LED se puede cambiar pulsando SW1 o SW2. Rebote de 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 activos de baja o alta, también acepta un número que es el retraso de espera, después de que una repetición automática sea publicada. La frecuencia de repetición automática también puede ser mencionada en la declaración. Ejercicio 3. Device=18F4550 XTAL=20 ALL_DIGITAL=true Output PORTC Input PORTA.0 Input PORTA.1 Symbol LED = PORTC.0 Symbol SW1 = PORTA.0 Symbol SW2 = PORTA.1 Dim x As Byte x=0 loop: Button SW1, 0, 100, 250, x, 0, aa Toggle LED DelayMS 100 aa: GoTo loop  
  • 6.   Este 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. Además de los botones, muchos tipos de interruptores, como puentes o conmutadores DIP pueden ser utilizados en el de hardware para indicar varias configuraciones. Se puede leer como cualquier cambio, como 0 lógico o 1, dependiendo de la configuración del hardware. Lectura de una combinación de botones 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. Ejercicio 4. Device=18F4550 XTAL=20 ALL_DIGITAL=true Output PORTC Input PORTA.0 Input PORTA.1 Symbol LED = PORTC.0 Symbol SW1 = PORTA.0 Symbol SW2 = PORTA.1 loop: If SW1=0 And SW2=0 Then Toggle LED DelayMS 300 EndIf GoTo loop Este programa hará un seguimiento del interruptor SW1 y SW2. Se cambiará el estado del LED sólo si se pulsan las dos teclas. En una segunda situación queremos que SW2 preceda a SW1. Ejercicio 5. Device=18F4550 XTAL=20 ALL_DIGITAL=true Output PORTC Input PORTA.0 Input PORTA.1 Symbol LED0 = PORTC.0  
  • 7.   Symbol LED1 = PORTC.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 Este programa se configura SW1 como interruptor principal, cuando se activa, se cambia de estado el LED1 (PORTC.1) y espere 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. es llevado a cabo. PINES ESPECIALES PARA CONECTAR INTERUPTORES El PORTB.0 de interrupción Se puede ubicar un interruptor de uso general, situado en PORTB.0. Aunque puede funcionar como un interruptor normal, descrito anteriormente, el PORTB.0 puede ser configurado para desarrollar un procedimiento interno de la interrupción cada vez que se produce un cambio, en el PIN. Vamos a hablar de esto más adelante en la sección correspondiente. Aquí sólo quiero mencionar que este PIN puede ser utilizado no sólo como interruptor de entrada de uso general, sino también como un medio de prueba de la interrupción. El PORTA.4 T0CKI También puede ser utilizado de otra forma. El PIN PORTA.4 puede ser configurado como entrada para el Timer 0. Timer 0 puede ser configurado para contar el número de impulsos procedentes de PORTA.4. Con el fin de experimentar con esto podemos utilizar in interruptor para dar impulsos externos para este contador o hacer una fuente externa, como un oscilador basado en 555, y conectarlo a este conector, para valorar los acontecimientos externos, que se pueden contar.  
  • 8.   Ejercicios propuestos En los siguientes ejercicios escribir las decisiones y realizar la simulación en PROTEUS. 1. Se tienen 3 pulsadores SW1, SW2 y SW3, un LED0, se desea que al pulsar solo dos se prenda LED0, y si no se pulsa ninguno se apague LED0. 2. Se tienen 2 lámparas L0 y L1, dos pulsadores SW1 y SW2, se desea que al pulsar SW1 se prendan las dos lámparas y se apaguen si se pulsa SW2. 3. Se tienen 4 pulsadores SW0 a SW3, una lámpara L0, se desea que al pulsar SW0 y SW1 o SW22 y SW3 se prenda L0 en otro caso se apague. 4. Se tiene A=1, B=10, C=4, si A+B>3 cargar en C 25, si A>C or B<C entonces cargue en A 34 y en B 12. Mostrar resultado con leds. 5. Se tienen 4 pulsadores Sw1 a Sw4, y tres lámparas L1 a L3, se desea que L1 solo prenda cuando se pulsen al menos dos, L2 solo prende cuando se pulsen solo 3, L3 solo prende si L1 y L2 están prendidas.