We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
how 2 intialize at89c51ed2 for spi communication with ds1306?
2 initialize datasheets.
Thank you for your reply sir. i have return this code. #include <REG51xD2.H> #include<stdio.h> #include<stdlib.h> unsigned char SPI(unsigned char);
void sdelay(int ); void main(void) { EA=1; SPSTA=0x00; SPCON=0xd6;
P1_7=1;//mOsi
P1_6=0;//sck P1_6=1; P1_1=1;//ss sdelay(1);
SPI(0x80); SPI(0x55); SPI(0x58); SPI(0x16); SPI(0x3); SPI(0x19); SPI(0x10); SPI(0x04); P1_1=0; sdelay(1); }
unsigned char SPI(unsigned char mybyte) {
SPDAT|=mybyte;
while(!(SPSTA&0x80)) { ; }
SPSTA&=0x00; return SPDAT;
}
void sdelay(int ms) { unsigned int i,j; for(i=0;i<ms;i++) for(j=0;j<135;j++);
here the value is not getting transmitted to SPDAT register.. I don't know what is the problem wiht this code
HI.
b4 u go on u must put a change in ur code to stop reset.
like;
void main(void) { . . . sdelay(1); for (;;) ; }
Always yo're freind.
Zeusti.
Thank you for your reply sir. i have return this code. i do not understand, code has comments, I see none.
Please post your code, not some scribbles
Erik
"i do not understand, code has comments, I see none."
As a sentence, that one makes no sense.
"i do not understand that you state "here is my code", code has comments, I see none."
is that better?
"is that better?"
A little better ;)
This may be considered better:
I do not think you are right when you say "here is my code". Code has comments. I see no comments in your post. It could therefore be deduced that you have not actually posted any code for us to view.
I do admit, however, that mine is way longer than yours.
ps I totally agree with the sentiments of your original post.
I have written the comments plz go through it #include <REG51xD2.H>
void SPI(unsigned char);
void sdelay(int ); void main(void) {
EA=1; SPSTA=0x00; SPCON=0xd6; /*MSTR(4th bit),SPEN(7th bit),CPHA (2nd bit),7th,0th & 1st bits are enbled. the 7th ,0th & 1st bits are enbled for Fclk Periph/128*/
IEN1=0x04; /* enable spi interrupt */
P1_7=1;/*mOsi enable*/ P1_6=1;/*sck enable*/ P1_1=1;/*slave select*/ sdelay(1); SPI(0x80);/* send an example data */ sdelay(1); while(1); }
void SPI(unsigned char mybyte) {
SPDAT=mybyte;/* read receive data */
while(!(SPSTA&0x80))/* set software flag */ { ; }
SPSTA&=0x7f;
I hav written the comments plz go through it. #include <REG51xD2.H>
EA=1; SPSTA=0x00; SPCON=0xd6; /*MSTR(4th bit),SPEN(7th bit),CPHA(2nd bit),7th,0th & 1st bits are enbled. the 7th ,0th & 1st bits are enbled for Fclk Periph/128*/
P1_7=1;/*mOsi enable*/ P1_6=1;/*sck enable*/ P1_1=1;/*slave select*/ sdelay(1); SPI(0x80);/* send an example data */
sdelay(1); while(1); }
Why did you post your code THREE times?
Why did you not place your code in 'pre' tags so we could read it more easily?
Comments ... Hmmmm.
Sausage man, Have you noticed the widespread of C based delay loops (here and in other threads)? what is it with teachers today? even they can't get their act together?!?!?!
"Have you noticed the widespread of C based delay loops..."
Unfortunately, I don't think it's just teachers who are to blame for this.
There are a number of manufacturer examples that do the very same thing. I've certainly seen ST and PIC code that contains it.
When I was getting my (precious few) qualifications, I was frequently told by the lecturers that we shouldn't concern ourselves with code efficiency because "tomorrows processors will be faster".
At the time I thought that was b#@@sh1t - And I still do!
At the time I thought that was b#@@sh1t - And I still do! 1) I agree this is male cow manure 2) you did not mention that when "tomorrows processors" are inserted the delay loops will be faster too, OOPS
SPI(0x80);/* send an example data */ ..... SPDAT=mybyte;/* read receive data */