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

📄 编辑2

📁 一个完整的用用AVR单片机开发的电话交换机程序 希望对想学习AVR开发人有帮助
💻
字号:
			if(ReadCCS(CCS_step)==0x02) 	
				{//传送正确
					if(temp==ReadCCS(CCS_type))
						{
							WriteCCS(CCS_step,0x03);	
							return;
						}									
					else
						{//传送错误
							WriteCCS(CCS_step,0x01);
							return;
						}	
				}
			//验证发送命令字************************
			if(ReadCCS(CCS_step)==0x04)	
				{//传送正确
					if(temp==ReadCCS(CCS_command))
						{
							WriteCCS(CCS_step,0x05);	
							return;
						}					
					else
						{//传送错误
							WriteCCS(CCS_step,0x01);
							return;
						}
				}					
				
			//验证发送数据**************************
			if(ReadCCS(CCS_step)==0x06)	
				{//传送正确
					if(temp==ReadCCS(CCS_data5))
						{
							WriteCCS(CCS_step,0x07);	
							return;				
						}
					else
						{//传送错误
							WriteCCS(CCS_step,0x01);
							return;
						}
				}
				
			if(ReadCCS(CCS_step)==0x08)	
				{//传送正确
					if(temp==ReadCCS(CCS_data4))
						{
							WriteCCS(CCS_step,0x09);	
							return;				
						}
					else
						{//传送错误
							WriteCCS(CCS_step,0x01);
							return;
						}
				}	
				
			if(ReadCCS(CCS_step)==0x0a)	
				{//传送正确
					if(temp==ReadCCS(CCS_data3))
						{
							WriteCCS(CCS_step,0x0b);	
							return;				
						}
					else
						{//传送错误
							WriteCCS(CCS_step,0x01);
							return;
						}
				}
					
			if(ReadCCS(CCS_step)==0x0c)	
				{//传送正确
					if(temp==ReadCCS(CCS_data2))
						{
							WriteCCS(CCS_step,0x0d);	
							return;				
						}
					else
						{//传送错误
							WriteCCS(CCS_step,0x01);
							return;
						}
				}
				
			if(ReadCCS(CCS_step)==0x0e)	
				{//传送正确
					if(temp==ReadCCS(CCS_data1))
						{
							WriteCCS(CCS_step,0x0f);	
							return;				
						}
					else
						{//传送错误
							WriteCCS(CCS_step,0x01);
							return;
						}
				}
				
			if(ReadCCS(CCS_step)==0x10)	
				{//传送正确
					if(temp==ReadCCS(CCS_data0))
						{
							WriteCCS(CCS_step,0x11);	
							return;				
						}
					else
						{//传送错误
							WriteCCS(CCS_step,0x01);
							return;
						}
				}	
						
			//rs232write(temp);					
			//接收控制		 
			if(temp==RECETYPE)
				{							
					WriteCCR(CCR_type,RECETYPE);
					WriteCCR(CCR_step,0x01);
					rs232write(temp);
					return;
				}
			
			//rs232write(temp);
			if(ReadCCR(CCR_step)==0x01)					
				{
					WriteCCR(CCR_command,temp);
					WriteCCR(CCR_step,0x02);
					rs232write(temp);
					return;
				}			
			if(ReadCCR(CCR_step)==0x02)					
				{
					WriteCCR(CCR_data1,temp);
					WriteCCR(CCR_step,0x03);
					rs232write(temp);
					return;
				}
			if(ReadCCR(CCR_step)==0x03)					
				{
					WriteCCR(CCR_data0,temp);
					WriteCCR(CCR_step,0x04);
					rs232write(temp);
					return;
				}																																		
		}










