3
TUTORIAL II OBJETIVOS Crear códigos en C de mayor complejidad. Atender interrupciones por cambio de estado en Puerto B y por cambio de estado en el pin RB0/INT. Realizar el segundo proyecto: Contador Binario usando pulsadores y LEDs. Adquirir mayor habilidad efectuar para las conexiones del microcontrolador PIC16F877A con los elementos periféricos. Aprender a interpretar los bits bandera en los registros del microcontrolador. PROYECTO 2: Contador Binario usando pulsadores y LEDs. El proyecto consiste en configurar todo un puerto del microcontrolador para que muestre por medio de LEDs conectados a él, el valor en binario de un contador interno. Tal contador podrá ser modificado en tiempo real por dos pulsadores conectados al puerto B del PIC, de tal manera que con un pulsador se pueda sumar 1 al contador y con el otro se reste 1. El resultado en todo momento será mostrado por los LEDs como un número binario. Veamos como se hace: 1. Abrimos el MPLAB, creamos un proyecto nuevo dando click en Project/Project Wizard... Elegimos el microcontrolador PIC16F877A en el paso 1, en el paso 2 del asistente, en el menú Active toolsuite el HI-TECH PICC Toolsuite. En el paso 3 como nombre al proyecto sugerimos “on_led_bin.ASM” y como carpeta C:\SIMUPIC. El paso 4 lo omitimos, revisamos que la información dada sea correcta y click en finalizar para que nos cree el proyecto. 2. Luego de haber creado el proyecto creamos un nuevo archivo de código en C que se adicionara al proyecto. Tecleamos el siguiente código en C: #include <pic.h> Unsigned char contador=0; void interrupt inter(void) { // Inicio de Atención a Interrupciones If (RBIF==1) //Pregunto por Interrupción por los pines RB4-RB7 { if (contador==99) //En caso que llegue a 99 que es máximo valor visualizable… contador=0; // …se reinicia el conteo en 0 el valor mínimo (ciclo) else contador++; //De lo contrario no hay problema para que sume

Tutorial II -Contador Binario usando pulsadores y LEDs-

Embed Size (px)

Citation preview

Page 1: Tutorial II -Contador Binario usando pulsadores y LEDs-

TUTORIAL II

OBJETIVOS

• Crear códigos en C de mayor complejidad.

• Atender interrupciones por cambio de estado en Puerto B y por cambio de estado en el pin RB0/INT.

• Realizar el segundo proyecto: Contador Binario usando pulsadores y LEDs.

• Adquirir mayor habilidad efectuar para las conexiones del microcontrolador PIC16F877A con los elementos periféricos.

• Aprender a interpretar los bits bandera en los registros del microcontrolador. PROYECTO 2: Contador Binario usando pulsadores y LEDs.

El proyecto consiste en configurar todo un puerto del microcontrolador para que muestre por medio de LEDs conectados a él, el valor en binario de un contador interno. Tal contador podrá ser modificado en tiempo real por dos pulsadores conectados al puerto B del PIC, de tal manera que con un pulsador se pueda sumar 1 al contador y con el otro se reste 1. El resultado en todo momento será mostrado por los LEDs como un número binario. Veamos como se hace:

1. Abrimos el MPLAB, creamos un proyecto nuevo dando click en Project/Project Wizard... Elegimos el microcontrolador PIC16F877A en el paso 1, en el paso 2 del asistente, en el menú Active toolsuite el HI-TECH PICC Toolsuite. En el paso 3 como nombre al proyecto sugerimos “on_led_bin.ASM” y como carpeta C:\SIMUPIC. El paso 4 lo omitimos, revisamos que la información dada sea correcta y click en finalizar para que nos cree el proyecto.

2. Luego de haber creado el proyecto creamos un nuevo archivo de código en C

que se adicionara al proyecto. Tecleamos el siguiente código en C: #include <pic.h> Unsigned char contador=0; void interrupt inter(void) { // Inicio de Atención a Interrupciones If (RBIF==1) //Pregunto por Interrupción por los pines RB4-RB7 { if (contador==99) //En caso que llegue a 99 que es máximo valor visualizable… contador=0; // …se reinicia el conteo en 0 el valor mínimo (ciclo) else contador++; //De lo contrario no hay problema para que sume

Page 2: Tutorial II -Contador Binario usando pulsadores y LEDs-

RBIF=0; //Pongo la bandera respectiva en 0 para indicar que ya Sumé } else // Como no hubo interrupción por cambio de estado en… // …Puerto B es porque la hubo por el pin RB0 { If (contador==0) //En caso que llegue a 0 que es mínimo valor visualizable… contador=99; // …se reinicia el conteo desde 99, el valor máximo else contador--; //De lo contrario no hay problemas para que reste INTF=0; //Pongo la bandera respectiva en 0 para indicar que ya Resté } } //Fin de Atención a interrupciones void main (void) { //Inicio Main TRISC=0x00; //Configuro el puerto C como salida INTCON=0b10011000; //Activamos interrupciones por RB4-RB7 y por RB0… // …y colocamos las banderas en 0 OPTION=0b01111111; // Activamos las pull-up para que al recibir 0…

// …cree las interrupciones por cambio de estado for (;;) //Ciclo Infinito { PORTC=contador; // Al puerto C le mandamos el valor de la variable "contador" } } //Fin Main

3. Compilamos el proyecto tal como fue descrito en el Tutorial 1, y grabamos el PIC con el código respectivo. Montamos el circuito descrito en el diagrama de conexiones en la protoboard y verificamos que todo siga según lo esperado. En caso contrario sírvase releer las sugerencias hechas en la practica 1 acerca de la solución de problemas.

Page 3: Tutorial II -Contador Binario usando pulsadores y LEDs-

DIAGRAMA DE CONEXIONES