Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
04/04/07 14:42
Read: times


 
#136597 - I have Codded this in C,But still not working :-(
Responding to: ???'s previous message
Well i have codded the program in C but i am still unable to Write the Data,,,,,,,

the C program is this ...

#include<AT89X051.H>
#include <intrins.h>								//Includes _nop_(); function 

sbit scl = P1^7; 									//Some BitWise Definations
sbit sda = P1^6;
sbit tst = P3^7;

void iic_start (void);								//Functions Prototypes
void iic_stop (void);
void ack (void);
void no_ack (void);
void send_data (unsigned char j);
unsigned char read_data (void);
void iic_write_word (unsigned char add,unsigned char dat);
unsigned char iic_read_data (unsigned char add);
void delay (void);
void empty (void)
{;}

void main (void)
{
unsigned char dat,add;								//Two Variables dat=DATA, add=ADDRESS
tst=1;												//set tst (Which is Button)
P1=0xff;											//Making P1 High
add=0x00;											//Set EEPROM add to 0xff;
dat=0xf0;											//Set Data to 0xff
iic_write_word(add,dat);							//Write the word at location add and data is dat
P1=0x00;											//When Data Written Succesffully then make P1 low
while(1)
{
while(tst);											//Wait for tst button to touch ground
while(!tst);										//when pressed then wait for Release
add=0x00;											//Set add to 0x00 of EEPROM
dat=iic_read_data(add);								//Read the Random Read at Location add (0x00)
}
}


void iic_start (void)								//iic start routine
{
sda=1;
scl=1;
_nop_();
sda=0;
_nop_();
scl=0;
}

void iic_stop (void)								//iic stop routine
{
scl=1;
_nop_();
sda=1;
}

void send_data (unsigned char j)					//Routine for Send data placed in "j"
{
unsigned char bit_pos;
//j=0xf0;  
scl = 0; 
for(bit_pos = 0x80; bit_pos != 0; bit_pos >>= 1) // MSB first 
{ 
if (j & bit_pos) 
sda = 1; 
else 
sda = 0; 

scl = 1; 
_nop_(); 
scl = 0;
}
}

unsigned char read_data (void)						//Routine for Reading the data, and return output
{
unsigned char index,x=0x00; 
for(index = 0x80; index != 0; index >>= 1) 			// MSB first 
{ 
_nop_(); 
scl = 1; 
if (sda) 
x |= index; 
scl = 0; 
} 

sda = 1; 
_nop_(); 
scl= 1; 
_nop_(); 
scl = 0; 

return(x); 
}

void ack (void)										//Acknowledge Routine
{
sda=1;
scl=1;
//while(sda);
_nop_();
scl=0;
}

void no_ack (void)									//No Acknowledge Routine
{
sda=1;
scl=0;
//while(!sda);
_nop_();
scl=1;
}

void iic_write_word (unsigned char add,unsigned char dat)	//Routine for writing data=dat at Location=add
{
iic_start();										//start iic	
send_data(0xa0);									//send Address with Write
ack();
send_data(add);										//send the EEPROM address
ack();
send_data(dat);										//send the Data to EEPROM
ack();
iic_stop();											//stop iic
delay();
}

unsigned char iic_read_data (unsigned char add)		//Routine for writing data=dat at Location=add
{
unsigned char value;
iic_start();										//start iic
send_data(0xa0);									//send Address with Write
ack();
send_data(add);										//send the EEPROM address from Data should be collected
ack();
iic_start();										//start iic again
send_data(0xa1);									//send Address with Read
ack();			
value=read_data();									//Get the Data and store it in value
no_ack();
iic_stop();											//stop iic	
//delay();
return(value);
} 

void delay (void)
{
unsigned int x; 
for(x=0;x<=1000;x++)
empty();
}



List of 74 messages in thread
TopicAuthorDate
How To Write the Data to EEPROM (Seial)            01/01/70 00:00      
   Slow the i2c clock            01/01/70 00:00      
      Well i am using 12 MHz with 8051            01/01/70 00:00      
         Speed            01/01/70 00:00      
         this is upon you to determine            01/01/70 00:00      
   the poor developer's "logic analyzer"....            01/01/70 00:00      
   What happens in the real hardware?            01/01/70 00:00      
      writing IS broken - but in several ways            01/01/70 00:00      
         I I Sir, i will use spaces for next, :-)            01/01/70 00:00      
            delay for write plus the real error            01/01/70 00:00      
      Sir i'v used P1 to see that data is written or not            01/01/70 00:00      
         Order of magnitude!            01/01/70 00:00      
         is it 100kHz or 1000kHz?            01/01/70 00:00      
      I dont have osciloscop :-(            01/01/70 00:00      
   In real world the P1 is High,            01/01/70 00:00      
   Code Comments            01/01/70 00:00      
      again "I I SIR", well sir i have got your Point,            01/01/70 00:00      
         to Asif (and others)            01/01/70 00:00      
   I2C Part number ...            01/01/70 00:00      
   Even the NOPs and delay wont working            01/01/70 00:00      
   I have Codded this in C,But still not working :-(            01/01/70 00:00      
      not a good idea            01/01/70 00:00      
      Asif,s C Code for I2C            01/01/70 00:00      
         You missed the point            01/01/70 00:00      
            Point taken            01/01/70 00:00      
   are you sure they are IIC, not SMB            01/01/70 00:00      
      To be very Honest i dont know tha its IIC or SMB            01/01/70 00:00      
         try this            01/01/70 00:00      
   Have you looked here?            01/01/70 00:00      
      Working code...            01/01/70 00:00      
         advice to Asif            01/01/70 00:00      
            i know that i dont have to Copy Paste,, :-)            01/01/70 00:00      
               WoW i have EEPROM Programmer,            01/01/70 00:00      
                  is it working at all?            01/01/70 00:00      
            What about the A0, A1... pins on the 24C04            01/01/70 00:00      
   Well sir Here are Comparision of C and ASM(My Way)            01/01/70 00:00      
      I few I2C questions            01/01/70 00:00      
         it is not uncommon to list IIC addresses this way,            01/01/70 00:00      
            I was askin for schematics...            01/01/70 00:00      
               Here is the Schematics,            01/01/70 00:00      
                  Pardon??            01/01/70 00:00      
                     Well sir it means this ckt is Dummy            01/01/70 00:00      
                        OK            01/01/70 00:00      
                           Well i am straight forward programmer :-)            01/01/70 00:00      
                           Well the Hardware Circuit is Exactly same as it.            01/01/70 00:00      
                              Not at all!            01/01/70 00:00      
                     Recheck it Sir i have added labels, :-)            01/01/70 00:00      
                        but            01/01/70 00:00      
                        and blinkey?            01/01/70 00:00      
                           It really worked :-) MCu is stucked at ACK            01/01/70 00:00      
                              Stuck at ACK            01/01/70 00:00      
                              Stuck in no ACK            01/01/70 00:00      
                                 Sorry i havent understood, forgive my dumbness            01/01/70 00:00      
                                    Stuck in ACK (Reminds me of work)            01/01/70 00:00      
                                    Still Stuck?            01/01/70 00:00      
                                       Sir i am gonna use the Acknowledge polling tech:-)            01/01/70 00:00      
                                          one note            01/01/70 00:00      
                                             Nice note:-) but it Clocking was wrong,            01/01/70 00:00      
                                       Sir i am gonna use the Acknowledge polling tech:-)            01/01/70 00:00      
   Here is working Code, :-)            01/01/70 00:00      
      for your benefit and others            01/01/70 00:00      
         Havent Gotten your Idea ?            01/01/70 00:00      
            The idea is            01/01/70 00:00      
               WoW i have Gotten the IDEA , thanks            01/01/70 00:00      
   The Problem Solved Successfully,Thanks everybody            01/01/70 00:00      
      You have the code working now            01/01/70 00:00      
         Thanks David            01/01/70 00:00      
         Partially agree            01/01/70 00:00      
            100% agreed            01/01/70 00:00      
            I was rying to help !!            01/01/70 00:00      
               true and untrue            01/01/70 00:00      
                  C Loops are not Perfect, agreed            01/01/70 00:00      
                  C timing loops            01/01/70 00:00      
                     then don't call it C            01/01/70 00:00      

Back to Subject List