Hola a todos, estoy empezando en el mundo de la electrónica y microcontroladores, así que si ven errores fatales no me golpeen jeje.
Básicamente lo que pretendo es controlar 3 sensores infra rojos. Si se activa el infrarojo de enmedio activa una torreta (representado por el led de la izquierda), si se activa el de enmedio y cualquiera de los otros dos o los tres se activan la torreta y la alarma (ambos leds). Si sólo se activan los sensores de los lados no pasa nada. Acá la imagen.
Nota: tanto la torreta como la alarma funcionan a 12 V, para simplificar en proteus usé leds, sólo tendría que cambiar la alimentación de los relés.

Ahora, este es el código que está cargado en el PIC
*
* File: S.A.C..C
* Author: Asus
*
* Created on 13 de noviembre de 2019, 04:48 PM
*/
#include <pic16f877a.h>
#include<htc.h>
// PIC16F877A Configuration Bit Settings
// 'C' source line config statements
// CONFIG
#pragma config FOSC = XT // Oscillator Selection bits (XT oscillator)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)
// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.
#include <xc.h> //LIBRERIA XC8
#define _XTAL_FREQ 4000000
#define SENSORIZQ RB0
#define SENSORMED RB1
#define SENSORDER RB2
#define RELELUZ RC0
#define RELESONIDO RC1
void main()
{
TRISB=0xFF;
TRISC=0X00;
PORTB=0X00;
while(1) //loop infinito
if(SENSORMED == 1)
{
RELELUZ = 1;
if(SENSORIZQ == 1 || SENSORDER == 1)
{
RELESONIDO = 1;
}
else
{
RELESONIDO = 0;
}
}
else
{
RELELUZ = 0;
RELESONIDO = 0;
}
}
En el proteus funciona de maravilla, sin embargo en la práctica no funciona. Cargué el código mediante un programador pic k150 y el código lo escribí en MPLAB X IDE.
Físicamente no pasa nada, y me pregunto en dónde está el error.... Como comentaba al principio, estoy comenzando en el tema, no sean rudos conmigo...
Gracias a todos!
Básicamente lo que pretendo es controlar 3 sensores infra rojos. Si se activa el infrarojo de enmedio activa una torreta (representado por el led de la izquierda), si se activa el de enmedio y cualquiera de los otros dos o los tres se activan la torreta y la alarma (ambos leds). Si sólo se activan los sensores de los lados no pasa nada. Acá la imagen.
Nota: tanto la torreta como la alarma funcionan a 12 V, para simplificar en proteus usé leds, sólo tendría que cambiar la alimentación de los relés.

Ahora, este es el código que está cargado en el PIC
*
* File: S.A.C..C
* Author: Asus
*
* Created on 13 de noviembre de 2019, 04:48 PM
*/
#include <pic16f877a.h>
#include<htc.h>
// PIC16F877A Configuration Bit Settings
// 'C' source line config statements
// CONFIG
#pragma config FOSC = XT // Oscillator Selection bits (XT oscillator)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)
// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.
#include <xc.h> //LIBRERIA XC8
#define _XTAL_FREQ 4000000
#define SENSORIZQ RB0
#define SENSORMED RB1
#define SENSORDER RB2
#define RELELUZ RC0
#define RELESONIDO RC1
void main()
{
TRISB=0xFF;
TRISC=0X00;
PORTB=0X00;
while(1) //loop infinito
if(SENSORMED == 1)
{
RELELUZ = 1;
if(SENSORIZQ == 1 || SENSORDER == 1)
{
RELESONIDO = 1;
}
else
{
RELESONIDO = 0;
}
}
else
{
RELELUZ = 0;
RELESONIDO = 0;
}
}
En el proteus funciona de maravilla, sin embargo en la práctica no funciona. Cargué el código mediante un programador pic k150 y el código lo escribí en MPLAB X IDE.
Físicamente no pasa nada, y me pregunto en dónde está el error.... Como comentaba al principio, estoy comenzando en el tema, no sean rudos conmigo...
Gracias a todos!