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

📄 main.c

📁 凌阳机的模组spi串口红外传感器的接口电路及c语言的程序!没有密码!
💻 C
字号:
//===============================================================
//
//        The information contained herein is the exclusive property of
//      Sunplus Technology Co. And shall not be distributed, reproduced,
//      or disclosed in whole in part without prior written permission.
//
//            (C) COPYRIGHT 2001   SUNPLUS TECHNOLOGY CO.
//                           ALL RIGHTS RESERVED
//
//    The entire notice above must be reproduced on all authorized copies.
//
//==============================================================
//============================================================
//  工程名称:infearedthermommeter
//  作者:   (email: xinyan@sunnorth.com.cn)    
//  联系方式: 010-62981668-2919
//  适应芯片: SPCE061A
//  实现功能:  多功能提醒器
//
//  系统要求: PC with CPU 233MHz,128MB RAM,
//            SUNPLUS u'nSPTM  IDE 1.6.2(or later)
//
//   涉及的库:(a) C-Lib:  (CMacro.lib);
//            (b) SACM-Lib: SacmV26.lib
//
// 组成文件:
//     main.c
//     boot.asm/hardware.asm 
//     drive.c/isr.c/iKey.c/voice.c
// 连接:
//		V-->3.3v
//		D-->IOA15
//		C-->IOB8
//		G-->GND
//		A-->Key-->GND
//
//  当前版本:  V1.0
//  日期:  2002-11-19
//  
//  参考文件:
//  维护记录:
//--------------------------------------------------------------------------------------------------------
//  Version   YYYY-MM-DD-INDEX   Modified By         Description
//  V1.0.0     2004-11-19         by Xinyan Liu      update fix bug of …add SpeedContol 
//===============================================



