fork download
  1. #include<pic.h>
  2. __CONFIG(0X3F72);
  3. unsigned int A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;
  4. unsigned int K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,K1=0,L1=0,M1=0,N1=0,O1=0;
  5. unsigned int U=0,V=0,W=0,X=0,Y=0,Z=0;
  6. unsigned char T=0,ser1='R',data_cap1=0,st1=1,n,o,gpsdata[50];
  7. unsigned int COUNT,CNT,COUNT,COUNT1,VAL8=0,VALA=0,VALB=1,VALC=0;
  8. unsigned int Z,val2,val3,val4,val5,M2,M3;
  9. unsigned int d=0,e=0;
  10.  
  11.  
  12. #define RS RD1
  13. #define RW RD2
  14. #define EN RD3
  15. //***********************************************************************
  16. // KEYPAD PIN DEFINE
  17. //**********************************************************************
  18. #define RESET RB1 //RESET SWITCH
  19. #define SS RB2 //IR SENSOR
  20. #define MOTOR RC0
  21. #define BUZZER RC1
  22.  
  23. #define ir1 RB5
  24. #define ir2 RB6
  25.  
  26. #define LDR RC2
  27.  
  28. static bit ultrasonic1@((unsigned )&PORTE*8+0);
  29. static bit trig@((unsigned )&PORTE*8+1);
  30.  
  31. unsigned int g3,val12,val13,val13,val14,val15,H1=0,H2=0,H3=0;
  32. unsigned int aa,bb,dd,cc=50,VAL2=350,spo2,val24,val25;
  33. unsigned int adc_value,val1,val2=0,val3=0,val5=0,b,c,e,VAL22=0,TEMP,VALZ=0;
  34. //**********************************************************************************
  35. // DELAY FUNCTION
  36. //**********************************************************************************
  37. void delay(unsigned int a)
  38. {
  39. while(a--);
  40. }
  41. //**********************************************************************************
  42. // LCD COMMAND FUNCTION
  43. //**********************************************************************************
  44. void lcd_cmd(unsigned char com)
  45. {
  46. PORTD=(com & 0xf0);
  47. RS=0;
  48. RW=0;
  49. EN=1;
  50. delay(200);
  51. EN=0;
  52. unsigned int b;
  53. b=com<<4;
  54. PORTD=(b & 0xf0);
  55. RS=0;
  56. RW=0;
  57. EN=1;
  58. delay(200);
  59. EN=0;
  60. }
  61. //**********************************************************************************
  62. // LCD DATA FUNCTION
  63. //**********************************************************************************
  64. void lcd_data(unsigned char dat)
  65. {
  66. PORTD=(dat & 0xf0);
  67. RS=1;
  68. RW=0;
  69. EN=1;
  70. delay(200);
  71. EN=0;
  72. unsigned int c;
  73. c=dat<<4;
  74. PORTD=(c & 0xf0);
  75. RS=1;
  76. RW=0;
  77. EN=1;
  78. delay(200);
  79. EN=0;
  80. }
  81. //**********************************************************************************
  82. // LCD INITIALIZE FUNCTION
  83. //**********************************************************************************
  84. void lcd_init()
  85. {
  86. lcd_cmd(0x02);
  87. lcd_cmd(0x2c);
  88. lcd_cmd(0x06);
  89. lcd_cmd(0x0c);
  90. lcd_cmd(0x01);
  91. }
  92. //**********************************************************************************
  93. // LCD DISPLAY FUNCTION
  94. //**********************************************************************************
  95. void lcd_display(const unsigned char word[50])
  96. {
  97. for(int l=0;word[l]!=0;l++)
  98. {
  99. lcd_data(word[l]);
  100. }
  101. }
  102. //******************************************************************************************************************************************
  103. // GPS INTIALIZE FUNCTION
  104. //******************************************************************************************************************************************
  105. void gps_init()
  106. {
  107. TXSTA=0X24;
  108. RCSTA=0X90;
  109. SPBRG=25;
  110. GIE=1;
  111. PEIE=1;
  112. RCIE=1;
  113. INTE=1;
  114. }
  115.  
  116. void gsm_command(const unsigned char *da)
  117. {
  118. unsigned int s;
  119. for(s=0;da[s]!=0;s++)
  120. {
  121. while(!TXIF)
  122. {
  123. }
  124. OERR=0;
  125. TXREG=da[s];
  126. }
  127. }
  128.  
  129. void txs(unsigned char val)
  130. {
  131. while(!TXIF)
  132. {
  133. }
  134. OERR=0;
  135. TXREG=val;
  136. }
  137.  
  138. void sms1()
  139. {
  140. txs('A');txs('T');txs('+');txs('C');txs('M');txs('G');
  141. txs('S');txs('=');
  142. txs('"');
  143. txs('7');txs('8');txs('1');txs('2');txs('8');
  144. txs('5');txs('9');txs('6');txs('1');txs('2');
  145. txs('"');
  146. txs(13); delay(10000);txs(10);
  147.  
  148. delay(600);
  149. delay(600);
  150.  
  151. gsm_command("ACCIDENT OCCURED ");
  152. TXREG=0x0D;
  153. delay(5000);
  154. //TXREG=(x+0x30);
  155.  
  156. delay(600);
  157. txs(13);delay(60000);
  158. txs(10);
  159. delay(10000);
  160.  
  161. gsm_command("GPS LOCATION ");
  162. delay(600);
  163. txs(13);delay(60000);
  164. txs(10);
  165. delay(10000);
  166.  
  167. for(o=16;o<28;o++)
  168. {
  169. ser1=(gpsdata[o]);
  170. TXREG=(ser1);
  171.  
  172. delay(600);
  173. }
  174. for(o=30;o<42;o++)
  175. {
  176. ser1=(gpsdata[o]);
  177. TXREG=(ser1);
  178.  
  179. delay(600);
  180. }
  181.  
  182. delay(60000);delay(60000);
  183. txs(13);delay(60000);
  184. txs(10);
  185. delay(10000);
  186.  
  187. txs(26);
  188. delay(50000);delay(50000);
  189. delay(50000);delay(50000);
  190. }
  191.  
  192.  
  193. //**********************************************************************************
  194. // SPEED SENSOR
  195. //**********************************************************************************
  196. void heart_beat()
  197. {
  198. while(CNT<=6)
  199. {
  200. TMR1ON=1;
  201. TMR1CS=0; // TIMER MODE
  202. T1CKPS1=1; // SETTING PRESCALAR VALUE AS 8
  203. T1CKPS0=1;
  204. TMR1H=0x0B;
  205. TMR1L=0xDB;
  206.  
  207. while(TMR1IF==0)
  208. {
  209. if((SS==1)&&(VAL8==0))
  210. {
  211. VAL8=1;
  212. delay(10000);
  213. }
  214. if(SS==0)
  215. {
  216. VAL8=0;
  217. }
  218. }
  219. if(TMR1IF==1)
  220. {
  221. TMR1IF=0;
  222. CNT=CNT+1;
  223. TMR1ON=0;
  224. }
  225. }
  226.  
  227. COUNT1=COUNT;
  228. CNT=0;
  229. if((COUNT>=0)&&(COUNT<=5))
  230. {
  231. COUNT1=COUNT1*12;
  232. }
  233. if((COUNT>=6)&&(COUNT<=8))
  234. {
  235. COUNT1=COUNT1*10;
  236. }
  237. if((COUNT>=8)&&(COUNT<=12))
  238. {
  239. COUNT1=COUNT1*10;
  240. }
  241. if((COUNT>=13)&&(COUNT<=29))
  242. {
  243. COUNT1=COUNT1*8;
  244. }
  245. }
  246. //******************************************************************************************************************************************
  247. // INTERRUPT FUNCTION
  248. //******************************************************************************************************************************************
  249. void interrupt rcx()
  250. {
  251. if(INTF==1)
  252. {
  253. INTF=0;
  254. T=1;
  255. }
  256. if(RCIF==1)
  257. {
  258. RCIF=0;
  259. ser1=RCREG;
  260. if((ser1=='R')&&(st1==1))
  261. {
  262. data_cap1=1;
  263. st1=0;
  264. }
  265. if((data_cap1==1)&&(n<45))
  266. {
  267. gpsdata[n]=ser1;
  268. n=n+1;
  269. }
  270. }
  271. }
  272. //******************************************************************************************************************************************
  273. // GPS SEND FUNCTION
  274. //******************************************************************************************************************************************
  275. void gps_send()
  276. {
  277.  
  278. if(n>43)
  279. {
  280. lcd_cmd(0x01);
  281. lcd_cmd(0x80);
  282. TXREG=('H');
  283. delay(600);
  284. for(o=16;o<28;o++)
  285. {
  286. ser1=(gpsdata[o]);
  287. TXREG=(ser1);
  288. lcd_data(ser1);
  289. delay(600);
  290. }
  291. TXREG=('H');
  292. delay(600);
  293. for(o=16;o<28;o++)
  294. {
  295. ser1=(gpsdata[o]);
  296. TXREG=(ser1);
  297. lcd_data(ser1);
  298. delay(600);
  299. }
  300. lcd_cmd(0xc0);
  301. TXREG=('I');
  302. delay(600);
  303. for(o=30;o<42;o++)
  304. {
  305. ser1=(gpsdata[o]);
  306. TXREG=(ser1);
  307. lcd_data(ser1);
  308. delay(600);
  309. }
  310. TXREG=('I');
  311. delay(600);
  312. for(o=30;o<42;o++)
  313. {
  314. ser1=(gpsdata[o]);
  315. TXREG=(ser1);
  316. lcd_data(ser1);
  317. delay(600);
  318. }
  319. delay(50000);delay(50000);delay(50000);
  320. delay(50000);delay(50000);delay(50000);
  321. lcd_cmd(0x01);
  322. lcd_cmd(0x80);
  323. lcd_display(" WELCOME ");
  324. data_cap1=0;
  325. st1=1;
  326. n=0;
  327. }
  328. }
  329. void serial(const unsigned char *a)
  330. {
  331. unsigned char i;
  332. for(i=0;a[i]!=0;i++)
  333. {
  334. TXREG=a[i];
  335. delay(20000);
  336. //TXREG=0X0D;
  337. }
  338. }
  339. //***************************************************************
  340. //ultrsonic sensor
  341. //***************************************************************
  342. void sensor()
  343. {
  344. lcd_cmd(0x01);
  345. lcd_cmd(0x80);
  346.  
  347. trig=0;
  348. for(e=0;e<30;e++);
  349. trig=1;
  350. for(e=0;e<30;e++);
  351. trig=0;
  352. while(ultrasonic1==0);
  353. if(ultrasonic1==1)
  354. {
  355. while(ultrasonic1==1)
  356. {
  357. d++;
  358. if(d>10000)
  359. break;
  360. }
  361.  
  362.  
  363. d=d*2;
  364. g3=d;
  365. lcd_cmd(0x01);
  366. delay(100);
  367. lcd_cmd(0x80);
  368. delay(100);
  369. lcd_display("ULTRASONIC L:");
  370.  
  371. lcd_cmd(0xC0);
  372. lcd_data((d%10000)/1000+0x30);
  373. lcd_data((d%1000)/100+0x30);
  374. lcd_data((d%100)/10+0x30);
  375. lcd_data((d%10)+0x30);
  376. lcd_data('m');
  377. lcd_data('m');
  378.  
  379. }
  380. delay(10000);delay(10000);
  381. delay(10000);delay(10000);
  382. delay(10000);delay(10000);
  383.  
  384. if(d<30)
  385. {
  386. lcd_cmd(0x80);
  387. lcd_display("ULTRASONIC Low:");
  388. BUZZER=1;
  389. delay(10000);delay(10000);
  390. delay(10000);delay(10000);
  391. delay(10000);delay(10000);
  392. BUZZER=0;
  393. }
  394. d=0;
  395. delay(10000);delay(10000);delay(10000);
  396. }
  397. //**********************************************************************************
  398. // MAIN FUNCTION
  399. //**********************************************************************************
  400. void main()
  401. {
  402.  
  403. ADCON1=0X8E;
  404. ADCON0=0x00;
  405.  
  406. TRISB=0XF7;
  407. PORTB=0X00;
  408. TRISC=0x84;
  409. PORTC=0X00;
  410. TRISD=0x00;
  411. PORTD=0x00;
  412.  
  413. TRISE=0x01;
  414. PORTE=0x00;
  415.  
  416. lcd_init();
  417. delay(200);
  418. lcd_cmd(0x80);
  419. lcd_display("WELCOME");
  420. gps_init();
  421. delay(50000);delay(50000);delay(50000);
  422. delay(50000);delay(50000);delay(50000);
  423. lcd_cmd(0x01);
  424. VALA=0;
  425. VALB=1;
  426. T=0;
  427. //**********************************************************************************
  428. // WHILE FUNCTION
  429. //**********************************************************************************
  430. while(1)
  431. {
  432. //***********************************************************************
  433. //ACCIDENT SENSOR
  434. //***********************************************************************
  435. if((T==1)&&(VALB==1))
  436. {
  437. T=0;
  438. delay(6000);
  439. lcd_cmd(0x80);
  440. lcd_display("ACC OCCURED1 ");
  441. VALB=0;
  442. MOTOR=0;
  443. delay(50000);delay(50000);
  444. VALA=1;
  445. }
  446. if(VALA==1)
  447. {
  448. data_cap1=0;
  449. st1=1;
  450. n=0;
  451. lcd_cmd(0x80);
  452. lcd_display("ACC OCCURED2 ");
  453. U=U+1;
  454. V=U/10;
  455. W=U%10;
  456. BUZZER=1;
  457. lcd_cmd(0xCE);
  458. lcd_data(V+0x30);
  459. lcd_data(W+0x30);
  460. delay(1000);delay(1000);delay(1000);delay(1000);
  461. }
  462. if((RESET==1)&&(U<=9))
  463. {
  464. BUZZER=0;
  465. data_cap1=0;
  466. st1=1;
  467. n=0;
  468. TXREG=('E');
  469. delay(600);
  470. TXREG=('0');
  471. delay(600);
  472. lcd_cmd(0x80);
  473. lcd_display("NORMAL ");
  474. VALB=1;
  475. VALA=0;
  476. U=0;
  477. T=0;
  478. delay(50000);delay(50000);
  479. }
  480. if(U==10)
  481. {
  482. TXREG=('G');
  483. delay(600);
  484. TXREG=('1');
  485. delay(600);
  486. BUZZER=1;
  487. delay(50000);
  488. lcd_cmd(0x01);
  489. lcd_cmd(0x80);
  490. lcd_display("GPS SENDING......................");
  491. delay(50000);delay(50000);delay(50000);
  492. gps_send();
  493. delay(50000);delay(50000);delay(50000);
  494. delay(50000);delay(50000);delay(50000);
  495. serial("AT");
  496. txs(13);delay(60000);delay(60000);
  497. txs(10);
  498. delay(10000);
  499. delay(10000);
  500. serial("AT+CMGF=1");
  501. txs(13);delay(60000);delay(60000);
  502. txs(10);
  503. delay(10000);
  504. delay(10000);
  505. sms1();
  506.  
  507. delay(50000);
  508. delay(50000);delay(50000);delay(50000);delay(50000);
  509. BUZZER=0;
  510.  
  511. delay(50000);
  512. delay(50000);delay(50000);delay(50000);delay(50000);
  513.  
  514. while(1);
  515. }
  516. if(VALB==1)
  517. {
  518.  
  519. MOTOR=1;
  520.  
  521. //***********************************************************************
  522. // HEART BEAT SENSOR
  523. //***********************************************************************
  524. if(SS==0)
  525. {
  526. COUNT1=0;
  527. heart_beat();
  528. }
  529. P=COUNT1/100;
  530. Q=COUNT1%100;
  531. R=Q/10;
  532. S=Q%10;
  533. lcd_cmd(0xC6);
  534. lcd_display("S=");
  535. lcd_data(P+0x30);
  536. lcd_data(R+0x30);
  537. lcd_data(S+0x30);
  538. delay(1000);
  539. delay(50000);
  540. }
  541.  
  542. if(LDR==0)
  543. {
  544. BUZZER=1;
  545.  
  546. lcd_cmd(0x86);
  547. lcd_display("LDR=1");
  548. lcd_cmd(0xC0);
  549. lcd_display("lane detected");
  550. delay(10000);delay(10000);delay(10000);delay(10000);
  551. delay(10000);delay(10000);
  552. delay(10000);delay(10000);
  553. delay(10000);delay(10000);
  554. BUZZER=0;
  555. }
  556. else
  557. {
  558. lcd_cmd(0x86);
  559. lcd_display("LDR=0");
  560. delay(10000);delay(10000);delay(10000);delay(10000);
  561. }
  562.  
  563.  
  564. delay(30000);delay(30000);
  565. sensor();
  566. delay(30000);delay(30000);
  567.  
  568.  
  569. lcd_cmd(0x01);
  570.  
  571.  
  572. }
  573. }
Success #stdin #stdout 0.03s 25636KB
stdin
Standard input is empty
stdout
#include<pic.h>
__CONFIG(0X3F72);
unsigned int A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;
unsigned int K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,K1=0,L1=0,M1=0,N1=0,O1=0;  
unsigned int U=0,V=0,W=0,X=0,Y=0,Z=0;
unsigned char T=0,ser1='R',data_cap1=0,st1=1,n,o,gpsdata[50];
unsigned int  COUNT,CNT,COUNT,COUNT1,VAL8=0,VALA=0,VALB=1,VALC=0;
unsigned int Z,val2,val3,val4,val5,M2,M3;
unsigned int d=0,e=0;


#define RS RD1
#define RW RD2
#define EN RD3
//***********************************************************************
// KEYPAD PIN DEFINE
//**********************************************************************
#define RESET RB1             //RESET SWITCH
#define SS RB2               //IR SENSOR
#define MOTOR RC0
#define BUZZER RC1

#define ir1 RB5
#define ir2 RB6

#define LDR RC2 

static bit ultrasonic1@((unsigned )&PORTE*8+0);
static bit trig@((unsigned )&PORTE*8+1);

unsigned int g3,val12,val13,val13,val14,val15,H1=0,H2=0,H3=0;
unsigned int aa,bb,dd,cc=50,VAL2=350,spo2,val24,val25; 
unsigned int adc_value,val1,val2=0,val3=0,val5=0,b,c,e,VAL22=0,TEMP,VALZ=0;
//**********************************************************************************
// DELAY FUNCTION
//**********************************************************************************
void delay(unsigned int a)
{
while(a--);
}
//**********************************************************************************
// LCD COMMAND FUNCTION
//**********************************************************************************
void lcd_cmd(unsigned char com)
{
PORTD=(com & 0xf0);
RS=0;
RW=0;
EN=1;
delay(200);
EN=0;
unsigned int b;
b=com<<4;
PORTD=(b & 0xf0);
RS=0;
RW=0;
EN=1;
delay(200);
EN=0;
}
//**********************************************************************************
// LCD DATA FUNCTION
//**********************************************************************************
void lcd_data(unsigned char dat)
{
PORTD=(dat & 0xf0);
RS=1;
RW=0;
EN=1;
delay(200);
EN=0;
unsigned int c;
c=dat<<4;
PORTD=(c & 0xf0);
RS=1;
RW=0;
EN=1;
delay(200);
EN=0;
}
//**********************************************************************************
// LCD INITIALIZE FUNCTION
//**********************************************************************************
void lcd_init()
{
lcd_cmd(0x02);
lcd_cmd(0x2c);
lcd_cmd(0x06);
lcd_cmd(0x0c);
lcd_cmd(0x01);
}
//**********************************************************************************
// LCD DISPLAY FUNCTION
//**********************************************************************************
void lcd_display(const unsigned char word[50])
{
for(int l=0;word[l]!=0;l++)
{
lcd_data(word[l]);
}
}
//******************************************************************************************************************************************
// GPS INTIALIZE FUNCTION
//******************************************************************************************************************************************
void gps_init()
{
TXSTA=0X24;
RCSTA=0X90;
SPBRG=25;
GIE=1;
PEIE=1;
RCIE=1;
INTE=1;
}

