📄 95m.cpp
字号:
indata=_inp(ACK);delay(); //read data
indata <<=1; //clear up unwanted bits
indata >>=7;
data=data | indata;
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay();
_outp(SCL, 0x00);delay(); //acknowledge from CPU
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x80);delay();
gold_data[address]=data;
}
_outp(SDA, 0x00);delay();
_outp(SCL, 0x04);delay(); //stop condition, end of sequential read
_outp(SDA, 0x80);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay();
printf(" # data # data # data # data # data # data # data # data # data # data\n");
for (i=0; i<128;i++)
{
printf("%3d %3x ", i,gold_data[i]);
}
_outp(SDA, 0x80);delay();
_outp(SCL, 0x04);delay();
}
//-----------------------------------------------------------------------------------------
void verify_eeprom()
{
unsigned char indata=0; //input data buffer
unsigned char data=0;
_outp(SDA, 0x80);delay();
_outp(SCL, 0x04);delay(); //start condition
_outp(SDA, 0x00);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x80);delay(); //write control byte '1010 000 0'
_outp(SCL, 0x04);delay(); //'1'
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //'0'
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x80);delay(); //'1'
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //'0'
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //'0'
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //'0'
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //'0'
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //'0' write condition
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x80);delay();
_outp(SCL, 0x04);delay(); //acknowledge
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //write address
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //write address
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //write address
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //write address
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //write address
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //write address
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //write address
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //write address
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x80);delay();
_outp(SCL, 0x04);delay(); //acknowledge
_outp(SCL, 0x00);delay();
_outp(SCL, 0x04);delay();
_outp(SDA, 0x80);delay();
_outp(SCL, 0x04);delay(); //start condition
_outp(SDA, 0x00);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x80);delay(); //write control byte '1010 000 1'
_outp(SCL, 0x04);delay(); //'1'
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //'0'
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x80);delay(); //'1'
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //'0'
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //'0'
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //'0'
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //'0'
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x80);delay(); //'1' read condition
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x80);delay();
_outp(SCL, 0x04);delay(); //acknowledge
_outp(SCL, 0x00);delay();
for ( unsigned char x=0; x<129; x++)
{
_outp(SCL, 0x00);delay();
_outp(SCL, 0x04);delay();
indata=_inp(ACK);
indata<<=1;
indata >>= 7; // clear up unwanted bits
indata <<=7;
data=0x00;
data = data | indata;
_outp(SCL, 0x00);delay();
_outp(SCL, 0x04);delay();
indata=_inp(ACK);
indata <<=1; //clear up unwanted bits
indata >>=7;
indata <<=6;
data = data | indata;
_outp(SCL, 0x00);delay();
_outp(SCL, 0x04);delay();
indata=_inp(ACK);delay(); //read data
indata <<=1; //clear up unwanted bits
indata >>=7;
indata <<=5;
data = data | indata;
_outp(SCL, 0x00);delay();
_outp(SCL, 0x04);delay();
indata=_inp(ACK);delay(); //read data
indata <<=1; //clear up unwanted bits
indata >>=7;
indata <<=4;
data=data | indata;
_outp(SCL, 0x00);delay();
_outp(SCL, 0x04);delay();
indata=_inp(ACK);delay(); //read data
indata <<=1; //clear up unwanted bits
indata >>=7;
indata <<=3;
data=data | indata;
_outp(SCL, 0x00);delay();
_outp(SCL, 0x04);delay();
indata=_inp(ACK);delay(); //read data
indata <<=1; //clear up unwanted bits
indata >>=7;
indata <<=2;
data=data | indata;
_outp(SCL, 0x00);delay();
_outp(SCL, 0x04);delay();
indata=_inp(ACK);delay(); //read data
indata <<=1; //clear up unwanted bits
indata >>=7;
indata <<=1;
data=data | indata;
_outp(SCL, 0x00);delay();
_outp(SCL, 0x04);delay();
indata=_inp(ACK);delay(); //read data
indata <<=1; //clear up unwanted bits
indata >>=7;
data=data | indata;
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay();
_outp(SCL, 0x00);delay(); //acknowledge from CPU
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x80);delay();
compare[x]=data;
}
_outp(SDA, 0x00);delay();
_outp(SCL, 0x04);delay(); //stop condition, end of sequential read
_outp(SDA, 0x80);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay();
for (i=0; i<128;i++)
{
if (gold_data[i] != compare[i])
{
printf(" ERROR: ADDRESS WRITE DATA READ DATA\n");
printf(" %d %x %x \n", i, gold_data[i], compare[i]);
break;
}
else
printf("Verify O.K.\n");
}
_outp(SDA, 0x80);delay();
_outp(SCL, 0x04);delay();
}
//-----------------------------------------------------------------------------------------
void program_default()
{
int handle; // open file for read operation.
char filename[80];
//printf("Enter the name of file to read.\n");
//cin >> filename;
//filename = "goldfile.dat";
if (( handle= open("95m.dat", O_CREAT|O_BINARY|O_RDWR, S_IREAD|S_IWRITE)) == -1)
{
printf("Open failed\n");
}
read(handle,gold_data,128);
printf(" # data # data # data # data # data # data # data # data # data # data\n");
for (i=0; i<128;i++)
{
printf("%3d %3x ", i,gold_data[i]);
}
write_eeprom();
}
//-----------------------------------------------------------------------------------------
void read_ks8995m_registers()
{
unsigned char indata=0; //input data buffer
unsigned char data=0;
_outp(SDA, 0x80);delay();
_outp(SCL, 0x04);delay(); //start condition
_outp(SDA, 0x00);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x80);delay(); //write control byte '1011 111 0' for KS8995M
_outp(SCL, 0x04);delay(); //'1'
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //'0'
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x80);delay(); //'1'
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x80);delay(); //'1'
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x80);delay(); //'1'
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x80);delay(); //'1'
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x80);delay(); //'1'
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //'0' write condition
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x80);delay();
_outp(SCL, 0x04);delay(); //acknowledge
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //write address
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //write address
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //write address
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //write address
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //write address
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //write address
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //write address
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //write address
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x80);delay();
_outp(SCL, 0x04);delay(); //acknowledge
_outp(SCL, 0x00);delay();
_outp(SCL, 0x04);delay();
_outp(SDA, 0x80);delay();
_outp(SCL, 0x04);delay(); //start condition
_outp(SDA, 0x00);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x80);delay(); //write control byte '1011 111 1' for KS8995M
_outp(SCL, 0x04);delay(); //'1'
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay(); //'0'
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x80);delay(); //'1'
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x80);delay(); //'1'
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x80);delay(); //'1'
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x80);delay(); //'1'
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x80);delay(); //'1'
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x80);delay(); //'1' read condition
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x80);delay();
_outp(SCL, 0x04);delay(); //acknowledge
_outp(SCL, 0x00);delay();
for ( address=0; address<128
; address++)
{
_outp(SCL, 0x00);delay();
_outp(SCL, 0x04);delay();
indata=_inp(ACK);
indata<<=1;
indata >>= 7; // clear up unwanted bits
indata <<=7;
data=0x00;
data = data | indata;
_outp(SCL, 0x00);delay();
_outp(SCL, 0x04);delay();
indata=_inp(ACK);
indata <<=1; //clear up unwanted bits
indata >>=7;
indata <<=6;
data = data | indata;
_outp(SCL, 0x00);delay();
_outp(SCL, 0x04);delay();
indata=_inp(ACK);delay(); //read data
indata <<=1; //clear up unwanted bits
indata >>=7;
indata <<=5;
data = data | indata;
_outp(SCL, 0x00);delay();
_outp(SCL, 0x04);delay();
indata=_inp(ACK);delay(); //read data
indata <<=1; //clear up unwanted bits
indata >>=7;
indata <<=4;
data=data | indata;
_outp(SCL, 0x00);delay();
_outp(SCL, 0x04);delay();
indata=_inp(ACK);delay(); //read data
indata <<=1; //clear up unwanted bits
indata >>=7;
indata <<=3;
data=data | indata;
_outp(SCL, 0x00);delay();
_outp(SCL, 0x04);delay();
indata=_inp(ACK);delay(); //read data
indata <<=1; //clear up unwanted bits
indata >>=7;
indata <<=2;
data=data | indata;
_outp(SCL, 0x00);delay();
_outp(SCL, 0x04);delay();
indata=_inp(ACK);delay(); //read data
indata <<=1; //clear up unwanted bits
indata >>=7;
indata <<=1;
data=data | indata;
_outp(SCL, 0x00);delay();
_outp(SCL, 0x04);delay();
indata=_inp(ACK);delay(); //read data
indata <<=1; //clear up unwanted bits
indata >>=7;
data=data | indata;
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay();
_outp(SCL, 0x00);delay(); //acknowledge from CPU
_outp(SCL, 0x04);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x80);delay();
gold_data[address]=data;
}
_outp(SDA, 0x00);delay();
_outp(SCL, 0x04);delay(); //stop condition, end of sequential read
_outp(SDA, 0x80);delay();
_outp(SCL, 0x00);delay();
_outp(SDA, 0x00);delay();
printf(" # data # data # data # data # data # data # data # data # data # data\n");
for (i=0; i<128;i++)
{
printf("%3d %3x ", i,gold_data[i]);
}
_outp(SDA, 0x80);delay();
_outp(SCL, 0x04);delay();
}
//-----------------------------------------------------------------------------------------
void delay()
{
for (a=0; a<100; a++)
{}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -