⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lib.c

📁 各种实用的子程序
💻 C
📖 第 1 页 / 共 5 页
字号:
	*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 + -