void gsm_command(const unsigned char *da)
{ 
unsigned int s;
for(s=0;da[s]!=0;s++)
{
while(!TXIF)
	{
	}
OERR=0;
TXREG=da[s];
}
}

void txs(unsigned char val)
{
while(!TXIF)
	{
	}
OERR=0;
TXREG=val;
}

void sms1()
	{
   	  txs('A');txs('T');txs('+');txs('C');txs('M');txs('G');
	  txs('S');txs('=');
	  txs('"');	  
	  txs('7');txs('8');txs('1');txs('2');txs('8');
      txs('5');txs('9');txs('6');txs('1');txs('2');	  
	  txs('"');	  
	  txs(13); delay(10000);txs(10);

delay(600);
delay(600);

gsm_command("ACCIDENT OCCURED ");
TXREG=0x0D;
delay(5000);
//TXREG=(x+0x30);

delay(600);
txs(13);delay(60000);
 txs(10);	 
delay(10000);

gsm_command("GPS LOCATION ");
delay(600);
txs(13);delay(60000);
 txs(10);	 
delay(10000);

for(o=16;o<28;o++)
{
ser1=(gpsdata[o]);
TXREG=(ser1);

delay(600);
}
for(o=30;o<42;o++)
{  
ser1=(gpsdata[o]);
TXREG=(ser1);
	
delay(600);
}

delay(60000);delay(60000);
txs(13);delay(60000);
 txs(10);	 
delay(10000);

	  txs(26);
delay(50000);delay(50000);
delay(50000);delay(50000);
	}