#define ClearWDog   (*((volatile unsigned char *) 0x7012))=1
#define	P_IOA_Data 				(volatile unsigned int *)0x7000 
#define P_IOB_Buffer			(volatile unsigned int *)0x7006   
#define P_IOB_Data				(volatile unsigned int *)0x7005 
unsigned int uiFlag[16],uiSum=0,uiClock=1,uiSumFlag=0,uiWR=0;
//========================================================================================
//函数名称 :    F_Tempplay(float temp)
//描述     :   温度播报函数
//入口参数 :   温度
//出口     :   无
//========================================================================================
void F_Tempplay(float temp)
{
	int iShow[6];									//播报数存储数组
	temp=temp*100;
	iShow[5]=temp/10000;
	iShow[4]=(temp/1000);
	iShow[4]=iShow[4]%10;
	iShow[3]=(temp/100);
    iShow[3]=iShow[3]%10;
	iShow[2]=(temp/10);
	iShow[2]=iShow[2]%10;
	iShow[1]=(temp);
	iShow[1]=iShow[1]%10;
//	F_PlayS480(11);
	if(iShow[5]!=0) 
	{
	play(iShow[5]);
	F_PlayS480(15);
	}
	if(iShow[4]!=0) 
	{
	play(iShow[4]);
	F_PlayS480(10);
	}
	else F_PlayS480(0);
	play(iShow[3]);
	F_PlayS480(14);
	play(iShow[2]);
	play(iShow[1]);
	F_PlayS480(18);

}
//========================================================================================
//函数名称 :    main()
//描述     :   主函数
//入口参数 :   无
//出口     :   无
//========================================================================================
main()
{
	int i,j,k,TData=0,iKey=0,iKeyture=0,Item,MSB,LSB,SUM,CR,iFlag=0,iTest[10],iDataFlag=0,iShow[6],iLastFlag=0;
	float temp,temp1;
	F_IOSET();
	F_IrqInti();
	i=0;
	i=*P_IOB_Buffer;
	i=i|0x0100;
	*P_IOB_Data=i;
	i=0;
	i=*P_IOB_Buffer;
	i=i|0x0200;
	*P_IOB_Data=i;
 	while(1)
	{
	ClearWDog;

	if(uiSum==0xaaaa) 												//开始一帧数据接收	
	{

	iTest[0]=uiFlag[0]|uiFlag[1]|uiFlag[2]|uiFlag[3]|uiFlag[4]|uiFlag[5]|uiFlag[6]|uiFlag[7]|uiFlag[8]|uiFlag[9]|uiFlag[10]|uiFlag[11]|uiFlag[12]|uiFlag[13]|uiFlag[14]|uiFlag[15];
	uiSum=0;
	if((iTest[0]&0xff)!=0&&(iTest[0]&0xff00)!=0xff00)
	{

	uiSum=0;
	while(uiSum!=0xaaaa)ClearWDog;
	iTest[1]=uiFlag[0]|uiFlag[1]|uiFlag[2]|uiFlag[3]|uiFlag[4]|uiFlag[5]|uiFlag[6]|uiFlag[7]|uiFlag[8]|uiFlag[9]|uiFlag[10]|uiFlag[11]|uiFlag[12]|uiFlag[13]|uiFlag[14]|uiFlag[15];
	uiSum=0;
	while(uiSum!=0xaaaa)ClearWDog;
	iTest[2]=uiFlag[0]|uiFlag[1]|uiFlag[2]|uiFlag[3]|uiFlag[4]|uiFlag[5]|uiFlag[6]|uiFlag[7]|uiFlag[8]|uiFlag[9]|uiFlag[10]|uiFlag[11]|uiFlag[12]|uiFlag[13]|uiFlag[14]|uiFlag[15];
	uiSum=0;
	while(uiSum!=0xaaaa)ClearWDog;
	iTest[3]=uiFlag[0]|uiFlag[1]|uiFlag[2]|uiFlag[3]|uiFlag[4]|uiFlag[5]|uiFlag[6]|uiFlag[7]|uiFlag[8]|uiFlag[9]|uiFlag[10]|uiFlag[11]|uiFlag[12]|uiFlag[13]|uiFlag[14]|uiFlag[15];
	uiSum=0;
	while(uiSum!=0xaaaa)ClearWDog;
	iTest[4]=uiFlag[0]|uiFlag[1]|uiFlag[2]|uiFlag[3]|uiFlag[4]|uiFlag[5]|uiFlag[6]|uiFlag[7]|uiFlag[8]|uiFlag[9]|uiFlag[10]|uiFlag[11]|uiFlag[12]|uiFlag[13]|uiFlag[14]|uiFlag[15];
	
	 i=0;
	i=*P_IOB_Buffer;
	i=i|0x0200;
	*P_IOB_Data=i;
	if(uiWR==1)												  //确定写入数据
	{
	while(uiSum!=0xaaaa)ClearWDog;
	iTest[1]=uiFlag[0]|uiFlag[1]|uiFlag[2]|uiFlag[3]|uiFlag[4]|uiFlag[5]|uiFlag[6]|uiFlag[7]|uiFlag[8]|uiFlag[9]|uiFlag[10]|uiFlag[11]|uiFlag[12]|uiFlag[13]|uiFlag[14]|uiFlag[15];
	while(uiSum!=0xaaaa)ClearWDog;
	iTest[2]=uiFlag[0]|uiFlag[1]|uiFlag[2]|uiFlag[3]|uiFlag[4]|uiFlag[5]|uiFlag[6]|uiFlag[7]|uiFlag[8]|uiFlag[9]|uiFlag[10]|uiFlag[11]|uiFlag[12]|uiFlag[13]|uiFlag[14]|uiFlag[15];
	while(uiSum!=0xaaaa)ClearWDog;
	iTest[3]=uiFlag[0]|uiFlag[1]|uiFlag[2]|uiFlag[3]|uiFlag[4]|uiFlag[5]|uiFlag[6]|uiFlag[7]|uiFlag[8]|uiFlag[9]|uiFlag[10]|uiFlag[11]|uiFlag[12]|uiFlag[13]|uiFlag[14]|uiFlag[15];
	while(uiSum!=0xaaaa)ClearWDog;
	iTest[4]=uiFlag[0]|uiFlag[1]|uiFlag[2]|uiFlag[3]|uiFlag[4]|uiFlag[5]|uiFlag[6]|uiFlag[7]|uiFlag[8]|uiFlag[9]|uiFlag[10]|uiFlag[11]|uiFlag[12]|uiFlag[13]|uiFlag[14]|uiFlag[15];
	while(uiSum!=0xaaaa)ClearWDog;
	iTest[5]=uiFlag[0]|uiFlag[1]|uiFlag[2]|uiFlag[3]|uiFlag[4]|uiFlag[5]|uiFlag[6]|uiFlag[7]|uiFlag[8]|uiFlag[9]|uiFlag[10]|uiFlag[11]|uiFlag[12]|uiFlag[13]|uiFlag[14]|uiFlag[15];
	while(uiSum!=0xaaaa)ClearWDog;
	iTest[6]=uiFlag[0]|uiFlag[1]|uiFlag[2]|uiFlag[3]|uiFlag[4]|uiFlag[5]|uiFlag[6]|uiFlag[7]|uiFlag[8]|uiFlag[9]|uiFlag[10]|uiFlag[11]|uiFlag[12]|uiFlag[13]|uiFlag[14]|uiFlag[15];
	while(uiSum!=0xaaaa)ClearWDog;
	iTest[7]=uiFlag[0]|uiFlag[1]|uiFlag[2]|uiFlag[3]|uiFlag[4]|uiFlag[5]|uiFlag[6]|uiFlag[7]|uiFlag[8]|uiFlag[9]|uiFlag[10]|uiFlag[11]|uiFlag[12]|uiFlag[13]|uiFlag[14]|uiFlag[15];
	}
	uiSum=0;													//计算最终温度值
	uiSumFlag=0;
	if((iTest[4]&0xf000)==0xf000)
	{
    iDataFlag++;
	Item=(iTest[0]&0xff00)>>8;
	MSB=(iTest[0]&0x00ff);
	LSB=(iTest[1]&0xff00)>>8;
	SUM=(iTest[1]&0x00ff);
	CR=(iTest[2]&0xff00)>>8;
	asm("int off\n");
	for(i=0;i<0xff;i++);
	if(Item==0x66&&CR==0x0d)
	{
	 iLastFlag=1;
	 temp1=((MSB<<8)|LSB);
	 temp1=temp1/16;
	 temp1=temp1-273.15;    
	 asm("int fiq,irq\n");
	}
	if(Item==0x4c&&CR==0x0d)
	{
	 temp=((MSB<<8)|LSB);
	 temp=temp/16;
	 temp=temp-273.15;
	 if(iLastFlag==1)
	 {
	 F_PlayS480(11);
	 F_PlayS480(16);
 	 F_Tempplay(temp1);

	 }
	 F_PlayS480(17);
	 F_Tempplay(temp);
	 asm("int fiq,irq\n");

	}
}
}

	}
   	asm("int fiq,irq\n");
	if(*P_IOA_Data&0x0001) iKey++;
	if(iKey>0xf0) iKeyture=1;
	switch(iKeyture)														
	{															//确定有键按下
	case 0x0001:
	uiSum=0;
	i=*P_IOB_Buffer;
	i=i&0xfdff;
	*P_IOB_Data=i;
	iKey=0;
	iKeyture=0;
	break;
	case 0x0000:	
	break;
	default:
    break;
	}
	}


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -