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

📄 main.c

📁 基于HMS7202的波形发生器源程序
💻 C
📖 第 1 页 / 共 2 页
字号:
    			
    			while(1)
    			{
    			  if(KeyValue==27)//设置AM的调制频率
    			  {
    				ser_printf("\n设置AM的调制频率: ");
    				oldModemFreq = ModemFreq;
    				ModemFreq = readfreq();
    				if(ModemFreq==0)
    				{
    					ModemFreq = oldModemFreq;
    					ser_printf("\n取消调制频率设置\n");
    				}
    				else
    				{
    					ser_printf("%10d\n",ModemFreq);
    				}
    				SampFreq = ModemFreq * 0x200;
    				AmCMD.Am[12] = SampFreq&0xffff;
    				AmCMD.Am[13] = (SampFreq>>16)&0xffff;
    			  }
    			  else if(KeyValue ==26)//设置AM的调制深度
    		  	  {
    				ser_printf("\n设置AM的调制深度: ");
    				moddepth = readratio();
    				AmCMD.Am[0] = moddepth;
    			  }
    			  else if(KeyValue == 28)//设置AM调制波形
    		 	  {
    				ser_printf("\n只能选择正弦波调制!\n");
    			  }
    			  else if(KeyValue == 29)//设置AM调制源
    			  {
    				ser_printf("\n设置AM调制源:");
    				amsource=1;//默认为内AM
    				while(1)
    				{
    					if((KeyValue=Get_Key())==29)
    					{
    						amsource = (amsource+1)%2;
    						//lcd 交替显示内AM,外AM
    						if(amsource==1)
    							ser_printf("内\n");
    						else
    							ser_printf("外\n");
    					}		
    					else if(KeyValue==24)//按output才退出
    						break;
    				}
    				if(amsource==1)
    					pCurrentWave->m_WFreMode=1;
    				else
    					pCurrentWave->m_WFreMode=0;
    			  }
    			  else if(KeyValue == 24)//按output才退出
    				break;
    			 //按其他键,则无效
    			 KeyValue = Get_Key();
    			}//while end
    				
    			break;
    		case 1://FM
    		    pCurrentWave = &FmCMD.head;
    		    
    			while(1)
    			{
    			 if(KeyValue==27)//设置FM的调制频率
    			  {
    				ser_printf("\n设置FM的调制频率: ");
    				oldModemFreq = ModemFreq;
    				ModemFreq = readfreq();
    				if(ModemFreq==0)
    				{
    					ModemFreq = oldModemFreq;
    					ser_printf("\n取消调制频率设置\n");
    				}
    				else
    				{
    					ser_printf("%10d\n",ModemFreq);
    				}
    				SampFreq = ModemFreq * 0x200;
    				FmCMD.Fm[12] = SampFreq&0xffff;
    				FmCMD.Fm[13] = (SampFreq>>16)&0xffff;
    			  }
    			  else if(KeyValue ==26)//设置FM的调制频偏
    		  	  {
    				ser_printf("\n设置FM的调制频偏:");
    				oldDeviaFreq = DeviaFreq;
    				DeviaFreq = readfreq();
    				if(DeviaFreq == 0)
    				{
    					DeviaFreq = oldDeviaFreq;
    					ser_printf("\n取消FM的调制频率设置\n");
    				}
    				if(DeviaFreq>100*ModemFreq)  DeviaFreq = 100*ModemFreq;
    				FmCMD.Fm[0] = moddepth & 0xffff;
    				FmCMD.Fm[1] = (moddepth>>16) & 0xffff;
    			  }
    		      else if(KeyValue == 28)//设置FM调制波形
    		 	  {
    				ser_printf("\n只能选择正弦波调制!\n");
    			  }
    			  else if(KeyValue == 29)//设置FM调制源
    			  {
    				ser_printf("\n设置FM调制源: ");
    				amsource=1;//默认为内FM
    				while(1)
    				{
    					if((KeyValue=Get_Key())==29)
    					{
    						amsource = (amsource+1)%2;
    						//lcd 交替显示内FM,外FM
    						if(amsource==1)
    							ser_printf("内\n");
    						else
    							ser_printf("外\n");
    					}
    					else if(KeyValue==24)//按output才退出
    						break;	
    				}
    				
    				if(amsource==1)
    					pCurrentWave->m_WFreMode=1;
    				else
    					pCurrentWave->m_WFreMode=0;
    			  }
    			  else if(KeyValue == 24)//按output才退出
    				break;
    			 //按其他键,则无效
    			 KeyValue = Get_Key();
    			}//while end
    			break;
    			
    	/*	case 2://FSK
    			pCurrentWave = &FskCMD.head;
    			
    			while(1)
    			{
    			 if(KeyValue==27)//设置FSK的跳变频率
    			  {
    				ser_printf("\n设置FSK的跳变频率: ");
    				oldModemFreq = ModemFreq;
    				ModemFreq = readfreq();
    				if(ModemFreq==0)
    				{
    					ModemFreq = oldModemFreq;
    					ser_printf("\n取消跳变频率设置\n");
    				}
    				else
    				{
    					ser_printf("%10d\n",ModemFreq);
    				}
    				
    				SampFreq = ModemFreq * 0x200;
    				FmCMD.Fm[12] = SampFreq&0xffff;
    				FmCMD.Fm[13] = (SampFreq>>16)&0xffff;
    			  }
    			  else if(KeyValue ==26)//设置FM的调制频偏
    		  	  {
    				ser_printf("\n设置FM的调制频偏:");
    				oldDeviaFreq = DeviaFreq;
    				DeviaFreq = readfreq();
    				if(DeviaFreq == 0)
    				{
    					DeviaFreq = oldDeviaFreq;
    					ser_printf("\n取消FM的调制频率设置\n");
    				}
    				if(DeviaFreq>100*ModemFreq)  DeviaFreq = 100*ModemFreq;
    				FmCMD.Fm[0] = moddepth & 0xffff;
    				FmCMD.Fm[1] = (moddepth>>16) & 0xffff;
    			  }
    		      else if(KeyValue == 28)//设置FM调制波形
    		 	  {
    				ser_printf("\n只能选择正弦波调制!\n");
    			  }
    			  else if(KeyValue == 29)//设置FM调制源
    			  {
    				ser_printf("\n设置FM调制源: ");
    				amsource=1;//默认为内FM
    				while(1)
    				{
    					if((KeyValue=Get_Key())==29)
    					{
    						amsource = (amsource+1)%2;
    						//lcd 交替显示内FSK,外FSK
    						if(amsource==1)
    							ser_printf("内\n");
    						else
    							ser_printf("外\n");
    					}
    					else if(KeyValue==24)//按output才退出
    						break;	
    				}
    				
    				if(amsource==1)
    					pCurrentWave->m_WFreMode=1;
    				else
    					pCurrentWave->m_WFreMode=0;
    			  }
    			  else if(KeyValue == 24)//按output才退出
    				break;
    			 //按其他键,则无效
    			 KeyValue = Get_Key();
    			}//while end
    		*/		
    		}//switch end
    			
    /*	case 35:  //按了任意波按钮
    		pCurrentWave = pCurrentArb;
    		if(pCurrentWave->m_WDataLen==0)//对于无波形数据的任意波
    		{
    			strncpy(pCurrentWave->m_WFrequency,fre1_data,6);
    			FrameHead_Send(pCurrentWave);//发送波形ID和频率数据
    			
    			strncpy(AmpCMD.m_WFrequency,amp_data,6);
    			pCurrentFrameHD = &AmpCMD;
    			FrameHead_Send(pCurrentFrameHD);//发送幅度数据
    		}
    		else
    		{
    			switch(pCurrentWave->m_WWaveType)
    			{
    			case 4://UExp
    				strncpy(pCurrentWave->m_WFrequency,fre2_data,6);
    				FrameHead_Send(pCurrentWave);//发送波形ID和频率数据
    				
    				pcmd = (char *)UExpCMD.UExp;
    				FrameData_Send(pcmd,HW_SDSIZE*2);//发送波形数据
    				
    				strncpy(AmpCMD.m_WFrequency,amp_data,6);
    				pCurrentFrameHD = &AmpCMD;
    				FrameHead_Send(pCurrentFrameHD);//发送幅度数据
    				break;
    			case 5://DExp
    				strncpy(pCurrentWave->m_WFrequency,fre2_data,6);
    				FrameHead_Send(pCurrentWave);//发送波形ID和频率数据
    				
    				pcmd = (char *)DExpCMD.DExp;
    				FrameData_Send(pcmd,HW_SDSIZE*2);//发送波形数据
    				
    				strncpy(AmpCMD.m_WFrequency,amp_data,6);
    				pCurrentFrameHD = &AmpCMD;
    				FrameHead_Send(pCurrentFrameHD);//发送幅度数据
    				break;
    			case 6://Cardgm
    				strncpy(pCurrentWave->m_WFrequency,fre2_data,6);
    				FrameHead_Send(pCurrentWave);//发送波形ID和频率数据
    				
    				pcmd = (char *)CardgmCMD.Cardgm;
    				FrameData_Send(pcmd,HW_SDSIZE*2);//发送波形数据
    				
    				strncpy(AmpCMD.m_WFrequency,amp_data,6);
    				pCurrentFrameHD = &AmpCMD;
    				FrameHead_Send(pCurrentFrameHD);//发送幅度数据
    				break;
    			}//switch end
    		}//else end
    		
    		*/
    	default :
			break;
        }//switch end
    }//while end
	
    
 }

⌨️ 快捷键说明

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