ahmet2004
Member level 3
pic16f877a i2c
Pic16f877a i2c
#Master#
#Slave#
Projes:
**broken link removed**
Pic16f877a i2c
#Master#
#include <16f877a.h>
#fuses NOWDT,HS, NOPROTECT, BROWNOUT, NOPUT, NODEBUG, NOLVP
#use delay(clock=20000000)
#use i2c(MASTER, SDA=PIN_C4, SCL=PIN_C3, FORCE_HW)
#byte PORTD = 0x08
void main()
{
set_tris_D(0xb11111111);
OUTPUT_d(0xff);
delay_ms(250);
while(1)
{
i2c_start();
delay_ms(100);
i2c_write(0xa0);
delay_ms(100);
i2c_write(PORTD);
delay_ms(100);
i2c_stop();
}
}
#Slave#
#include <16f877a.h>
#use delay(clock=20000000)
#fuses NOWDT,HS, NOPROTECT, BROWNOUT, NOPUT, NODEBUG, NOLVP
#use i2c(SLAVE, SDA=PIN_C4, SCL=PIN_C3, address=0xa0, FORCE_HW)
#use rs232(baud=9600,parity=N,bits=8,xmit=PIN_C6,rcv=PIN_C7)
#byte PORTD = 0x08
char DEGER2;
int DEGER1;
#INT_SSP
void ssp_interupt ()
{
//i2c_start();
DEGER2 = i2c_read();
delay_ms( 100 );
DEGER1 = i2c_read();
delay_ms( 100 );
//i2c_stop();
}
void main()
{
set_tris_D(0x00);
enable_interrupts(GLOBAL);
enable_interrupts(INT_SSP);
DEGER1 = 0;
while(1)
{
OUTPUT_D(DEGER1);
printf("DEGER1: %x\r\n",DEGER1);
printf("DEGER2: %02x\r\n\r\n",DEGER2);
delay_ms( 100 );
}
}
Projes:
**broken link removed**