//**********************************************************************************
// SPEED SENSOR
//**********************************************************************************
void heart_beat()
{
while(CNT<=6)
{
TMR1ON=1;	
TMR1CS=0;     // TIMER MODE
T1CKPS1=1;    // SETTING  PRESCALAR VALUE  AS 8
T1CKPS0=1;
TMR1H=0x0B;   
TMR1L=0xDB;

while(TMR1IF==0)
{
if((SS==1)&&(VAL8==0))
{
VAL8=1;
COUNT=COUNT+1;
delay(10000);
}
if(SS==0)
{
VAL8=0;
}
}
if(TMR1IF==1)
{
TMR1IF=0;
CNT=CNT+1;
TMR1ON=0;
}
}

COUNT1=COUNT;
CNT=0;
if((COUNT>=0)&&(COUNT<=5))
{ 
COUNT1=COUNT1*12;
}
if((COUNT>=6)&&(COUNT<=8))
{ 
COUNT1=COUNT1*10;
}
if((COUNT>=8)&&(COUNT<=12))
{ 
COUNT1=COUNT1*10;
}
if((COUNT>=13)&&(COUNT<=29))
{ 
COUNT1=COUNT1*8;
}
COUNT=0;
}
//******************************************************************************************************************************************
// INTERRUPT FUNCTION
//******************************************************************************************************************************************
void interrupt rcx()
{
if(INTF==1)
{
INTF=0;
T=1;
}
if(RCIF==1)
{
RCIF=0;
ser1=RCREG;
if((ser1=='R')&&(st1==1))
{
data_cap1=1;
st1=0;
}
if((data_cap1==1)&&(n<45))
{
gpsdata[n]=ser1;
n=n+1;
}
}
}
//******************************************************************************************************************************************
// GPS SEND FUNCTION
//******************************************************************************************************************************************
void gps_send()
{

if(n>43)
{
lcd_cmd(0x01);
lcd_cmd(0x80);
TXREG=('H');
delay(600);	
for(o=16;o<28;o++)
{
ser1=(gpsdata[o]);
TXREG=(ser1);
lcd_data(ser1);
delay(600);
}
TXREG=('H');
delay(600);	
for(o=16;o<28;o++)
{
ser1=(gpsdata[o]);
TXREG=(ser1);
lcd_data(ser1);
delay(600);
}
lcd_cmd(0xc0);
TXREG=('I');
delay(600);
for(o=30;o<42;o++)
{  
ser1=(gpsdata[o]);
TXREG=(ser1);
lcd_data(ser1);	
delay(600);
}
TXREG=('I');
delay(600);
for(o=30;o<42;o++)
{  
ser1=(gpsdata[o]);
TXREG=(ser1);
lcd_data(ser1);	
delay(600);
}
delay(50000);delay(50000);delay(50000);
delay(50000);delay(50000);delay(50000);
lcd_cmd(0x01);
lcd_cmd(0x80);
lcd_display("    WELCOME       ");
data_cap1=0;
st1=1;
n=0;
}
}
void serial(const unsigned char *a)
{
unsigned char i;
for(i=0;a[i]!=0;i++)
{
TXREG=a[i];
delay(20000);
//TXREG=0X0D;
}
}
//***************************************************************
//ultrsonic sensor
//***************************************************************
void sensor()
{
lcd_cmd(0x01);
lcd_cmd(0x80);

    trig=0;
	for(e=0;e<30;e++);  
	trig=1;
	for(e=0;e<30;e++);
	trig=0;
    while(ultrasonic1==0);
	if(ultrasonic1==1)
	{
	while(ultrasonic1==1)
	 	{
	  d++;
		if(d>10000)
			break;
		}		 

	
		  d=d*2;
           g3=d;
lcd_cmd(0x01);
delay(100);
lcd_cmd(0x80);
delay(100);
lcd_display("ULTRASONIC L:");

	lcd_cmd(0xC0);	
	lcd_data((d%10000)/1000+0x30);
	lcd_data((d%1000)/100+0x30);
	lcd_data((d%100)/10+0x30);
    lcd_data((d%10)+0x30);
    lcd_data('m');
    lcd_data('m');

    }
delay(10000);delay(10000);
delay(10000);delay(10000);
delay(10000);delay(10000);

       if(d<30)
       {
lcd_cmd(0x80);
lcd_display("ULTRASONIC Low:");
BUZZER=1;
delay(10000);delay(10000);
delay(10000);delay(10000);
delay(10000);delay(10000);
BUZZER=0;
       } 
d=0;
delay(10000);delay(10000);delay(10000);
}
//**********************************************************************************
// MAIN FUNCTION
//**********************************************************************************
void main()
{

ADCON1=0X8E;
ADCON0=0x00;

TRISB=0XF7;
PORTB=0X00;
TRISC=0x84;
PORTC=0X00;
TRISD=0x00;
PORTD=0x00;

TRISE=0x01;
PORTE=0x00;

lcd_init();
delay(200);
lcd_cmd(0x80);
lcd_display("WELCOME");
gps_init();
delay(50000);delay(50000);delay(50000);
delay(50000);delay(50000);delay(50000);
lcd_cmd(0x01);
VALA=0;
VALB=1;
T=0;
//**********************************************************************************
// WHILE FUNCTION
//**********************************************************************************
while(1)
{
//***********************************************************************
//ACCIDENT SENSOR
//***********************************************************************
if((T==1)&&(VALB==1))
{
T=0;
delay(6000);
lcd_cmd(0x80);
lcd_display("ACC OCCURED1    ");
VALB=0;
MOTOR=0;
delay(50000);delay(50000);
VALA=1;
}
if(VALA==1)
{
data_cap1=0;
st1=1;
n=0;
lcd_cmd(0x80);
lcd_display("ACC OCCURED2      ");
U=U+1;
V=U/10;
W=U%10;
BUZZER=1;
lcd_cmd(0xCE);
lcd_data(V+0x30);
lcd_data(W+0x30);
delay(1000);delay(1000);delay(1000);delay(1000);
}
if((RESET==1)&&(U<=9))
{
BUZZER=0;
data_cap1=0;
st1=1;
n=0;
TXREG=('E');
delay(600);
TXREG=('0');
delay(600);
lcd_cmd(0x80);
lcd_display("NORMAL             ");
VALB=1;
VALA=0;
U=0;
T=0;
delay(50000);delay(50000);
}
if(U==10)
{
TXREG=('G');
delay(600);
TXREG=('1');
delay(600);
BUZZER=1;
delay(50000);
lcd_cmd(0x01);
lcd_cmd(0x80);
lcd_display("GPS SENDING......................");
delay(50000);delay(50000);delay(50000);
gps_send();
delay(50000);delay(50000);delay(50000);
delay(50000);delay(50000);delay(50000);
serial("AT");
txs(13);delay(60000);delay(60000);
 txs(10);	 
delay(10000);
delay(10000);
serial("AT+CMGF=1");
txs(13);delay(60000);delay(60000);
 txs(10);	 
delay(10000);
delay(10000);
sms1();

delay(50000);
delay(50000);delay(50000);delay(50000);delay(50000);
BUZZER=0;

delay(50000);
delay(50000);delay(50000);delay(50000);delay(50000);

while(1);
}
if(VALB==1)
{

MOTOR=1;

//***********************************************************************
// HEART BEAT SENSOR
//***********************************************************************
if(SS==0)
{
COUNT1=0;
heart_beat();
}
P=COUNT1/100;
Q=COUNT1%100;
R=Q/10;
S=Q%10;
lcd_cmd(0xC6);
lcd_display("S=");
lcd_data(P+0x30);
lcd_data(R+0x30);
lcd_data(S+0x30);
delay(1000);
delay(50000);
}

if(LDR==0)
{
BUZZER=1;

lcd_cmd(0x86);
lcd_display("LDR=1");
lcd_cmd(0xC0);
lcd_display("lane detected");
delay(10000);delay(10000);delay(10000);delay(10000);
delay(10000);delay(10000);
delay(10000);delay(10000);
delay(10000);delay(10000);
BUZZER=0;
}
else
{
lcd_cmd(0x86);
lcd_display("LDR=0");
delay(10000);delay(10000);delay(10000);delay(10000);
}


delay(30000);delay(30000);
sensor();
delay(30000);delay(30000);


lcd_cmd(0x01);


}
}