sbit LCD_RS at RB2_bit;sbit LCD_EN at RB3_bit;sbit LCD_D4 at RB4_bit;sbit LCD_D5 at RB5_bit;sbit LCD_D6 at RB6_bit;sbit LCD_D7 at RB7_bit;
sbit LCD_RS_Direction at TRISB2_bit;sbit LCD_EN_Direction at TRISB3_bit;sbit LCD_D4_Direction at TRISB4_bit;sbit LCD_D5_Direction at TRISB5_bit;sbit LCD_D6_Direction at TRISB6_bit;sbit LCD_D7_Direction at TRISB7_bit;
Lcd_Init();
#define CTRL 0x00
#define DEVICE_WRITE 0xE8 //Default ADJD-S371 I2C address - write
#define DEVICE_READ 0xE9 //Default ADJD-S371 I2C address - read
#define CAP_RED 0x06
#define CAP_GREEN 0x07
#define CAP_BLUE 0x08
#define CAP_CLEAR 0x09
#define INT_RED_LO 0x0A
#define INT_RED_HI 0x0B
#define INT_GREEN_LO 0x0C
#define INT_GREEN_HI 0x0D
#define INT_BLUE_LO 0x0E
#define INT_BLUE_HI 0x0F
#define INT_CLEAR_LO 0x10
#define INT_CLEAR_HI 0x11
#define DATA_RED_LO 0x40
#define DATA_RED_HI 0x41
#define DATA_GREEN_LO 0x42
#define DATA_GREEN_HI 0x43
#define DATA_BLUE_LO 0x44
#define DATA_BLUE_HI 0x45
#define DATA_CLEAR_LO 0x46
#define DATA_CLEAR_HI 0x47
unsigned short aa=0, rl8=0, gl8=0, bl8=0, cl8=0, rh4, gh4, bh4, ch4;
char redstr[9], greenstr[9], bluestr[9], clearstr[9], read[7];
unsigned long red, green, blue, clear;
void main(){
adcon0.adon=0;
adcon1=0b10000111;
trisa=0;
porta=0xff;
PORTB = 0;
TRISB = 0; // Configure PORTB as output
TRISD.f0=0;
TRISD=0;
PORTD=0xff;
TRISC.f7=0;
trisc.f6=0;
portc.f6=portc.f7=0;
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);Lcd_Cmd(_LCD_CURSOR_OFF);Lcd_Cmd(_LCD_RETURN_HOME);
I2C1_Init(100000); // initialize
//***********CAP_RED VALUES***********
I2C1_Start(); // start
I2C1_Wr(DEVICE_WRITE); // device address
I2C1_Wr(CAP_RED); // address
I2C1_Wr(0x05); // data
I2C1_Stop(); // stop
delay_us(100);
//***********CAP_GREEN VALUES***********
I2C1_Start(); // start
I2C1_Wr(DEVICE_WRITE); // device address
I2C1_Wr(CAP_GREEN ); // address
I2C1_Wr(0x05); // data
I2C1_Stop(); // stop
delay_us(100);
//***********CAP_BLUE VALUES***********
I2C1_Start(); // start
I2C1_Wr(DEVICE_WRITE); // device address
I2C1_Wr(CAP_BLUE); // address
I2C1_Wr(0x05); // data
I2C1_Stop(); // stop
delay_us(100);
//***********CAP_CLEAR VALUES***********
I2C1_Start(); // start
I2C1_Wr(DEVICE_WRITE); // device address
I2C1_Wr(CAP_CLEAR); // address
I2C1_Wr(0x05); // data
I2C1_Stop(); // stop
delay_us(100);
//***********INT_RED***********
I2C1_Start(); // start
I2C1_Wr(DEVICE_WRITE); // device address
I2C1_Wr(INT_RED_LO); // address
I2C1_Wr(0x00); // data
I2C1_Stop(); // stop
delay_us(100);
I2C1_Start(); // start
I2C1_Wr(DEVICE_WRITE); // device address
I2C1_Wr(INT_RED_HI); // address
I2C1_Wr(0x02); // data
I2C1_Stop(); // stop
Delay_100ms();
//***********INT_GREEN***********
I2C1_Start(); // start
I2C1_Wr(DEVICE_WRITE); // device address
I2C1_Wr(INT_GREEN_LO); // address
I2C1_Wr(0x00); // data
I2C1_Stop(); // stop
Delay_100ms();
I2C1_Start(); // start
I2C1_Wr(DEVICE_WRITE); // device address
I2C1_Wr(INT_GREEN_LO); // address
I2C1_Wr(0x04); // data
I2C1_Stop(); // stop
Delay_100ms();
//***********INT_BLUE***********
I2C1_Start(); // start
I2C1_Wr(DEVICE_WRITE); // device address
I2C1_Wr(INT_BLUE_LO); // address
I2C1_Wr(0x00); // data
I2C1_Stop(); // stop
Delay_100ms();
I2C1_Start(); // start
I2C1_Wr(DEVICE_WRITE); // device address
I2C1_Wr(INT_BLUE_HI); // address
I2C1_Wr(0x08); // data
I2C1_Stop(); // stop
Delay_100ms();
//***********INT_CLEAR***********
I2C1_Start(); // start
I2C1_Wr(DEVICE_WRITE); // device address
I2C1_Wr(INT_CLEAR_LO); // address
I2C1_Wr(0x00); // data
I2C1_Stop(); // stop
Delay_100ms();
I2C1_Start(); // start
I2C1_Wr(DEVICE_WRITE); // device address
I2C1_Wr(INT_CLEAR_HI); // address
I2C1_Wr(0x01); // data
I2C1_Stop(); // stop
Delay_100ms();
lcd_out(1,1,"Values Written...");
delay_ms(2000);
Lcd_Cmd(_LCD_CLEAR);
//READING VALUES FROM GSSR REGISTER
while(1) {
Lcd_Cmd(_LCD_CLEAR);
lcd_out(1,1,"start");
delay_ms(2000);
Delay_100ms();
// write ctrl reg with 0x01 to read sensor registers
I2C1_Start(); // start
I2C1_Wr(DEVICE_WRITE); // device address
I2C1_Wr(CTRL); // address
I2C1_Wr(0x01); // data
I2C1_Stop(); // stop
delay_ms(100);
I2C1_Start(); // start
I2C1_Wr(DEVICE_WRITE); // device address
I2C1_Wr(CTRL); // address
I2C1_Repeated_Start(); // RS
I2C1_Wr(DEVICE_READ); // data
aa=I2C1_Rd(0u); // data
I2C1_Stop(); // stop
lcd_out(2,1,"READ!!!");
delay_ms(1000);
inttostr(aa,read);
lcd_out(3,5,read);
delay_ms(2000);
Lcd_Cmd(_LCD_CLEAR);
//READ DATA
while(aa!=0) {
PORTC.f7=portc.f6=0;
portd.f1=1;
portd.f0=1;
porta=portb=portd=0x81;
lcd_out(1,1,"nothing");
delay_ms(2000);
break;
}
while(aa==0)
{
lcd_out(1,1,"entered aa==0");
delay_ms(2000);
PORTC.f7=portc.f6=1;
portd.f1=0;
portd.f0=0;
delay_ms(2000);
Lcd_Cmd(_LCD_CLEAR);
lcd_out(1,1,"1");
delay_ms(200);
//DATA RED
Delay_100ms();
I2C1_Start(); // start
I2C1_Wr(DEVICE_WRITE); // device address
I2C1_Wr(DATA_RED_LO); // address
I2C1_Repeated_Start(); // RS
I2C1_Wr(DEVICE_READ); // device read address
rl8=I2C1_Rd(0u); // data
I2C1_Stop();
Delay_100ms();
I2C1_Start(); // start
I2C1_Wr(DEVICE_WRITE); // device address
I2C1_Wr(DATA_RED_HI); // address
I2C1_Repeated_Start(); // RS
I2C1_Wr(DEVICE_READ); // device read address
rh4=I2C1_Rd(0u); // data
I2C1_Stop();
red=rh4*256+rl8;
lcd_out(1,2,"2");
delay_ms(200);
//DATA GREEN
Delay_100ms();
I2C1_Start(); // start
I2C1_Wr(DEVICE_WRITE); // device address
I2C1_Wr(DATA_GREEN_LO); // address
I2C1_Repeated_Start(); // RS
I2C1_Wr(DEVICE_READ); // device read address
gl8=I2C1_Rd(0u); // data
I2C1_Stop();
Delay_100ms();
I2C1_Start(); // start
I2C1_Wr(DEVICE_WRITE); // device address
I2C1_Wr(DATA_GREEN_HI); // address
I2C1_Repeated_Start(); // RS
I2C1_Wr(DEVICE_READ); // device read address
gh4=I2C1_Rd(0u); // data
I2C1_Stop();
green=gl8+gh4*256;
lcd_out(1,3,"3");
delay_ms(200);
//DATA BLUE
Delay_100ms();
I2C1_Start(); // start
I2C1_Wr(DEVICE_WRITE); // device address
I2C1_Wr(DATA_BLUE_LO); // address
I2C1_Repeated_Start(); // RS
I2C1_Wr(DEVICE_READ); // device read address
bl8=I2C1_Rd(0u); // data
I2C1_Stop();
Delay_100ms();
I2C1_Start(); // start
I2C1_Wr(DEVICE_WRITE); // device address
I2C1_Wr(DATA_BLUE_HI); // address
I2C1_Repeated_Start(); // RS
I2C1_Wr(DEVICE_READ); // device read address
bh4=I2C1_Rd(0u); // data
I2C1_Stop();
blue=bl8+bh4*256;
lcd_out(1,4,"4");
delay_ms(200);
//DATA CLEAR
Delay_100ms();
I2C1_Start(); // start
I2C1_Wr(DEVICE_WRITE); // device address
I2C1_Wr(DATA_CLEAR_LO); // address
I2C1_Repeated_Start(); // RS
I2C1_Wr(DEVICE_READ); // device read address
cl8=I2C1_Rd(0u); // data
I2C1_Stop();
Delay_100ms();
I2C1_Start(); // start
I2C1_Wr(DEVICE_WRITE); // device address
I2C1_Wr(DATA_CLEAR_HI); // address
I2C1_Repeated_Start(); // RS
I2C1_Wr(DEVICE_READ); // device read address
ch4=I2C1_Rd(0u); // data
I2C1_Stop();
clear=ch4*256+cl8;
lcd_out(1,5,"5");
delay_ms(200);
LongIntToHex(red,redstr);
LongIntToHex(green,greenstr);
LongIntToHex(blue,bluestr);
LongIntToHex(clear,clearstr);
lcd_out(1,6,"6");
delay_ms(500);
Lcd_Cmd(_LCD_CLEAR); Lcd_Cmd(_LCD_RETURN_HOME);
lcd_out(1,1,redstr);
lcd_out(2,1,greenstr);
lcd_out(3,1,bluestr);
lcd_out(4,1,clearstr);
delay_ms(7000);
break;
}
}
}