Saturday 20 June 2015

I2C--ARM

#include <LPC21xx.H>
#include"lcdsub.c"

unsigned char i2cread(unsigned char x);
void getdate();
void i2cint();
void i2cstart();
void i2cstop();
void i2cwrite(char);
unsigned char c2(int);
unsigned char c1(int);//
unsigned char i2cread(unsigned char x)
{
unsigned char data;
i2cstart();
 delay(10);
i2cwrite(0xd0);

 delay(10);
i2cwrite(x);
 delay(10);
i2cstart();
 delay(10);


i2cwrite(0xd1);
   delay(10);


   delay(10);

   I2CONSET |=0X04;

   while(!(I2STAT & 0x58));
   delay(10);
 data=I2DAT;
 //lcddata(data);
  //i2cstop();
//datq=data;
lcddata(data+0x30);
  return data;



}
void i2cint()
{

PINSEL0 |=0X50;  //SELECTING sda & scL MODES
I2CONSET=0X40;
I2CONCLR=0X08;      //INITIALIZING I2C MASTXMODE
 //I2CONCLR = 0xff;
I2SCLH=0X4B;
I2SCLL=0X4B;

I2CONCLR=0X08;  
}
void i2cstart()
{

I2CONSET |=0X20;
I2CONSET |=0X08;//  STA=1
while(!(I2STAT & 0X08));   //CHECKING START COPMLETED OR NOT
I2CONCLR=0X28;
//lcdstr("     in  sta4rt      "); //RESETTING
}
void i2cstop()
{

I2CONSET=0X14;//  & ST0=1
 I2CONCLR=0X08;
while(!(I2STAT & 0XA0));   //CHECKING Stop COPMLETED OR NOT
 //lcdstr("in stop");
//I2CONCLR=0X18; //RESETTING

}
void i2cwrite(char data1)
{
//i2cstart();

  I2DAT=data1;
  while(!(I2STAT & 0x18)) ;
   I2CONCLR=0X18;
  // i2cstop();
  // lcdstr("write");
}
/*unsigned char i2cread()
{
char rx;
//I2DAT=0xff;
while(!(I2STAT & 0x50));
rx=I2DAT;

//lcddata(rx);
return rx;
}  */
void gettime()
{
i2cstart();
lcdcmd(0xc0);
 lcddata(c1(i2cread(0x00)));


lcddata(c2(i2cread(0x00)));
lcdstr(":");
lcddata(c1(i2cread(0x01)));

lcddata(c1(i2cread(0x01)));
lcdstr(":");
lcddata(c1(i2cread(0x02)));

lcddata(c2(i2cread(0x02)));
}
unsigned char c1(int val)
{
 return ( ((val&0xF0)>>4)+0x30);
}

unsigned char c2(int val2)
{

return ((val2&0x0F)+0x30);

}
 


int main()
{
 //unsigned char data,datq;  
//IO0DIR |= (1<<3) | (1<<4);
IO0DIR |= 0xFF<<16;
IO0DIR |= (rs);
IO0DIR |= (rw);
IO0DIR |= (en);
lcdint();
i2cint();
lcdstr("initializing");
delay(10);
lcdcmd(0x01);
while(1)
{
i2cstart();

   gettime();

 //i2cstop();


 /* i2cstart();
  i2cwrite(0x41);
  datrx=i2cread();
  lcddata(datrx);
  i2cstop();
  delay(105);  */



}
}




//#include <LPC214X.H>
//#define data 0xFF<<16    //assinging values for po.16-p0.23
#define rs (1<<13)
#define rw (1<<14) 
#define en (1<<15)
void delay(int);
void lcdint();
void lcdcmd(int);
void lcddata(char);
void lcdstr(unsigned char*);
void lcdstr(unsigned char *chr)
{
while(*chr)
{
lcddata(*chr++);
}
}
void lcddata(char xdata)
{
IO0PIN = (xdata<<16);
//IO0SET|=(xdata<<16);
IO0SET =(1<<13);
IO0CLR =(1<<14);

IO0SET = (1<<15);
delay(5);
IO0CLR = (1<<15);
}
void lcdcmd(int cmd)
{
IO0CLR =(1<<13);
IO0CLR =(1<<14);
//IO0SET|=(cmd<<16);
IO0PIN = (cmd<<16);
IO0SET = (1<<15);
delay(5);
IO0CLR = (1<<15);
}
void lcdint()
{
PINSEL0=0x00000000;
PINSEL1=0x00000000;
lcdcmd(0x0E);
  delay(5);
lcdcmd(0x38);
delay(5);
lcdcmd(0x06);
delay(5);
lcdcmd(0x80);
 delay(5);
 //lcdstr("okay");
}
void delay(int t)
{
unsigned int i,j;
for(i=0;i<t;i++)
{
for(j=0;j<21275;j++);
}
}
/*IO0DIR |= 0xFF;
IO0DIR |= (rs);
IO0DIR |= (rw);
IO0DIR |= (en);
*/






