延迟1 ms (;
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。
函数功能:从X5045的当前地址读取数据
出口参数: x
******************************
无符号字符地址(void ) )。
{
无符号字符I;
unsigned char x=0x00; 保存从X5045读出的数据
SCK=1;//使sck成为已知的高电平状态
for(I=0; i 8; I )
{
SCK=1; 提高//SCK
SCK=0;//在sck的下降沿输出数据
x=1; 将//x的各二进制向左移位1比特。 因为最初读取的是字节的最高位数据
x|=(unsignedchar ) SO; //so上的数据按位或“通过运算存储在x中”
}
返回(x; //返回读取的数据
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。
函数功能:将数据写入X5045的当前地址
入口参数: dat
******************************
voidwritecurrent (unsignedchardat )。
{
无符号字符I;
SCK=0; 使//sck成为已知低电平状态
for(I=0; i 8; I//循环移动8位
{
si=(bit ) ) dat0x80; //通过位和运算将最高位比特的数据发送到s
//因为传输时上位在前,下位在后
SCK=0;
SCK=1;//在sck的上升沿写入数据
dat=1; 将//y的各二进制向左移位1比特。 因为首先写入的是字节的最高有效位
}
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。
函数:可以写入状态寄存器,设置看门狗溢出时间和数据保护
入口参数: rs; //保存寄存器的状态值
******************************
虚拟字符(unsignedcharrs )。
{
CS=0; 降低//cs,检查X5045
写当前(wren ); //允许写入锁存器被允许
CS=1; 提高//cs
CS=0; 重新降低//cs。 否则,下一个写寄存器状态命令将被丢弃
writecurrent(wrsr; //写状态寄存器
witecurrent(RS; //写入新设定的寄存器状态值
CS=1; 提高//cs
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。
函数功能:将数据写入X5045的指定地址
入口参数: addr
******************************
voidwriteset(unsignedchardat,unsigned char addr ) )。
{
SCK=0;//使sck处于已知状态
CS=0; 降低//cs,检查X5045
写当前(wren ); //允许写入锁存器被允许
CS=1; 提高//cs
CS=0; 重新降低//cs。 否则,下一个写入命令将被丢弃
写当前(write; //写入命令
写当前(addr; //写入指定地址
writecurrent(dat; //写入数据
CS=1; 提高//cs
SCK=0;//使sck处于已知状态
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。
函数功能:从X5045的指定地址读取数据
入口参数: addr
出口参数: dat
******************************
无符号字符重置(unsignedcharreadset ) )。
{
无符号字符数据;
SCK=0;//使sck处于已知状态
CS=0; 降低//cs,检查X5045
写当前(读; //开始读
写当前(addr; //写入指定地址
dat=ReadCurrent (; //读出数据
CS=1; 提高//cs
SCK=0;//使sck处于已知状态
返回日期; //返回读取的数据
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。
功能:看门狗复位程序
******************************
语音写入(void ) )。
{
CS=1; 提高//cs
CS=0; 在//CS引脚的下降沿复位看门狗计时器
………