void	ConSendCommand()
{
	if(ReadCCS(CCS_step)==0x01)
		{
			rs232write(ReadCCS(CCS_type));	//发送数据包头
			WriteCCS(CCS_step,0x02);
			return;
		}
	if(ReadCCS(CCS_step)==0x03)
		{
			rs232write(ReadCCS(CCS_command));	//发送命令字
			WriteCCS(CCS_step,0x04);
			return;
		}
		
	if(ReadCCS(CCS_step)==0x05)
		{		
			if(ReadCCS(CCS_command)==0x01)
				{//长数据包					
					rs232write(ReadCCS(CCS_data5));	//发送数据
					WriteCCS(CCS_step,0x06);					
				}
			else
				{//断数据包
					CCSInit();	//发送成功,还原资源		
					return;			
				}	
		}
		
	if(ReadCCS(CCS_step)==0x07)
		{
			rs232write(ReadCCS(CCS_data4));		//发送数据
			WriteCCS(CCS_step,0x08);
			return;
		}		
	if(ReadCCS(CCS_step)==0x09)
		{
			rs232write(ReadCCS(CCS_data3));		//发送数据
			WriteCCS(CCS_step,0x0a);
			return;
		}	
	if(ReadCCS(CCS_step)==0x0b)
		{
			rs232write(ReadCCS(CCS_data2));		//发送数据
			WriteCCS(CCS_step,0x0c);
			return;
		}	
	if(ReadCCS(CCS_step)==0x0d)
		{
			rs232write(ReadCCS(CCS_data1));		//发送数据
			WriteCCS(CCS_step,0x0e);
			return;
		}	
	if(ReadCCS(CCS_step)==0x0f)
		{
			rs232write(ReadCCS(CCS_data0));		//发送数据
			WriteCCS(CCS_step,0x10);
			return;
		}
	if(ReadCCS(CCS_step)==0x11)		
		{
			CCSInit();	//发送成功,还原资源		
			return;	
		}								
}
	
	
	
	
	
	
	if(ReadCCR(CCR_step)==0x02)					
		{
			if(ReadCCR(CCR_command)==0x01)
				{//长数据包
					return;
				}
			else
				{//短数据包
					if(ReadCCR(CCR_command)==0x02)
						{//退出智能系统
/*测试代码
							WriteCCS(CCS_type,SENDTYPE);
							WriteCCS(CCS_command,0x01);
							WriteCCS(CCS_data5,0x11);
							WriteCCS(CCS_data4,0x22);
							WriteCCS(CCS_data3,0x33);
							WriteCCS(CCS_data2,0x44);
							WriteCCS(CCS_data1,0x55);
							WriteCCS(CCS_data0,0x66);
							WriteCCS(CCS_step,0x01);	//发送送命令
*/							
							CCRInit();
							return;
						}
						
					if(ReadCCR(CCR_command)==0x03)
						{//智能家居已准备好
							CCRInit();
							return;
						}		

					if(ReadCCR(CCR_command)==0x11)
						{//智能家居未准备好
							CCRInit();
							return;
						}	
					if(ReadCCR(CCR_command)==0x12)
						{//APBUS枪线
							CCRInit();
							return;
						}		
					if(ReadCCR(CCR_command)==0x13)
						{//查询主控状态							
							CCRInit();
							if(ReadSYSTEM(sp_SystemState)==c_SS_none)
								{//交换机空闲状态
									WriteCCS(CCS_type,SENDTYPE);
									WriteCCS(CCS_command,0x21);	//空闲状态
									WriteCCS(CCS_step,0x01);		//启动发送过程
									return;
								}
							if(ReadSYSTEM(sp_SystemState)==c_SS_intoautosystem)
								{//内线进入智能家具系统
									WriteCCS(CCS_type,SENDTYPE);
									WriteCCS(CCS_command,0x03);	//内线进入智能家具系统
									WriteCCS(CCS_step,0x01);		//启动发送过程
									
									return;
								}							
						}																		
				}	
			return;	
		}
		
	if(ReadCCR(CCR_step)==0x04)					
		{	
			if(ReadCCR(CCR_command)==0x01)
				{//长数据包
/*测试代码					
							WriteCCS(CCS_type,SENDTYPE);
							WriteCCS(CCS_command,0x01);
							WriteCCS(CCS_data5,ReadCCR(CCR_data1));
							WriteCCS(CCS_data4,ReadCCR(CCR_data0));
							WriteCCS(CCS_data3,0x33);
							WriteCCS(CCS_data2,0x44);
							WriteCCS(CCS_data1,0x55);
							WriteCCS(CCS_data0,0x66);
							WriteCCS(CCS_step,0x01);	//发送送命令					
*/				
					//读取电话铃声的数目
					temp=ReadCCR(CCR_data1);
					temp=(temp>>4)*10+((ReadCCR(CCR_data1)<<4)>>4);
					WriteSYSTEM(sp_TakeLineOutside,ReadCCR(CCR_data1));	
					temp=ReadCCR(CCR_data0);
					temp=(temp>>4)*10+((ReadCCR(CCR_data0)<<4)>>4);						
					WriteSYSTEM(sp_TakeLineAtHome,ReadCCR(CCR_data0));		
					CCRInit();
					return;
				}
			else
				{//错误数据,丢弃
					CCRInit();
					return;
				}				
		}
		
		
		
		
		
		
		
	if(ReadCCR(CCR_step)==0)
				{
					if(temp==0xD0)
						{//查询状态
							if(ReadSYSTEM(sp_SystemState)==c_SS_none)
								{//交换机空闲状态
									rs232write(0x21);
									return;
								}
							if(ReadSYSTEM(sp_SystemState)==c_SS_intoautosystem)			
								{
									rs232write(0x03);
									return;	
								}				
						}
					if(temp==0xD1)
						{//电话铃声
							rs232write(temp);
							WriteCCR(CCR_step,1);
							return;
						}	
				}
			if(ReadCCR(CCR_step)==1)
				{
							WriteCCR(CCR_step,2);
							return;					
				}
			if(ReadCCR(CCR_step)==2)
				{
							WriteCCR(CCR_step,0);
							return;					
				}						

⌨️ 快捷键说明

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