Tuesday 16 June 2015

ARM--SPI slave

#include <LPC214X.H>  //slave
#include"lcdsub.c"
void spiint()
{
PINSEL0=0x00005500;
S0SPCR=0x000;
//S0SPCCR=16;
}
unsigned char spiread()
{
   char rx;
    while(!(S0SPSR & 0xF8));
   rx=S0SPDR;

   return rx;
}
int main()
{
char rxdata;
IO0DIR |= 0xFF<<16;
IO0DIR |= (rs);
IO0DIR |= (rw);
IO0DIR |= (en);
lcdint();
spiint();
lcdstr("initializing");
lcdcmd(0xc5);
lcdstr("slave");
delay(1050000);
lcdcmd(0x01);
lcdstr(" receiving data");
lcdcmd(0xc0);
while(1)
{

rxdata=spiread();
lcddata(rxdata);
//S0SPSR=0x00;
//spiint();
//delay(1050000);
//lcdcmd(0x01);

}
}

//#include <LPC214X.H>
//#define data 0xFF<<16    //assinging values for po.16-p0.23
#define rs (1<<13)
#define rw (1<<14)
#define en (1<<15)
void delay(int);
void lcdint();
void lcdcmd(int);
void lcddata(char);
void lcdstr(unsigned char*);
void lcdstr(unsigned char *chr)
{
while(*chr)
{
lcddata(*chr++);
}
}
void lcddata(char xdata)
{
IO0PIN = xdata<<16;
//IO0SET|=(xdata<<16);
IO0SET =(rs);
IO0CLR =(rw);

IO0SET = (en);
delay(500);
IO0CLR = (en);
}
void lcdcmd(int cmd)
{
IO0CLR =(rs);
IO0CLR =(rw);
//IO0SET|=(cmd<<16);
IO0PIN = cmd<<16;
IO0SET = (en);
delay(500);
IO0CLR = (en);
}
void lcdint()
{
lcdcmd(0x0E);
  delay(500);
lcdcmd(0x38);
delay(500);
lcdcmd(0x06);
delay(500);
lcdcmd(0x80);
 delay(500);
 //lcdstr("okay");
}
void delay(int m)
{
while(m--);
}



ARM--SPI master

#include <LPC214X.H> //master
#include"lcdsub.c"
void spiint();
void spiint()
{
PINSEL0=0x00001500;
S0SPCR=0xA0;
S0SPCCR=8;
IO0SET |=(1<<0);
}
void spisend(char data1)
{
 S0SPDR=data1;
 while(!(S0SPSR & 0x80));
 }
unsigned char spiread()
{
   char rx;
   while(!(S0SPSR & 0x80));
   rx=S0SPDR;
}

int main()
{
IO0DIR |= 0xFF<<16;
IO0DIR |= (rs);
IO0DIR |= (rw);
IO0DIR |= (en);
IO0DIR |= (1<<0);
lcdint();
IO0SET |=(1<<1);
spiint();
lcdstr("initializing");
lcdcmd(0xc5);
lcdstr("master");
delay(1050000);
lcdcmd(0x01);
lcdstr(" sending data ");
lcdcmd(0xc0);

while(1)
{
IO0SET |=(1<<1);
spisend('a');
  lcddata('a');
delay(1050000);
delay(1050000);
//S0SPCR=0x0A0;
spiint();

}
}

//#include <LPC214X.H>
//#define data 0xFF<<16    //assinging values for po.16-p0.23
#define rs (1<<13)
#define rw (1<<14)
#define en (1<<15)
void delay(int);
void lcdint();
void lcdcmd(int);
void lcddata(char);
void lcdstr(unsigned char*);
void lcdstr(unsigned char *chr)
{
while(*chr)
{
lcddata(*chr++);
}
}
void lcddata(char xdata)
{
IO0PIN = xdata<<16;
//IO0SET|=(xdata<<16);
IO0SET =(rs);
IO0CLR =(rw);

IO0SET = (en);
delay(500);
IO0CLR = (en);
}
void lcdcmd(int cmd)
{
IO0CLR =(rs);
IO0CLR =(rw);
//IO0SET|=(cmd<<16);
IO0PIN = cmd<<16;
IO0SET = (en);
delay(500);
IO0CLR = (en);
}
void lcdint()
{
lcdcmd(0x0E);
  delay(500);
lcdcmd(0x38);
delay(500);
lcdcmd(0x06);
delay(500);
lcdcmd(0x80);
 delay(500);
 //lcdstr("okay");
}
void delay(int m)
{
while(m--);
}
/*IO0DIR |= 0xFF;
IO0DIR |= (rs);
IO0DIR |= (rw);
IO0DIR |= (en);
*/



Friday 12 June 2015

arm uart

#include <LPC212x.H>
#include"lcdsub.c"
char rx;
void delay(int);
void serialint();
void serialwrite(char);
char serialread();
void serialint()
{
U0LCR=0x83;
U0DLM=0x00;
U0DLL=0x5E;
U0FDR=0x52;
U0LCR=0x03;
}
void serialwrite(char tx)
{
U0THR=tx;
while((U0LSR &0x40)==0);
U0LSR |=0x40;
}
char serialread()
{
while((U0LSR &0x01)==0);
rx=U0RBR;
U0LSR |= 0x01;
return rx;
}
int main()
{
IO0DIR |= 0xFF<<15;
IO0DIR |= (rs);
IO0DIR |= (rw);
IO0DIR |= (en);
IO0DIR |= (1<<0);
IO0DIR &= ~((1<<1));
lcdint();
serialint();
lcdstr("initializing");
while(1)
{

}
}



arm-timer

#include <LPC214X.H>
void timerint();
void timerint()
{
//PCONP |= 0x00000001;
T0TC=0x00;  // resetting timer0
T0PC=0x00;  // setting prescaller counter as 14746
T0TCR=0x02; //resetting timer control
T0MCR=0x03; //enabling MR0I and MR0R
T0PR=200000; //resetting PR
T0MR0=0x00fffff;
}
void delay(unsigned int val)
{
T0TCR=0x02;
 T0TCR=0x01;
 // T0TC=0x000388;
 while(T0TC < val);
 IO0SET |= (1<<1);
 T0TCR=0x00;
}
int main()
{
IO0DIR |= (1<<0);
IO0DIR |= (1<<1);
//IO0SET |= (1<<0);
 //delay(10);
 //IO0CLR |= (1<<0);
 // delay(1);
while(1)
{
delay(10);
IO0SET |= (1<<0);
delay(10



);
IO0CLR |= (1<<0);
}
}




arm--ext interrupt

#include <LPC214X.H>
__irq void isr(void)
{
if(EXTINT==1)
{
IO0SET |= (1<<0);
EXTINT=0;
}

}
int main()
{  
PINSEL1=0x00000001;
IO0DIR |=(1<<0);
EXTINT=0x01;
EXTPOLAR=0x01; //important efine which triggers the intterrup whether the raising or fallin edge
IO0DIR &= ~((1<<16));
//VICIntSelect |= (1<<14) ;
VICIntEnable |= 0x00004000 ;
VICVectCntl10 |= (1<<5) | 14 ;
VICVectAddr10 |= (unsigned) isr;
while(1)
{ IO0CLR |= (1<<0);
 //VICSoftInt |=(1<<14);

}
}




Wednesday 10 June 2015

arm uart

#include <LPC212x.H>
#include"lcdsub.c"
char rx;
void delay(int);
void serialint();
void serialwrite(char);
char serialread();
void serialint()
{
U0LCR=0x83;
U0DLM=0x00;
U0DLL=0x5E;
U0FDR=0x52;
U0LCR=0x03;
}
void serialwrite(char tx)
{
U0THR=tx;
while((U0LSR &0x40)==0);
U0LSR |=0x40;
}
char serialread()
{
while((U0LSR &0x01)==0);
rx=U0RBR;
U0LSR |= 0x01;
return rx;
}
int main()
{
IO0DIR |= 0xFF<<15;
IO0DIR |= (rs);
IO0DIR |= (rw);
IO0DIR |= (en);
IO0DIR |= (1<<0);
IO0DIR &= ~((1<<1));
lcdint();
serialint();
lcdstr("initializing");
while(1)
{

}
}

//#include <LPC214X.H>
//#define data 0xFF<<16    //assinging values for po.16-p0.23
#define rs (1<<23)
#define rw (1<<24)
#define en (1<<25)

void delay(int);
void lcdint();
void lcdcmd(int);
void lcddata(char);
void lcdstr(unsigned char*);
void lcdstr(unsigned char *chr)
{
while(*chr)
{
lcddata(*chr++);
}
}
void lcddata(char xdata)
{
IO0PIN = (xdata<<15);
//IO0SET|=(xdata<<15);
IO0SET =(rs);
IO1CLR =(rw);

IO0SET = (en);
delay(500);
IO0CLR = (en);
}
void lcdcmd(int cmd)
{
IO0CLR =(rs);
IO0CLR =(rw);
//IO0SET|=(cmd<<15);
IO0PIN = (cmd<<15);
IO0SET = (en);
delay(500);
IO0CLR = (en);
}
void lcdint()
{
lcdcmd(0x0E);
  delay(500);
lcdcmd(0x38);
delay(500);
lcdcmd(0x06);
delay(500);
lcdcmd(0x80);
 delay(500);
 //lcdstr("okay");
}
void delay(int m)
{
while(m--);
}
/*IO0DIR |= 0xFF;
IO0DIR |= (rs);
IO0DIR |= (rw);
IO0DIR |= (en);
*/