Está en la página 1de 29

UNIVERDIDAD NACIONAL ABIERTA Y A DISTANCIA

Escuela de Ciencias Bsicas, Tecnologa e Ingeniera

CAD para Electrnica

Actividad 11.
Proyecto Final

ESTUDIANTE:
ALEXANDER CASTRO MENDOZA 72188284 Grupo 302526_8

Tutor Campus virtual NELSON HUMBERTO ZAMBRANO

Tutor de laboratorio WILSON ALMANZA

Mayo 25 de 2013

PROPSITOS Fortalecer los procesos de diseo electrnico en base a herramientas de software con el fin de dar solucin a un problema especfico . Desarrollar habilidades de anlisis de situaciones y estados a partir de procesos simulados. Generar soluciones prcticas y confiables depuradas desde un simulador electrnico.

OBJETIVOS Desarrollar los procesos de diseo para implementar un sistema de control de acceso al laboratorio de electrnica, donde se desactiven luces y cortinas tan pronto este vaco. Sustentar el proceso de diseo de acuerdo con las variables del proyecto.

DESCRIPCIN DEL PROBLEMA El equipo de trabajo debe disear un sistema de control para la iluminacin y el cierre de las persianas del laboratorio de electrnica. En el momento del ingreso al laboratorio, el sistema debe realizar una cuenta de las personas que ingresan, habr un interruptor manual de encendido de la iluminacin y otro para la apertura de las persianas o cortinas. En el momento que el sistema detecte que el laboratorio quedo vaco, no hay ninguna persona dentro, generar un retardo de 10 segundos y proceder a cerrar las persianas en caso que estas fueran abiertas y apagar las luces. Se debe visualizar el conteo del personal por medio de un display, debe tener en cuenta cuando salen y entran, asumiendo que solo pasa de a una persona por la puerta de acceso. Al momento de llegar a cero (0) el contador de personal, iniciar la cuenta regresiva para el apagado de luces y el cierre de las persianas y se mostrar tambin en el display.

JUSTIFICACIN El problema pude tener diferentes soluciones, pero la ms viable debido a la rapidez con que se puede disear y construir, reduccin de espacio a ocupar y un consumo energtico mnimo es usar un microcontrolador en lugar de una lgica secuencial y combinacional. Hardware a usar Torniquete: Cuenta con un sistema que activa un microswiche cuando se hace girar en un sentido, y otro microswiche cuando se hace girar en sentido contrario, de esta manera identifica entrada y salida. Tambin tiene internamente una sistema que al recibir una seal, inmediatamente tranca el tornique, enciende un LED rojo y no permite movimiento en direccin de entrada, es decir que solo permite la salida. Mientras el torniquete est liberado estar encendido un LED de color verde. Sistema de persianas con motor. Se investigo entre varias marcas y se escogi el fabricante M&G, Motor & Blinds. En el diagrama a continuacin se evidencia como estos sistemas cuentan con finales de carrera.

Imagen tomada de: http://www.motoresypersianas.com/manuales.php

A continuacin se muestra un cuadro con dos pulsadores, uno para subir persianas, otro para bajar persianas, y al motor lo detienen los finales de carrera.

Imagen tomada de:


http://www.motoresypersianas.com/catalogo/PULSADOR-1-CANAL-PRO-BLUE-+RECEPTOR_182.html#.UZwZiKL1O8p

Estas dos figuras son bastantes dicientes, esto implica que se est trabajando con subsistemas que son prcticamente automticos por lo tanto no hay que disear esta parte porque ya est hecha. Tambin se puede evidenciar observando el video que est en el siguiente enlace; el cual es un tutorial acerca de cmo instalar motores para persianas, all se muestran como ajustan los finales de carreras y los pulsadores de subir y bajar persianas. http://www.youtube.com/watch?v=U-OERxJ5F5M Por lo tanto en el dise planteado habr salidas de rel cuyos extremos de un contacto Normalmente Abierto irn en paralelo a estos pulsadores.

Sistema a construir en generar el PCB. o Bsicamente est conformado por el microcontrolador PIC16F877A que es quien controla el sistema. o Incluye dos display de 7 segmentos para visualizar el conteo personas que entran al laboratorio y tambin para visualizar el conteo regresivo de los 10 segundos antes de apagar luces y cerrar persianas 3 LED indicadores de estado de los 3 rels que gobiernan luces, persiana abre y persiana cierra.

o Otros (transistores, resistencias, diodos)

DIAGRAMA ESQUEMTICO

CIRCUITO DEL LA SOLUCIN PARA SIMULAR (Corresponde al del PCB)

NOTA 1: Se puede observar que se incluyo a la solucin (bajar persianas), esto no lo solicito la gua de la actividad, pero esto no es problema, simplemente no se conecta y funciona tal como lo solicito la gua, solo es un valor agregado que se le dio al diseo.

NOTA 2: Se puede observar que en este diseo el display se multiplexa para no tener que usar decodificadores por cada display y con ello 7 resistencias ms, igualmente hay algo interesante es esta multiplexacin y es que comnmente los display multiplexados llevan en su nodo un transistor como en el ejemplo de la siguiente figura.

La solucin propuesta no usa estos transistores con sus respectivas resistencias porque la corriente total que circula en cada pin el puertoD en el peor de los casos es:

Esos 26mA, es la corriente que circula por cada patita del puerto D, es decir la corriente se reparte por cada una de sus patitas para eliminar el espacio que ocupa 2 transistores y dos resistencias. Este es el circuito que lo reemplaza:

CIRCUITO USADO PARA GENERAR EL PCB Cuando se est realizando la simulacin del circuito en Proteus este no admite el uso de conectores, por eso es que en el anterior circuito no se colocaron conectores. En el circuito a continuacin ntese que se han quitado los elementos que no forman parte de la placa como el torniquete y el display, en su lugar se colocaron conectores y tambin se aadieron los conectores que son las salidas que gobiernan luces y persiana y el conector de la fuente.

GENERAR EL PCB (ARES) Una vez obtenido el circuito como se presenta en la figura anterior se procede a colocar los componentes, el programa lo hace de manera automtica pero en desorden, tal como lo muestra la siguiente figura.

Entonces hay que organizar manualmente este circuito y queda tal como aparece en la siguiente figura. Medira 7.8 x 13.3 centimetros.

Despus de esto se gener el circuito impreso el cual qued de la siguiente manera. Todas las conexiones a tierra quedan conectadas al chasis (Sombra azul transparente).

Esta es una vista de cmo queda el PCB visto del lado de los componentes

Esta es una vista del lado de las pistas.

Esta es una vista de perfil.

FUNCIONAMIENTO DEL CIRCUITO 1. Inicio de la rutina en el microcontrolador. En esta etapa de programacin el torniquete est habilitado para que entre personal, las luces estn apagadas y las persianas abajo. El display indica cero y est listo para iniciar una cuenta ascendente hasta 99 a medida que entre el personal al laboratorio. 2. El torniquete (Es un sistema electromecnico). Cuenta con un sistema que activa un swiche cuando se hace girar en un sentido, y otro swiche cuando se hace girar en sentido contrario, de esta manera identifica entrada y salida. Tambin tiene internamente una sistema que al recibir una seal, enciende un LED rojo e inmediatamente tranca el torniquete impidiendo el ingreso de personal al laboratorio, es decir que solo permite la salida. Mientras el torniquete est liberado estar encendido un LED de color verde. 3. Condiciones de funcionamiento. a) Cuando la cuenta est en cero, el contador solo puede contar de manera ascendente, es decir que si manualmente se hace girar el torniquete en direccin de salida este no contar regresivamente partiendo de 99. b) Cuando entra la primera persona al laboratorio se encendern las luces, y abra un pulso de 1 segundo que indica subir persianas. Y a partir de la segunda persona hasta la persona nmero 99, solo habr cuenta en el display sin que haya pulso de abrir persianas. c) Cuando la cuenta llega a 99, el torniquete recibe la orden de bloqueo es decir; no deja entrar a mas nadie al laboratorio y para el programa simulador tambin impide seguir incrementando el contador. d) Cuando la cuenta llega a cero (laboratorio vacio), el display visualizara la cuenta regresiva de 10 segundos, luego se apagaran las luces y habr un pulso de 1 segundo para bajar las persianas. Durante estos 10 segundos el torniquete permanecer bloqueado para las personas que deseen ingresar, esto ltimo con la finalidad de que se asegure siempre que la cantidad de personas que estn dentro del recinto sean las mismas que muestra el display. En el siguiente enlace que se presenta a continuacin se explica el funcionamiento del circuito: http://www.youtube.com/watch?v=k8tz1QlM4BU

DIAGRAMA DE PINES DEL PIC16F877 Debido al tamao no se incluyo el Data Sheet del PIC.

CONCLUSIONES 1. Se puso en prctica los conocimientos bsicos para el diseo y simulacin de circuito en base a herramientas de software para dar solucin a un problema Se aprendi cosas nuevas y se adquirieron nuevas habilidades en el manejo del programa de simulacin de circuitos llamado PROTEUS. Usar programas de simulacin para dar solucin a un problema ahorra tiempo dinero porque las soluciones son corregidas desde que inicia la etapa de dise en el programa simulador.

2.

3.

REFERENCIAS Monroy Vsquez J.O, Bolvar Marn F (2010) 302526 Cad Para Electrnica, Universidad Nacioan Abierta y a Distancia. Angulo Usateui JM, Romero Yesa S, Angulo Martinez I, (2000), Microcontroladores PIC Diseo prctico de aplicaciones segunda parte, PIC16F87X, ISBN 84-841-2858-3 Manuales explicativos de instalacin de persianas, M&B Motor & Blinds.
http://www.motoresypersianas.com/manuales.php

ANEXO PROGRAMACIN EN C. //************************************************************************************ #define MX_PIC #define MX_USES_UINT8 1 #define MX_USES_SINT16 0 #define MX_USES_CHAR 0 #define MX_USES_FLOAT 0 #define MX_USES_SINT32 0 #define MX_USES_BOOL 1 #define MX_USES_UINT16 0 #define MX_USES_UINT32 0 //Definiciones para el microcontrolador #define P16F877A #define FC_CAL_PIC #define MX_ADC #define MX_ADC_TYPE_1 #define MX_ADC_BITS_10 #define MX_EE #define MX_EE_TYPE2 #define MX_EE_SIZE 256 #define MX_SPI_1 #define MX_SPI_1_MISO_PORT portc #define MX_SPI_1_MISO_TRIS trisc #define MX_SPI_1_MISO_PIN 4 #define MX_SPI_1_MOSI_PORT portc #define MX_SPI_1_MOSI_TRIS trisc #define MX_SPI_1_MOSI_PIN 5 #define MX_SPI_1_CLK_PORT portc #define MX_SPI_1_CLK_TRIS trisc #define MX_SPI_1_CLK_PIN 3 #define MX_SPI_1_SS_PORT portc #define MX_SPI_1_SS_TRIS trisc #define MX_UART_1 #define MX_UART_1_TX_PORT portc #define MX_UART_1_TX_TRIS trisc #define MX_UART_1_TX_PIN 6 #define MX_UART_1_RX_PORT portc #define MX_UART_1_RX_TRIS trisc #define MX_UART_1_RX_PIN 7 #define MX_I2C #define MX_MI2C #define MX_I2C_1

#define MX_I2C_1_SDA_PORT portc #define MX_I2C_1_SDA_TRIS trisc #define MX_I2C_1_SDA_PIN 4 #define MX_I2C_1_SCL_PORT portc #define MX_I2C_1_SCL_TRIS trisc #define MX_I2C_1_SCL_PIN 3 #define MX_PWM #define MX_PWM_CNT 2 #define MX_PWM_PSCA1 #define MX_PWM_PSCA4 #define MX_PWM_PSCA16 #define MX_PWM_1_PORT portc #define MX_PWM_1_TRIS trisc #define MX_PWM_1_PIN 2 #define MX_PWM_2_PORT portc #define MX_PWM_2_TRIS trisc #define MX_PWM_2_PIN 1 //Funciones #define MX_CLK_SPEED 19660800 #ifdef _BOOSTC #include <system.h> #endif #ifdef HI_TECH_C #include <pic.h> #endif //Datos de configuracin #ifdef _BOOSTC #pragma DATA 0x2007, 0x3f72 #endif #ifdef HI_TECH_C __CONFIG(0x3f72); #endif //Funciones internas #include "C:\Program Files\Flowcode\v5\FCD\internals.c" //Macro function declarations void FCM_Byte_to_BCD(); void FCM_Byte_Multiplexado_2Displays_de_7_Segmentos();

//Variable declarations #define FCV_TRUE (1) #define FCV_FALSE (0) MX_UINT8 FCV_DECENAS;

MX_UINT8 FCV_UNIDADES; MX_UINT8 FCV_NUMERODECIMAL; MX_UINT8 FCV_CONTADOR_DESENDENTE; MX_UINT8 FCV_CONTADOR; MX_UINT8 FCLV_LOOP1; MX_UINT8 FCLV_LOOP2; MX_UINT8 FCLV_LOOP3; MX_UINT8 FCLV_LOOP4;

#include "C:\Program Files\Flowcode\v5\CAL\includes.c" //Macro implementations

void FCM_Byte_to_BCD() { //Clculo //Clculo: // decenas = contador / 10 // unidades = contador - (decenas * 10) FCV_DECENAS = FCV_CONTADOR / 10; FCV_UNIDADES = FCV_CONTADOR - (FCV_DECENAS * 10); //Salida //Salida: unidades -> PORTD trisd = 0x00; portd = (FCV_UNIDADES); //Salida //Salida: decenas -> PORTC trisc = 0x00; portc = (FCV_DECENAS); //Clculo //Clculo: }

void FCM_Byte_Multiplexado_2Displays_de_7_Segmentos() { //ByteAdecimal_2display //Clculo:

// decenas = contador / 10 // unidades = contador - (decenas * 10) FCV_DECENAS = FCV_CONTADOR / 10; FCV_UNIDADES = FCV_CONTADOR - (FCV_DECENAS * 10); //ONDisplayUnidades //Salida: 15 -> PORTD trisd = 0x00; portd = (15); //Unidades //Expresin: unidades? switch (FCV_UNIDADES) { case 0: { //0 //Salida: 63 -> PORTC trisc = 0x00; portc = (63); break; } case 1: { //1 //Salida: 6 -> PORTC trisc = 0x00; portc = (6); break; } case 2: { //2 //Salida: 91 -> PORTC trisc = 0x00; portc = (91); break; } case 3: { //3 //Salida: 79 -> PORTC trisc = 0x00; portc = (79);

break; } case 4: { //4 //Salida: 102 -> PORTC trisc = 0x00; portc = (102); break; } case 5: { //5 //Salida: 109 -> PORTC trisc = 0x00; portc = (109); break; } case 6: { //6 //Salida: 125 -> PORTC trisc = 0x00; portc = (125); break; } case 7: { //7 //Salida: 7 -> PORTC trisc = 0x00; portc = (7); break; } case 8: { //8 //Salida: 127 -> PORTC trisc = 0x00; portc = (127); break;

} case 9: { //9 //Salida: 111 -> PORTC trisc = 0x00; portc = (111); break; } // default: } //Demora //Demora: 2000 us delay_us(255); delay_us(255); delay_us(255); delay_us(255); delay_us(255); delay_us(255); delay_us(255); delay_us(215); //ONDisplayDecenas //Salida: 240 -> PORTD trisd = 0x00; portd = (240); //Decenas //Expresin: decenas? switch (FCV_DECENAS) { case 0: { //0 //Salida: 63 -> PORTC trisc = 0x00; portc = (63); break; } case 1: { //1 //Salida: 6 -> PORTC

trisc = 0x00; portc = (6); break; } case 2: { //2 //Salida: 91 -> PORTC trisc = 0x00; portc = (91); break; } case 3: { //3 //Salida: 79 -> PORTC trisc = 0x00; portc = (79); break; } case 4: { //4 //Salida: 102 -> PORTC trisc = 0x00; portc = (102); break; } case 5: { //5 //Salida: 109 -> PORTC trisc = 0x00; portc = (109); break; } case 6: { //6 //Salida: 125 -> PORTC trisc = 0x00; portc = (125);

break; } case 7: { //7 //Salida: 7 -> PORTC trisc = 0x00; portc = (7); break; } case 8: { //8 //Salida: 127 -> PORTC trisc = 0x00; portc = (127); break; } case 9: { //9 //Salida: 111 -> PORTC trisc = 0x00; portc = (111); break; } // default: } //Demora //Demora: 2000 us delay_us(255); delay_us(255); delay_us(255); delay_us(255); delay_us(255); delay_us(255); delay_us(255); delay_us(215); //OFF_Display //Salida: 0 -> PORTD

trisd = 0x00; portd = (0); }

void main() { //Inicializacin adcon1 = 0x07;

//Cdigo de inicializacin de la interrupciun option_reg = 0xC0;

//BucleInfinito //Bucle: Mientras 1 while (1) { //Comentario: //Reiniciar variables y puertos de salida a Cero //BorraVarialblePtos //Clculo: // contador = 0 // contador_desendente = 10 // $PORTA = 0 // $PORTB = 0 // $PORTC = 0 // $PORTD = 0 FCV_CONTADOR = 0; FCV_CONTADOR_DESENDENTE = 10; FCP_SET(A, 0xff, 0); FCP_SET(B, 0xff, 0); FCP_SET(C, 0xff, 0); FCP_SET(D, 0xff, 0); //torniquete //Punto de Coneccin: [A]: Torniquete FCC_Main_A: ; //Comentario: //Se supone un torniquete que en su movimiento mecanico

//solo activa uno de dos microswiches, sea el que indca //entrada o el que indica salida. //ContadorEnDisplay //Llamar Macro: Byte_Multiplexado_2Displays_de_7_Segmentos() FCM_Byte_Multiplexado_2Displays_de_7_Segmentos(); //Entra? //Decisin: $PORTA.0 = true? if (FCP_GET(A, 0x1) == FCV_TRUE) { //Punto de Coneccin //Punto de Coneccin: [B]: B FCC_Main_B: ; //ContadorEnDisplay //Llamar Macro: Byte_Multiplexado_2Displays_de_7_Segmentos() FCM_Byte_Multiplexado_2Displays_de_7_Segmentos(); //Entra //Decisin: $PORTA.0 = true? if (FCP_GET(A, 0x1) == FCV_TRUE) { //Ir a Punto de Coneccin //Ir a Punto de Coneccin: [B]: B goto FCC_Main_B; // } else { } //contador .= 99? //Decisin: contador = 99? if (FCV_CONTADOR == 99) { //TrancaTorniquete //Salida: 1 -> B1 trisb = trisb & 0xFD; if ((1)) portb = (portb & 0xFD) | 0x02; else portb = portb & 0xFD;

//Ir a Punto de Coneccin //Ir a Punto de Coneccin: [A]: Torniquete goto FCC_Main_A; // } else { } //Contador > 0? //Decisin: contador > 0? if (FCV_CONTADOR > 0) { //Inc Contador //Clculo: // contador = contador + 1 FCV_CONTADOR = FCV_CONTADOR + 1; //contador .= 99? //Decisin: contador = 99? if (FCV_CONTADOR == 99) { //TrancaTorniquete //Salida: 1 -> B1 trisb = trisb & 0xFD; if ((1)) portb = (portb & 0xFD) | 0x02; else portb = portb & 0xFD; //Ir a Punto de Coneccin //Ir a Punto de Coneccin: [A]: Torniquete goto FCC_Main_A; // } else { } } else { //Inc Contador //Clculo: // contador = contador + 1 FCV_CONTADOR = FCV_CONTADOR + 1; //contador .= 99?

//Decisin: contador = 99? if (FCV_CONTADOR == 99) { //TrancaTorniquete //Salida: 1 -> B1 trisb = trisb & 0xFD; if ((1)) portb = (portb & 0xFD) | 0x02; else portb = portb & 0xFD; //Ir a Punto de Coneccin //Ir a Punto de Coneccin: [A]: Torniquete goto FCC_Main_A; // } else { } //Enciende Luces //Salida: 1 -> A1 trisa = trisa & 0xFD; if ((1)) porta = (porta & 0xFD) | 0x02; else porta = porta & 0xFD; //Comentario: //A continuacin se activa abrir persianas con un pulso, es decir, un rel //que su contacto cierra y se abre. //Se dispuso de un sistema independiente para las persianas. //Las cortinas abren o cierran con pulsar uno de dos pulsadores. //Cortina Abre ON //Salida: 1 -> A2 trisa = trisa & 0xFB; if ((1)) porta = (porta & 0xFB) | 0x04; else porta = porta & 0xFB; //Demora dePulso //Bucle: Bucle 30 veces for (FCLV_LOOP1=0; FCLV_LOOP1<30; FCLV_LOOP1++)

{ //Llamar Macro //Llamar Macro: Byte_Multiplexado_2Displays_de_7_Segmentos() FCM_Byte_Multiplexado_2Displays_de_7_Segmentos();

} //Cortina abre OFF //Salida: 0 -> A2 trisa = trisa & 0xFB; if ((0)) porta = (porta & 0xFB) | 0x04; else porta = porta & 0xFB; } } else { //Sale? //Decisin: $PORTB.0 = true? if (FCP_GET(B, 0x1) == FCV_TRUE) { //Punto de Coneccin //Punto de Coneccin: [C]: C FCC_Main_C: ; //ContadorEnDisplay //Llamar Macro: Byte_Multiplexado_2Displays_de_7_Segmentos() FCM_Byte_Multiplexado_2Displays_de_7_Segmentos(); //sale //Decisin: $PORTB.0 = true? if (FCP_GET(B, 0x1) == FCV_TRUE) { //Ir a Punto de Coneccin //Ir a Punto de Coneccin: [C]: C goto FCC_Main_C;

// } else { } //Contador =0? //Decisin: contador = 0? if (FCV_CONTADOR == 0) { //Ir a Punto de Coneccin //Ir a Punto de Coneccin: [A]: Torniquete goto FCC_Main_A; // } else { } //Dec Contador //Clculo: // contador = contador - 1 FCV_CONTADOR = FCV_CONTADOR - 1; //contador < 99 ? //Decisin: contador < 99? if (FCV_CONTADOR < 99) { //LiberaTorniquete //Salida: 0 -> B1 trisb = trisb & 0xFD; if ((0)) portb = (portb & 0xFD) | 0x02; else portb = portb & 0xFD; // } else { } } else { //Ir a Punto de Coneccin //Ir a Punto de Coneccin: [A]: Torniquete goto FCC_Main_A; }

} //Contador =0? //Decisin: contador = 0? if (FCV_CONTADOR == 0) { //Bucle //Bucle: Bucle 13 veces for (FCLV_LOOP2=0; FCLV_LOOP2<13; FCLV_LOOP2++) { //Llamar Macro //Llamar Macro: Byte_Multiplexado_2Displays_de_7_Segmentos() FCM_Byte_Multiplexado_2Displays_de_7_Segmentos();

} //TrancaTorniquete //Salida: 1 -> B1 trisb = trisb & 0xFD; if ((1)) portb = (portb & 0xFD) | 0x02; else portb = portb & 0xFD; //Comentario: //DESPUES DE 10 SEGUNDOS //Se activa cerrar persianas con un pulso, es decir, un rel //que su contacto cierra y se abre. //Se dispuso de un sistema independiente para las persianas. //Las cortinas abren o cierran con pulsar uno de dos pulsadores. //Conteo Regresivo //Bucle: Mientras contador = 0 while (1) { //Clculo //Clculo: // contador = contador_desendente FCV_CONTADOR = FCV_CONTADOR_DESENDENTE; //Bucle //Bucle: Bucle 15 veces

for (FCLV_LOOP3=0; FCLV_LOOP3<15; FCLV_LOOP3++) { //Llamar Macro //Llamar Macro: Byte_Multiplexado_2Displays_de_7_Segmentos() FCM_Byte_Multiplexado_2Displays_de_7_Segmentos();

} //dec_ContDesdencente //Clculo: // contador_desendente = contador_desendente - 1 FCV_CONTADOR_DESENDENTE = FCV_CONTADOR_DESENDENTE - 1;

if ((FCV_CONTADOR == 0) != 0) break; } //Apaga Luces //Salida: 0 -> A1 trisa = trisa & 0xFD; if ((0)) porta = (porta & 0xFD) | 0x02; else porta = porta & 0xFD; //Cortina Cierra ON //Salida: 1 -> A3 trisa = trisa & 0xF7; if ((1)) porta = (porta & 0xF7) | 0x08; else porta = porta & 0xF7; //Demora dePulso //Bucle: Bucle 30 veces for (FCLV_LOOP4=0; FCLV_LOOP4<30; FCLV_LOOP4++) { //Llamar Macro //Llamar Macro: Byte_Multiplexado_2Displays_de_7_Segmentos() FCM_Byte_Multiplexado_2Displays_de_7_Segmentos();

} //Cortina Cierra OFF //Salida: 0 -> A3 trisa = trisa & 0xF7; if ((0)) porta = (porta & 0xF7) | 0x08; else porta = porta & 0xF7; } else { //Ir a Punto de Coneccin //Ir a Punto de Coneccin: [A]: Torniquete goto FCC_Main_A; }

} mainendloop: goto mainendloop; } void MX_INTERRUPT_MACRO(void) { }

Todos los archivos de proteus (isis y ares), programacin del pic (.asm, .hex, .c) los dejo a disposicin para que los descarguen del siguiente link. https://dl.dropboxusercontent.com/u/74886839/TareaCadParaElectronica/AporteParticip ativo_TrabajoFinal_Alexander_Castro_Mendoza.rar