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

📄 cal_estate.c

📁 在C8051f340下的一个完整的uart项目源码 请
💻 C
字号:
/******************************************************************

** File name: "CAL_ESTATE.C"

** Version:    1.0

** Author:     Gong Shu_chao

** date:       2008-3-25

** Revision:

** Date:

** Description: Basing on the MCU and DSP SYSTEM,the program indicates the tranfer of the 
** telephone  communication with the semiduplex function.

** Note: correspond to vc 


******************************************************************/

#include "CAL_ESTATE.h"
#include <stdlib.h>
#include <stdio.h>

 CAL_ESTATE( void )
{
    	switch ( g_state )    //handle outer events according to the current state
		/***********************calling party  *****************************/
		{

		case  initial_sta  :
					
				   
			       switch ( g_event )
				   {
				   case  pick_up_event :
					      
						  g_state=sending_bel_sta;
						  break;
				 
				   case  called_bell_event :
					     g_state=called_bel_sta;
					     break;
				   }
		 case  sending_bel_sta  : 
			      switch  ( g_event )	   
				  {
				  case  stop_bel_event : 
					     displaynum_1(); //stop to the ring,write the number to ram and  display the first number.
					     g_state=  coun_sta ; 
					   	break;
					
			      
				  case  bel_timeover_event : //no  key pressed and the timer of the state  is timeover
                        g_state= busy_bel_sta ;
					    break;

				  case  hang_up_event :
					    g_state=initial_sta; 
						 break;
				  }	  
					 
		  case  coun_sta   :
			     switch    ( g_event )	 	   
				 {
				 case    num_event :
					     coun_number ( ); //and to judge the call_number  whether is right or not,give a "call_event" 
					     g_state=calling_sta;
						 break;
					
				 case  hang_up_event :
					    g_state=initial_sta; 
						 break;
				 case  coun_timeover_event  ://the timer of the state  is timeover
                        g_state= busy_bel_sta ;
					    break;

					
				 }
				
	   	 case  calling_sta  :
			     switch    ( g_event )	 	   
				 {	
				 case	ans_event :
				        rebell(  )     ;
					    g_state= rebell_sta    ;
						break;
					
				 case   channel_busy_event :
                        g_state= busy_bel_sta ;
					    break;
				 case   mul_calls_event  :
                        g_state= busy_bel_sta ;
					    break;
				 case   no_ans_event :
					    g_state= busy_bel_sta ;
					    break;
				 case   hang_up_event :
					     
					    g_state= initial_sta  ;    
					     break;
					
				 }
		
		 case   busy_bel_sta :
				 switch    ( g_event )	 	   
				 {	
				 case   hang_up_event :
					     g_state= initial_sta  ;    
					     break;
				 case   busy_timeover_event :
					     g_state= initial_sta  ;    
					     break;
				  
					        
					  
			
				 }
		
		
		 case  	rebell_sta  :
				switch    ( g_event )	 	   
				{	 	
				case    called_picking_event :
					
						clc_ring();
					    g_state= talking_through_sta ; 
						break;
				
				case    rebell_timeover_event :
					    g_state= busy_bel_sta ;
					    break;
				case    hang_up_event  :
					    g_state= initial_sta  ;    
					    break;
					
			
				}
		
	
		  
		
		 case   called_bel_sta :               //the	called party 	
                switch    ( g_event )	 	   
				{	 
				case    picking_event :
					    g_state= talking_through_sta ;
                        break;
				case    ring_timeover_event :
					    g_state= initial_sta  ;    
					    break;
                case    calling_hangup_event : 
					    g_state= initial_sta  ;    
					    break;
				}
			//the three common states
		 case    talking_through_sta:
				switch    ( g_event )	 	   
				{	
				case    ppt_event :	//add1
					    g_state=speaking_substa;//add2
					    break;
				case    unppt_event ://add3
					    g_state=listening_substa;//add4
					    break;
				case    fir_hang_event :
					    g_state=fir_hang_govern_sta;
					    break;
				case    secon_hang_event:
					    g_state=secon_hang_govern_sta;
					    break;
				case    talking_timeover_event:
					    g_state=secon_hang_govern_sta;
					    break;
				}
							
		 case  fir_hang_govern_sta :
				switch    ( g_event )	 	   
				{		
				case    release_event :   //add5
					    g_state= busy_bel_sta ;
					    break;
				
				}
					 
	    case  secon_hang_govern_sta:
				switch    ( g_event )	 	   
				{		
				case     fir_affirm_event:
					     g_state= initial_sta  ;    
					     break;
				case     no_affirm_event:
					     g_state= initial_sta  ;    
				         break;
				}
			   break;
		}
		return ture ;

}

⌨️ 快捷键说明

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