parallel slave port/usrt in pic16f877

Thread Starter

roozbehir

Joined Dec 10, 2018
2
Hello everyone,

I'm trying to design a circuit with pic16f877 with parallel slave port and this is the design I have :




and this is the C code for this circuit :
C:
/****************************************
*Description :
* SWITCH X6 - /CS
* SWITCH X5 - /WR
* SWITCH X4 - /RD
*****************************************/

/* This header file declares the internal
register addresses for PIC16F874 */
#include <io16f877.h>
// Main
void main(void)
{
unsigned char temp;
ADCON1 = 0x0f; // Configure PORTE pins as digital input
// Define directions for port pins
TRISE = 0x17;
TRISB = 0x00;
do{
if (IBF) temp = PORTD;
else if (OBF == 0) PORTB = temp;
}while(1);
}
I want to add a light sensor with the high priority in this circuit so when the light is more than a specified value,reading and writing stop working.
and altough I have another circuit with pic16f877 :


with this C code :
C:
#include <io16f874.h>
// Transmit
void TXD(unsigned char data)
{
RC2 = 1;
TXREG = data; // Put data into buffer sneds the data
TXEN = 1;
while(!TRMT); // Wait for empty transmit buffer
TXEN = 0;
RC2 = 0;
}
// Receive
unsigned char RXD(void)
{
unsigned char data;
RC0 = 1;
RC0 = 0;
RC0 = 1;
RC1 = 0;
RCIF = 0;
SREN = 1;
TXEN = 1;
while(!RCIF); // Wait for data to be received
data = RCREG; // Read RCREG into data
RC1 = 1;
TXEN = 0;
return(data); // Return received data
}
// Main
void main(void)
{
unsigned char data;
// Set baud rate(19200[bps])
SPBRG = 191;
TXSTA = 0x90;
TRISC = 0xf8; // Set RC<0:2) as outputs
TRISA = 0xff; // Set RA0 input
ADCON1 = 0x06; // Configure all pins as digital inputs
PORTC = 0xfa;
RCSTA = 0x80;
do{
while(RA0);
data = RXD();
TXD(data);
while(!RA0);
}while(1);
}
when we press X4 the value of dip switch will be display on level meter. I want to add a light sensor in this circuit so when the light is more than a specified value, the circuit stop functioning.
can anyone help me with these two problems??

Moderator edit: added code tags
 

MrChips

Joined Oct 2, 2009
30,714
Welcome to AAC!

You have shown two circuits and two programs.

Now identify clearly what it is you want to do.
Choose one circuit and one program.
 

Thread Starter

roozbehir

Joined Dec 10, 2018
2
thank you :)

in both circuits I want to add a light sensor. in first one I want to stop the circuit from functioning when light is more than a specified value. in second circuit I want to stop the circuit from functioning when light is less than a specified value.
 

MrChips

Joined Oct 2, 2009
30,714
Create a voltage divider circuit with a resistor and a light dependent resistor (LDR).
Feed the voltage into one of the following if available on the MCU:

1) ADC input
2) Analog comparator input
3) Schmitt trigger digital input
 
Top