parallel slave port/usrt in pic16f877

Find out how to setup your programmer's software and how to solve many common problems.

Moderator: phalanx

Post Reply
roozbehir
Posts: 1
Joined: Mon Dec 10, 2018 9:18 am

parallel slave port/usrt in pic16f877

Post by roozbehir » Mon Dec 10, 2018 9:20 am

Hello everyone,

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

[​IMG]


and this is the C code for this circuit :

/****************************************
*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 :
[​IMG]

with this C code :

#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??

User avatar
phalanx
Non-SFE Guru
Posts: 1983
Joined: Sun Nov 30, 2003 8:57 am
Location: Candia, NH

Re: parallel slave port/usrt in pic16f877

Post by phalanx » Mon Dec 10, 2018 12:31 pm

I see you're double posting this over at Electro-Tech-Online forums but you didn't link your schematic pictures properly here. I can see them fine on their site.

Why do you think you need to use the PSP? From what you have in your schematic, it's completely unnecessary. Feed your light sensor into a comparator adjusted to the light values you want and hook the output of the comparator to a digital I/O pin on the PIC. From there it's nothing more than a simple bit comparison in your firmware and you can make the PIC do whatever you want depending on the state of the light sensor.

Also, what's going on with your second schematic? it's not even connected to PSP pins.

-Bill

Post Reply