📄 lib.c
字号:
*QSM_SPCR1=0x9407; // QSPI允许
while ((*QSM_SPSR&0x80)==00); // 等待传输完成
*QSM_QPDR &= 0xEF; // 使DS1306的片选PCS1输出低电平无效
for (sts=0;sts<50;sts++);
// Write_DS1306_disable(); // DS1306禁止写命令
for (sts=0;sts<100;sts++);
}
void Read_Clock(uint8 *ptr) // 从DS1306读时钟
{
asm (" MOVE.B $FFFC1F,D1"); // QSPI标志清零
asm (" MOVE.B #0,$FFFC1F");
*QSM_QPDR |= 0x10; // 使DS1306的片选PCS1输出高电平有效
*QSM_SPCR1 = 0x1407; // QSPI禁止、SCK之前延时20、SCK之后延时7
*QSM_SPCR0 = 0xA109; // QSPI主机方式、每次传送8位、速率 1Mbps
*QSM_SPCR2 = 0x0700; // 队列结束指针为7、队列开始指针为0,禁止中断、环绕
*QSM_SPCR3 = 0x00; // 禁止反馈路径、中断、暂停
*(QSM_TxRAM+0)=0x00; *(QSM_CmRAM+0)=0xBf; // 输出时钟地址字节
*(QSM_TxRAM+1)=0; *(QSM_CmRAM+1)=0xBf; // 读入时钟 秒
*(QSM_TxRAM+2)=0; *(QSM_CmRAM+2)=0xBf; // 读入时钟 分
*(QSM_TxRAM+3)=0; *(QSM_CmRAM+3)=0xBf; // 读入时钟 时
*(QSM_TxRAM+4)=0; *(QSM_CmRAM+4)=0xBf; // 读入时钟 星期
*(QSM_TxRAM+5)=0; *(QSM_CmRAM+5)=0xBf; // 读入时钟 日
*(QSM_TxRAM+6)=0; *(QSM_CmRAM+6)=0xBf; // 读入时钟 月
*(QSM_TxRAM+7)=0; *(QSM_CmRAM+7)=0x3f; // 读入时钟 年
// *(QSM_TxRAM+0)=0x00; *(QSM_CmRAM+0)=0xB3; // 输出时钟地址字节
// *(QSM_TxRAM+1)=0; *(QSM_CmRAM+1)=0xB3; // 读入时钟 秒
// *(QSM_TxRAM+2)=0; *(QSM_CmRAM+2)=0xB3; // 读入时钟 分
// *(QSM_TxRAM+3)=0; *(QSM_CmRAM+3)=0xB3; // 读入时钟 时
// *(QSM_TxRAM+4)=0; *(QSM_CmRAM+4)=0xB3; // 读入时钟 星期
// *(QSM_TxRAM+5)=0; *(QSM_CmRAM+5)=0xB3; // 读入时钟 日
// *(QSM_TxRAM+6)=0; *(QSM_CmRAM+6)=0xB3; // 读入时钟 月
// *(QSM_TxRAM+7)=0; *(QSM_CmRAM+7)=0x33; // 读入时钟 年
*QSM_SPCR1=0x9407; // QSPI允许
while ((*QSM_SPSR&0x80)==00); // 等待传输完成
*QSM_QPDR &= 0xEF; // 使DS1306的片选PCS1输出低电平无效
ptr += 2;
*ptr++ = (uint8)(*(QSM_RxRAM+1)) & 0x7F; // 读出 秒
*ptr++ = (uint8)(*(QSM_RxRAM+2)) & 0x7F; // 读出 分
*ptr++ = (uint8)(*(QSM_RxRAM+3)) & 0x3F; // 读出 时
*ptr++ = (uint8)(*(QSM_RxRAM+5)) & 0x3F; // 读出 日
*ptr++ = (uint8)(*(QSM_RxRAM+6)) & 0x3F; // 读出 月
*ptr++ = (uint8)(*(QSM_RxRAM+7)) & 0xFF; // 读出 年
}
void Read_Clock2(uint8 *ptr) // 从DS1306读时钟
{
uint8 temp;
asm (" MOVE.B $FFFC1F,D1"); // QSPI标志清零
asm (" MOVE.B #0,$FFFC1F");
*QSM_QPDR |= 0x10; // 使DS1306的片选PCS1输出高电平有效
*QSM_SPCR1 = 0x1407; // QSPI禁止、SCK之前延时20、SCK之后延时7
*QSM_SPCR0 = 0xA109; // QSPI主机方式、每次传送8位、速率 1Mbps
*QSM_SPCR2 = 0x0700; // 队列结束指针为7、队列开始指针为0,禁止中断、环绕
*QSM_SPCR3 = 0x00; // 禁止反馈路径、中断、暂停
*(QSM_TxRAM+0)=0x00; *(QSM_CmRAM+0)=0xBf; // 输出时钟地址字节
*(QSM_TxRAM+1)=0; *(QSM_CmRAM+1)=0xBf; // 读入时钟 秒
*(QSM_TxRAM+2)=0; *(QSM_CmRAM+2)=0xBf; // 读入时钟 分
*(QSM_TxRAM+3)=0; *(QSM_CmRAM+3)=0xBf; // 读入时钟 时
*(QSM_TxRAM+4)=0; *(QSM_CmRAM+4)=0xBf; // 读入时钟 星期
*(QSM_TxRAM+5)=0; *(QSM_CmRAM+5)=0xBf; // 读入时钟 日
*(QSM_TxRAM+6)=0; *(QSM_CmRAM+6)=0xBf; // 读入时钟 月
*(QSM_TxRAM+7)=0; *(QSM_CmRAM+7)=0x3f; // 读入时钟 年
*QSM_SPCR1=0x9407; // QSPI允许
while ((*QSM_SPSR&0x80)==00); // 等待传输完成
*QSM_QPDR &= 0xEF; // 使DS1306的片选PCS1输出低电平无效
ptr += 2;
//20040416buby
if(CLK_err)
{
temp=(uint8)(*(QSM_RxRAM+1)) & 0x7F; // 秒
if((temp==0)||(temp>0x60))
return;
temp=(uint8)(*(QSM_RxRAM+2)) & 0x7F; // 分
if((temp==0)||(temp>0x60))
return;
temp=(uint8)(*(QSM_RxRAM+3)) & 0x3F; // 时
if((temp==0)||(temp>0x24))
return;
*ptr++ = (uint8)(*(QSM_RxRAM+1)) & 0x7F;// 秒
*ptr++ = (uint8)(*(QSM_RxRAM+2)) & 0x7F;// 分
*ptr++ = (uint8)(*(QSM_RxRAM+3)) & 0x3F;// 时
CLK_err=0;
}
else
//20040416buby
{
*ptr++; // = (uint8)(*(QSM_RxRAM+1)) & 0x7F; // 读出 秒
*ptr++; // = (uint8)(*(QSM_RxRAM+2)) & 0x7F; // 读出 分
*ptr++; // = (uint8)(*(QSM_RxRAM+3)) & 0x3F; // 读出 时
}
//年,月,日校验
temp=(uint8)(*(QSM_RxRAM+5)) & 0x3F;
if((temp==0)||(temp>0x31))
return;
temp=(uint8)(*(QSM_RxRAM+6)) & 0x3F;
if((temp==0)||(temp>0x13))
return;
temp=(uint8)(*(QSM_RxRAM+7)) & 0xFF;
if((temp==0)||(temp>0x50))
return;
//
*ptr++ = (uint8)(*(QSM_RxRAM+5)) & 0x3F; // 读出 日
*ptr++ = (uint8)(*(QSM_RxRAM+6)) & 0x3F; // 读出 月
*ptr++ = (uint8)(*(QSM_RxRAM+7)) & 0xFF; // 读出 年
}
void Read_Clock3(uint8 *ptr) // 从DS1306读时钟
{
uint8 temp;
asm (" MOVE.B $FFFC1F,D1"); // QSPI标志清零
asm (" MOVE.B #0,$FFFC1F");
*QSM_QPDR |= 0x10; // 使DS1306的片选PCS1输出高电平有效
*QSM_SPCR1 = 0x1407; // QSPI禁止、SCK之前延时20、SCK之后延时7
*QSM_SPCR0 = 0xA109; // QSPI主机方式、每次传送8位、速率 1Mbps
*QSM_SPCR2 = 0x0700; // 队列结束指针为7、队列开始指针为0,禁止中断、环绕
*QSM_SPCR3 = 0x00; // 禁止反馈路径、中断、暂停
*(QSM_TxRAM+0)=0x00; *(QSM_CmRAM+0)=0xBf; // 输出时钟地址字节
*(QSM_TxRAM+1)=0; *(QSM_CmRAM+1)=0xBf; // 读入时钟 秒
*(QSM_TxRAM+2)=0; *(QSM_CmRAM+2)=0xBf; // 读入时钟 分
*(QSM_TxRAM+3)=0; *(QSM_CmRAM+3)=0xBf; // 读入时钟 时
*(QSM_TxRAM+4)=0; *(QSM_CmRAM+4)=0xBf; // 读入时钟 星期
*(QSM_TxRAM+5)=0; *(QSM_CmRAM+5)=0xBf; // 读入时钟 日
*(QSM_TxRAM+6)=0; *(QSM_CmRAM+6)=0xBf; // 读入时钟 月
*(QSM_TxRAM+7)=0; *(QSM_CmRAM+7)=0x3f; // 读入时钟 年
*QSM_SPCR1=0x9407; // QSPI允许
while ((*QSM_SPSR&0x80)==00); // 等待传输完成
*QSM_QPDR &= 0xEF; // 使DS1306的片选PCS1输出低电平无效
ptr += 2;
//20040416buby
temp=(uint8)(*(QSM_RxRAM+1)) & 0x7F; // 秒
if((temp==0)||(temp>0x60))
return;
temp=(uint8)(*(QSM_RxRAM+2)) & 0x7F; // 分
if((temp==0)||(temp>0x60))
return;
temp=(uint8)(*(QSM_RxRAM+3)) & 0x3F; // 时
if((temp==0)||(temp>0x24))
return;
temp=(uint8)(*(QSM_RxRAM+5)) & 0x3F; //日
if((temp==0)||(temp>0x31))
return;
temp=(uint8)(*(QSM_RxRAM+6)) & 0x3F; //月
if((temp==0)||(temp>0x13))
return;
temp=(uint8)(*(QSM_RxRAM+7)) & 0xFF; //年
if((temp==0)||(temp>0x50))
return;
//
*ptr++ = (uint8)(*(QSM_RxRAM+1)) & 0x7F; // 秒
*ptr++ = (uint8)(*(QSM_RxRAM+2)) & 0x7F; // 分
*ptr++ = (uint8)(*(QSM_RxRAM+3)) & 0x3F; // 时
*ptr++ = (uint8)(*(QSM_RxRAM+5)) & 0x3F; // 读出 日
*ptr++ = (uint8)(*(QSM_RxRAM+6)) & 0x3F; // 读出 月
*ptr++ = (uint8)(*(QSM_RxRAM+7)) & 0xFF; // 读出 年
}
void Write_Clock(uint8 *ptr) // 向DS1306写时钟
{
uint8 sts;
Write_DS1306_enable(); // DS1306允许写命令
for (sts=0;sts<50;sts++);
asm (" MOVE.B $FFFC1F,D1"); // QSPI标志清零
asm (" MOVE.B #0,$FFFC1F");
*QSM_QPDR |= 0x10; // 使DS1306的片选PCS1输出高电平有效
*QSM_SPCR1=0x1407; // QSPI禁止、SCK之前延时20、SCK之后延时7
*QSM_SPCR0=0xA109; // QSPI主机方式、每次传送8位、速率 1Mbps
*QSM_SPCR2=0x0700; // 队列结束指针为7、队列开始指针为0,禁止中断、环绕
*QSM_SPCR3=0x00; // 禁止反馈路径、中断、暂停
ptr += 2;
*(QSM_TxRAM+0)=0x80; *(QSM_CmRAM+0)=0xBf; // 输出时钟地址字节
*(QSM_TxRAM+1)=*ptr++; *(QSM_CmRAM+1)=0xBf; // 输出时钟 秒
*(QSM_TxRAM+2)=*ptr++; *(QSM_CmRAM+2)=0xBf; // 输出时钟 分
*(QSM_TxRAM+3)=*ptr++; *(QSM_CmRAM+3)=0xBf; // 输出时钟 时
*(QSM_TxRAM+4)=1; *(QSM_CmRAM+4)=0xBf; // 输出时钟 星期
*(QSM_TxRAM+5)=*ptr++; *(QSM_CmRAM+5)=0xBf; // 输出时钟 日
*(QSM_TxRAM+6)=*ptr++; *(QSM_CmRAM+6)=0xBf; // 输出时钟 月
*(QSM_TxRAM+7)=*ptr++; *(QSM_CmRAM+7)=0x3f; // 输出时钟 年
/* *(QSM_TxRAM+0)=0x80; *(QSM_CmRAM+0)=0xB3; // 输出时钟地址字节
*(QSM_TxRAM+1)=*ptr++; *(QSM_CmRAM+1)=0xB3; // 输出时钟 秒
*(QSM_TxRAM+2)=*ptr++; *(QSM_CmRAM+2)=0xB3; // 输出时钟 分
*(QSM_TxRAM+3)=*ptr++; *(QSM_CmRAM+3)=0xB3; // 输出时钟 时
*(QSM_TxRAM+4)=1; *(QSM_CmRAM+4)=0xB3; // 输出时钟 星期
*(QSM_TxRAM+5)=*ptr++; *(QSM_CmRAM+5)=0xB3; // 输出时钟 日
*(QSM_TxRAM+6)=*ptr++; *(QSM_CmRAM+6)=0xB3; // 输出时钟 月
*(QSM_TxRAM+7)=*ptr++; *(QSM_CmRAM+7)=0x33; // 输出时钟 年
*/
*QSM_SPCR1=0x9407; // QSPI允许
while ((*QSM_SPSR&0x80)==00); // 等待传输完成
*QSM_QPDR &= 0xEF; // 使DS1306的片选PCS1输出低电平无效
for (sts=0;sts<100;sts++);
Write_DS1306_disable(); // DS1306禁止写命令
for (sts=0;sts<100;sts++);
}
void DS1306_initialize()
{
uint16 i,j;
for(i=0;i<50;i++)
{
Write_DS1306_enable(); // DS1306允许写命令
// Write_DS1306(0x80,0x00); // 初始化
Write_DS1306(0x87,0x80); // 秒
Write_DS1306(0x88,0x80); // 分
Write_DS1306(0x89,0x80 ); // 时
Write_DS1306(0x8A,0x81); // 日
// Write_DS1306(0x8f,0x01); // enable alarm0
Write_DS1306(0x91,0x00); // BUBY 2003 12 4
Write_DS1306_disable(); // DS1306禁止写命令
if(Read_DS1306(0x0f)==0x40) // 试验
break;
else
for(j=0;j<1000;j++);
}
}
void XTR108_1() // XTR108选择第一路温度测量(300us)
{
uint8 sts;
asm (" MOVE.B $FFFC1F,D1"); // QSPI标志清零
asm (" MOVE.B #0,$FFFC1F");
*QSM_SPCR1=0x1407; // QSPI禁止、SCK之前延时20、SCK之后延时7
*QSM_SPCR0=0xA011; // QSPI主机方式、每次传送8位、速率 1Mbps
*QSM_SPCR2=0x0e00; // 队列结束指针为8、队列开始指针为0,禁止中断、环绕
*QSM_SPCR3=0x00; // 禁止反馈路径、中断、暂停
*QSM_QPDR |= 0x40; //
*(QSM_TxRAM+0) =0x00; *(QSM_CmRAM+0)=0xB5; // 输出数据
*(QSM_TxRAM+1) =0x80; *(QSM_CmRAM+1)=0x35; // 输出数据
//
*(QSM_TxRAM+2) =0x04; *(QSM_CmRAM+2)=0xB5; // 输出数据(地址)
*(QSM_TxRAM+3) =0x01; *(QSM_CmRAM+3)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+4) =0x0f; *(QSM_CmRAM+4)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+5) =0x04; *(QSM_CmRAM+5)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+6) =0x00; *(QSM_CmRAM+6)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+7) =0x04; *(QSM_CmRAM+7)=0xB5; // 输出数据(数据),0-5
*(QSM_TxRAM+8) =0x04; *(QSM_CmRAM+8)=0xB5; // 输出数据(数据),0-5
*(QSM_TxRAM+9) =0x00; *(QSM_CmRAM+9) =0xB5; // 输出数据(数据)
*(QSM_TxRAM+10)=0x00; *(QSM_CmRAM+10)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+11)=0x00; *(QSM_CmRAM+11)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+12)=0x00; *(QSM_CmRAM+12)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+13)=0x00; *(QSM_CmRAM+13)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+14)=0xe3; *(QSM_CmRAM+14)=0x35; // 输出数据(数据)
*QSM_SPCR1=0x9407; // QSPI允许
for (sts=0;sts<10;sts++);
while ((*QSM_SPSR&0x80)==00); // 等待传输完成
//*QSM_QPDR &= 0xEF;
}
void XTR108_2() // XTR108选择第一路温度测量
{
uint8 sts;
asm (" MOVE.B $FFFC1F,D1"); // QSPI标志清零
asm (" MOVE.B #0,$FFFC1F");
*QSM_SPCR1=0x1407; // QSPI禁止、SCK之前延时20、SCK之后延时7
*QSM_SPCR0=0xA011; // QSPI主机方式、每次传送8位、速率 1Mbps
*QSM_SPCR2=0x0e00; // 队列结束指针为8、队列开始指针为0,禁止中断、环绕
*QSM_SPCR3=0x00; // 禁止反馈路径、中断、暂停
*QSM_QPDR |= 0x40;
*(QSM_TxRAM+0) =0x00; *(QSM_CmRAM+0)=0xB5; // 输出数据
*(QSM_TxRAM+1) =0x80; *(QSM_CmRAM+1)=0x35; // 输出数据
*(QSM_TxRAM+2) =0x04; *(QSM_CmRAM+2)=0xB5; // 输出数据(地址)
*(QSM_TxRAM+3) =0x01; *(QSM_CmRAM+3)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+4) =0x0f; *(QSM_CmRAM+4)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+5) =0x04; *(QSM_CmRAM+5)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+6) =0x00; *(QSM_CmRAM+6)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+7) =0x14; *(QSM_CmRAM+7)=0xB5; // 输出数据(数据),0-5
*(QSM_TxRAM+8) =0x14; *(QSM_CmRAM+8)=0xB5; // 输出数据(数据),0-5
*(QSM_TxRAM+9) =0x00; *(QSM_CmRAM+9) =0xB5; // 输出数据(数据)
*(QSM_TxRAM+10)=0x00; *(QSM_CmRAM+10)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+11)=0x00; *(QSM_CmRAM+11)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+12)=0x00; *(QSM_CmRAM+12)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+13)=0x00; *(QSM_CmRAM+13)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+14)=0xc3; *(QSM_CmRAM+14)=0x35; // 输出数据(数据)
*QSM_SPCR1=0x9407; // QSPI允许
for (sts=0;sts<10;sts++);
while ((*QSM_SPSR&0x80)==00); // 等待传输完成
//*QSM_QPDR &= 0xEF;
}
void XTR108_3() // XTR108选择第一路温度测量
{
uint8 sts;
asm (" MOVE.B $FFFC1F,D1"); // QSPI标志清零
asm (" MOVE.B #0,$FFFC1F");
*QSM_SPCR1=0x1407; // QSPI禁止、SCK之前延时20、SCK之后延时7
*QSM_SPCR0=0xA011; // QSPI主机方式、每次传送8位、速率 1Mbps
*QSM_SPCR2=0x0e00; // 队列结束指针为8、队列开始指针为0,禁止中断、环绕
*QSM_SPCR3=0x00; // 禁止反馈路径、中断、暂停
*QSM_QPDR |= 0x40; //
*(QSM_TxRAM+0) =0x00; *(QSM_CmRAM+0)=0xB5; // 输出数据
*(QSM_TxRAM+1) =0x80; *(QSM_CmRAM+1)=0x35; // 输出数据
*(QSM_TxRAM+2) =0x04; *(QSM_CmRAM+2)=0xB5; // 输出数据(地址)
*(QSM_TxRAM+3) =0x01; *(QSM_CmRAM+3)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+4) =0x0f; *(QSM_CmRAM+4)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+5) =0x04; *(QSM_CmRAM+5)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+6) =0x00; *(QSM_CmRAM+6)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+7) =0x24; *(QSM_CmRAM+7)=0xB5; // 输出数据(数据),0-5
*(QSM_TxRAM+8) =0x24; *(QSM_CmRAM+8)=0xB5; // 输出数据(数据),0-5
*(QSM_TxRAM+9) =0x00; *(QSM_CmRAM+9) =0xB5; // 输出数据(数据)
*(QSM_TxRAM+10)=0x00; *(QSM_CmRAM+10)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+11)=0x00; *(QSM_CmRAM+11)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+12)=0x00; *(QSM_CmRAM+12)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+13)=0x00; *(QSM_CmRAM+13)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+14)=0xa3; *(QSM_CmRAM+14)=0x35; // 输出数据(数据)
*QSM_SPCR1=0x9407; // QSPI允许
for (sts=0;sts<10;sts++);
while ((*QSM_SPSR&0x80)==00); // 等待传输完成
//*QSM_QPDR &= 0xEF;
}
void XTR108_4() // XTR108选择第一路温度测量
{
uint8 sts;
asm (" MOVE.B $FFFC1F,D1"); // QSPI标志清零
asm (" MOVE.B #0,$FFFC1F");
*QSM_SPCR1=0x1407; // QSPI禁止、SCK之前延时20、SCK之后延时7
*QSM_SPCR0=0xA011; // QSPI主机方式、每次传送8位、速率 1Mbps
*QSM_SPCR2=0x0e00; // 队列结束指针为8、队列开始指针为0,禁止中断、环绕
*QSM_SPCR3=0x00; // 禁止反馈路径、中断、暂停
*QSM_QPDR |= 0x40;
*(QSM_TxRAM+0) =0x00; *(QSM_CmRAM+0)=0xB5; // 输出数据
*(QSM_TxRAM+1) =0x80; *(QSM_CmRAM+1)=0x35; // 输出数据
*(QSM_TxRAM+2) =0x04; *(QSM_CmRAM+2)=0xB5; // 输出数据(地址)
*(QSM_TxRAM+3) =0x01; *(QSM_CmRAM+3)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+4) =0x0f; *(QSM_CmRAM+4)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+5) =0x04; *(QSM_CmRAM+5)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+6) =0x00; *(QSM_CmRAM+6)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+7) =0x34; *(QSM_CmRAM+7)=0xB5; // 输出数据(数据),0-5
*(QSM_TxRAM+8) =0x34; *(QSM_CmRAM+8)=0xB5; // 输出数据(数据),0-5
*(QSM_TxRAM+9) =0x00; *(QSM_CmRAM+9) =0xB5; // 输出数据(数据)
*(QSM_TxRAM+10)=0x00; *(QSM_CmRAM+10)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+11)=0x00; *(QSM_CmRAM+11)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+12)=0x00; *(QSM_CmRAM+12)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+13)=0x00; *(QSM_CmRAM+13)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+14)=0x83; *(QSM_CmRAM+14)=0x35; // 输出数据(数据)
*QSM_SPCR1=0x9407; // QSPI允许
for (sts=0;sts<10;sts++);
while ((*QSM_SPSR&0x80)==00); // 等待传输完成
//*QSM_QPDR &= 0xEF;
}
void XTR108_5() // XTR108选择第一路温度测量
{
uint8 sts;
asm (" MOVE.B $FFFC1F,D1"); // QSPI标志清零
asm (" MOVE.B #0,$FFFC1F");
*QSM_SPCR1=0x1407; // QSPI禁止、SCK之前延时20、SCK之后延时7
*QSM_SPCR0=0xA011; // QSPI主机方式、每次传送8位、速率 1Mbps
*QSM_SPCR2=0x0e00; // 队列结束指针为8、队列开始指针为0,禁止中断、环绕
*QSM_SPCR3=0x00; // 禁止反馈路径、中断、暂停
*QSM_QPDR |= 0x40;
*(QSM_TxRAM+0) =0x00; *(QSM_CmRAM+0)=0xB5; // 输出数据
*(QSM_TxRAM+1) =0x80; *(QSM_CmRAM+1)=0x35; // 输出数据
*(QSM_TxRAM+2) =0x04; *(QSM_CmRAM+2)=0xB5; // 输出数据(地址)
*(QSM_TxRAM+3) =0x01; *(QSM_CmRAM+3)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+4) =0x0f; *(QSM_CmRAM+4)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+5) =0x04; *(QSM_CmRAM+5)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+6) =0x00; *(QSM_CmRAM+6)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+7) =0x45; *(QSM_CmRAM+7)=0xB5; // 输出数据(数据),0-5
*(QSM_TxRAM+8) =0x45; *(QSM_CmRAM+8)=0xB5; // 输出数据(数据),0-5
*(QSM_TxRAM+9) =0x00; *(QSM_CmRAM+9) =0xB5; // 输出数据(数据)
*(QSM_TxRAM+10)=0x00; *(QSM_CmRAM+10)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+11)=0x00; *(QSM_CmRAM+11)=0xB5; // 输出数据(数据)
*(QSM_TxRAM+12)=0x00; *(QSM_CmRAM+12)=0xB5; // 输出数据(数据)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -