| ??? 06/09/12 11:01 Read: times |
#187646 - help me with 93c46 and at89s52---MikroC Responding to: ???'s previous message |
here is my code for MikroC -
...
//define OP code for Group 1
unsigned char OP_read = 0x80; // 2 bit OP + 7 bit address (DI =1 already)
unsigned char OP_erase = 0xC0; // 2 bit OP + 7 bit address
unsigned char OP_write = 0x40; // 2 bit OP + 7 bit address
//define OP code for Group 2
unsigned char OP_EW_enable = 0x30; // 4 bit OP + 5 bit X
unsigned char OP_EW_disable = 0x00; // 4 bit OP + 5 bit X
unsigned char OP_erase_ALL = 0x20; // 4 bit OP + 5 bit X
unsigned char OP_write_ALL = 0x10; // 4 bit OP + 5 bit X
//define pin
sbit CS at P3.B7;
sbit SK at P3.B6;
sbit DI at P3.B5;
sbit DO at P3.B4;
unsigned char i,indata,op_h,DT,addr,dta,out_data;
//unsigned char dis_code[] = { 0x28, 0x7E, 0xA2, 0x62,0x74, 0x61, 0x21, 0x7A,0x20, 0x60,0xff};
unsigned char Shift_Left[] = {0xFE, 0xFD, 0xFB, 0xF7,0xEF, 0xDF, 0xBF, 0x7F,};
//unsigned char display[] = {0xff,0xF0,0x0F,0x08,0x09,0xFF,0x05,0x50};
unsigned char dis_code = 0xA2;
//unsigned char Shift_Left = 0x7F;
unsigned char display;
//Group 2
void OP_G2(unsigned char op_h)
{ DI = 1; CS=1; SK=0;
Delay_ms(2);
SK=1;
Delay_ms(2);
SK=0;
for(i=0;i<9;i++)
{ DI = (op_h & 0x80);
SK=1;
Delay_ms(2);
op_h <<= 1;
SK=0;
}
Delay_ms(10);
}
void standby(){CS= 0;SK=0;DI=0;}
//Group 1
void OP_G1(unsigned char op_h,unsigned char DT)
{
DI = 1; CS=1; SK=0;
Delay_ms(2);
SK=1;
Delay_ms(2);
SK=0;
i=0;
while(i<2)
{
DI = (op_h & 0x80);
SK=1;
Delay_ms(2);
op_h <<= 1;
SK=0;
i++;
}
DT<<=1;
i=0;
while(i<8)
{
DI = (DT & 0x80);
SK=1;
Delay_ms(2);
DT <<= 1;
SK=0;
i++;
}
DI=0;
}
//---------------------writing-------------
void Into_Chip(unsigned char oph)
{ i=0;
while(i<8)
{
DI = (oph & 0x80);
SK=1;
Delay_ms(2);
oph <<= 1;
SK=0;
i++;
}
}
void WR_Chip(unsigned char addr,unsigned char dta)
{
OP_G1(OP_write, addr);
Into_Chip(dta);
CS=0;
delay_ms(10);
}
//---------------------reading-------------
unsigned char OUT_Chip()
{
unsigned char dtt=0;
i=0;
while(i<8)
{ SK = 1;
dtt |= DO;
Delay_ms(2);
SK=0;
dtt <<= 1;
i++;
} //P0=dtt;
//Delay_ms(500);
return dtt;
//P0=dtt;
}
void main()
{ OP_G2(OP_EW_enable);
CS=0;
P0=0x7E;
P2=0xFE;
Delay_ms(1000);
OP_G2(OP_erase_ALL);
// CS=0;
//Delay_ms(1000);
//OP_G2(OP_write_ALL); CS=0;
//for(i = 0 ; i < 8; i++)
WR_Chip(0, dis_code);
//OP_G2(OP_EW_disable);
//for(i = 0 ; i < 8; i++){
OP_G1(OP_read, 0);
display= OUT_Chip();
// }
standby();
while(1)
{
P2=0xff ;
for(i=0; i<8; i++)
{
P0=display;
P2=Shift_Left[i];
delay_ms(400);
}
}
}
|
| Topic | Author | Date |
| help me with 93c46 and at89s52---MikroC | 01/01/70 00:00 | |
| What You Need to Do Yourself | 01/01/70 00:00 | |
| need help - 93c46 using AT89s52 - mikroc | 01/01/70 00:00 | |
| MikroC is unwise choice | 01/01/70 00:00 | |
| help me with 93c46 and at89s52---MikroC | 01/01/70 00:00 | |
| So check without scope - adjust code until testable | 01/01/70 00:00 | |
| you have now 3 times asked help with 93c46/at89s52--MikroC | 01/01/70 00:00 | |
| 93c46/at89s52--MikroC | 01/01/70 00:00 | |
| my suggestion | 01/01/70 00:00 | |
| You have already been given suggestions | 01/01/70 00:00 | |
| help me with 93c46 and at89s52---MikroC | 01/01/70 00:00 | |
| Use a proper Compiler | 01/01/70 00:00 | |
| I wanna, I wanna, I wanna, | 01/01/70 00:00 | |
| Time to actually prove your logic and your delays | 01/01/70 00:00 | |
| ----thanks all for helping out | 01/01/70 00:00 | |
| do you REALLY expect .... | 01/01/70 00:00 | |
| If you can't get MikroC to work ... | 01/01/70 00:00 | |
| switching to keil | 01/01/70 00:00 | |
| Example code on this website | 01/01/70 00:00 | |
why, oh why | 01/01/70 00:00 |



