|
发表于 2012-8-18 05:37:05
|
显示全部楼层
//78E58B,晶振应该是33M的
//------------------------------读写X5045子程序------------------------------------
void WatchDog(void) //喂狗
{
nop;
X5045Cs=0;
nop;
X5045Cs=1;
}
void Write_byte5045(void) //写字节5045命令(与KA120比较有改动)
{
uchar k;
for(k=0;k<8;k++)
{
Sck=0; nop;
Sio=Command_7; nop;
Sck=1; nop;
Command<<=1;
}
Sio=1; feeddog=1;
}
void Write_en5045(void) //写使能
{
X5045Cs =0;
Command=0x06;
Write_byte5045();
X5045Cs =1;
}
void Write_dis5045(void)
{
X5045Cs=0;
Command=0x04;
Write_byte5045();
X5045Cs =1;
}
void Write_5045(uchar Length, bit High_address, uchar Low_address) //根据参数写5045
{
uchar i;
X5045Cs = 0; //5045使能
if(High_address) //判断是否需要最高位地址
Command=0x0a;
else
Command=0x02;
Write_byte5045();
Command=Low_address;
Write_byte5045(); //写入起始地址
for(i=0;i<Length;i++) //写入数据
{
Command=Data1_buffer[i];
Write_byte5045();
}
X5045Cs =1;
Ddelay(20,1);
}
void DogEnable(void) //写5045状态寄存器
{
X5045Cs=0;
Command=0x01;
Write_byte5045();
Command=0;
Write_byte5045();
X5045Cs=1;
}
void DogDisable(void) //写5045状态寄存器
{
X5045Cs=0;
Command=0x01;
Write_byte5045();
Command=0x30;
Write_byte5045();
X5045Cs=1;
}
void Read_byte5045(void) //读字节5045命令 (与KA120比较有改动)
{
uchar k;
for(k=0;k<8;k++)
{
Command<<=1;
Sck=1; nop; Sck=0;
Command_0=Sio;
}
Sck=1;
}
void Read_5045(uchar Length, bit High_address, uchar Low_address) //根据参数读5045
{
uchar i;
X5045Cs = 0; //5045使能
if(High_address) Command=0x0b; else Command=0x03;
Write_byte5045();
Command=Low_address;
Write_byte5045();
for(i=0;i<Length;i++)
{
Read_byte5045();
Data1_buffer[i]=Command;
}
X5045Cs =1;
}
//------------------------------读写X5045子程序------------------------------------ |
|