Paso 1: BluBerry / DEVCC Hola mundo
Hardware de primera
A efectos de conveniencia: voy a asumir que han montado el ProtoShield. Como se muestra en las imágenes, el escudo incluye dos LEDs que pueden ser conectados a los puertos correspondientes.
Inserte el Proto-escudo DEVCC a la DEVCC V18Connect RB1 a 4Connect RB0 a 2
Código de 'Hola mundo'
Proyecto Hola mundo es típicamente intermitente led, el intervalo se define por lo que un temporizador se utiliza para conmutar el encendido / apagado del led. Hay varias maneras de configurar y desactive el LED y se discuten a continuación.
Es el más simple al conjunto de la salida para que el LED se ilumina, iniciar el temporizador y esperar a que el temporizador de cuenta regresiva. Claro la salida y esperar que el temporizador ejecute de nuevo y cuando el temporizador haya terminado reiniciar el proceso.
La idea es producir una onda cuadrada 50% ciclo de trabajo, para que tenga un uniforme encendido / apagado. La segunda forma que requiere un poco más de la programación sabe cómo es XOR (exclusiva o) la salida que alterna. La ventaja aquí es menos líneas de código, que hace que sea más intuitivo y fácil de leer
El LED tendrá dos Estados en o 0 o 1. Cuando el LED es XOR 0 con 1, luego el LED cambia de estado a 1 o a. Cuando el LED está encendido o 1 XOR 1 cambia a 0.
En el código tendría los siguientes:
{} Flash()
PORTB. B0 = PORTB. B0 ~ 1;
Delay_MS(500); 1 pulso de segundo, es decir, medio segundo en y medio segundo de
}
{while(1)}
Flash();
}
En otras palabras [nueva LED Estado] = [corriente LED Estado] XOR 1. La operación automáticamente escribe el valor nuevo en el pasador.
Usted notará que el escudo de proto tiene dos LEDs, por lo que nuestro siguiente paso es conseguir al cambiar alternativamente. Modificaremos el código proporcionado anteriormente para incluir una segunda salida. He seleccionado PORTB. B1 como la salida del segundo, pero esto se establece en 1, es decir, es sobre cuando el PIC arranca mientras PORTB. B0 es apagado. Cuando el código de ciclos se iluminarán alternativamente los LEDs.
LEDs de alterna
{} Flash()
PORTB. B0 = PORTB. B0 ~ 1;
PORTB. B1 = PORTB. B1 ~ 1;
Delay_MS(500); 1 pulso de segundo, es decir, medio segundo en y medio segundo de
}
Configura el dispositivo
Startup() {}
ANSELB = 0 X 00; Establece todas las entradas a Digital
TRISB = 0XFC; Conjuntos de
PORTB = 0 X 0; Borra todas las salidas a '0'
PORTB. B1 = 1; Conjuntos de bits 1 a alta
}
Principal del programa
Void main() {}
Startup();
{while(1)}
Flash();
}
}
Análisis y peculiaridades
La información presentada es ayudar en problemas de disparos y entender cómo funcionan las cosas.
Entradas analógicas
Las fotos más nuevas han multiplexado muchas características con el mismo PIN. Uno de los más sencillos de estos es donde un PIN digital comparte la misma ubicación que una entrada analógica. De forma predeterminada, cuando el PIC arranca, la funcionalidad periférico analógica compartida con el pin es por defecto disponible y tiene prioridad sobre la funcionalidad digital. Debido a esto si no tienes sirve para las entradas analógicas, deben desactivarse. Esto se hace escribiendo el registro ANSELX. Sustituir la X por el puerto por ejemplo el puerto B que es ANSELB.
A menos que los registros ANSELB o ANSELX se han configurado, en su caso que usted puede experimentar resultados donde el puerto no responde como se esperaba. Asegurar que los registros de ANSELx se han configurado correctamente.
Redondeo
El proyecto descrito aquí muestra una manera alternativa de 'pruebas' de que está trabajando su PCB. Es un proyecto de gran de tipo tutorial para venir a los apretones con algunos aspectos de la utilización de fotos. Los ejemplos de código pueden utilizarse para una sola o múltiples LED de flash como se expande su proyecto, sólo añadir o quitar pernos desde el código.
[E]