I am trying to Interface PIC/Arduino with cd4094 serial shift register, I have written simple c code w.r.t. pic controller.
if i send data 1: LED1 should glow
if i send data 2: LED2 should glow
if i send data 3: LED3 should glow
I have attached code & schematic for reference for reference.
below code example for PIC16F886
RA0= strobe
RA1=clock
RA2=DATA
void ShiftData(unsigned char Data)
{
unsigned char i;
OUTEN=1;
STROBE = 0;
DISPCLK = 0;
DISPDATA = 0;
for(i = 0;i < 8;i++)
{
if(Data & 0x01)
DISPDATA = 1;
else
DISPDATA = 0;
DISPCLK = 1;
NOP();
NOP();
DISPCLK = 0;
Data = Data >> 1;
}
STROBE = 1;
NOP();
NOP();
STROBE = 0;
OUTEN=0;
}
void Init_Controller()
{
cnt=100;
OSCCON=0b01110001;
// CONFIG1=0b00000100;
//OSCTUNE=0b00000000;
PIE2=0b00000000;
PIR2=0b00000000;
CM1CON0 = 0b00000000;
CM2CON0 = 0b00000000;
TRISC = 0x3B;
PORTC = 0x00;
TRISB=0X0F;
PORTB = 0X00;
TRISA=0x10;
PORTA=0x00;
ADCON0= 0x00;
ANSEL = 0b00000000;
Timer1_Interrupt();
}
void main(void)
{
OSCCON=0b01110001;
Init_Controller();
GIE=1;
PEIE=1;
TMR1IE=1;
unsigned char Data=0X02;
while(1);
{
ShiftData(0X10);
}
}