www.pudn.com > HT1621Control.rar > disp_task.c


/*C************************************************************************** 
* NAME:         disp_task.c 
*---------------------------------------------------------------------------- 
* Copyright (c) 2006 Atmel. 
*---------------------------------------------------------------------------- 
* RELEASE:      C51 Sample       
* REVISION:     1.00      
*---------------------------------------------------------------------------- 
* 
*****************************************************************************/ 
/*_____ I N C L U D E S ____________________________________________________*/ 
 
#include "system\reg51.h" 
#include "system\compiler.h" 
#include "system\config.h" 
#include "driver\io_def.h" 
#include "disp_task.h"                      /* displayer task definition */ 
 
#if CONF_DISPLAY == HT1621 
#include "driver\ht1621_drv.h"              /* ht1621 driver definition */ 
#endif 
 
/*_____ M A C R O S ________________________________________________________*/ 
 
 
/*_____ D E F I N I T I O N ________________________________________________*/ 
 
/*F************************************************************************** 
* NAME: disp_task_init 
*---------------------------------------------------------------------------- 
* PARAMS: 
* 
* return: 
*---------------------------------------------------------------------------- 
* PURPOSE:  
*   Display task initialization 
*---------------------------------------------------------------------------- 
* EXAMPLE: 
*---------------------------------------------------------------------------- 
* NOTE: 
*---------------------------------------------------------------------------- 
* REQUIREMENTS: 
*****************************************************************************/ 
void disp_task_init (void) 
{ 
	ht1621_init(); 
	HT1621_command(HT1621_COMBIAS); 
	HT1621_command(HT1621_RC); 
	HT1621_command(HT1621_TIMER); 
	HT1621_command(HT1621_SYSEN); 
	HT1621_command(HT1621_ON); 
	 
	glht1621_sec(45);	/* 防止出错,无意义的调用 */ 
	glht1621_min(20);	/* 防止出错,无意义的调用 */ 
	glht1621_TRACK(20);	/* 防止出错,无意义的调用 */ 
	glht1621_volume();	/* 防止出错,无意义的调用 */ 
	glht1621_rec();		/* 防止出错,无意义的调用 */ 
	glht1621_stop();	/* 防止出错,无意义的调用 */ 
	ht1621_cls(); 
#if disp_version == E_DispVer 
	glht1621_TRACK(6);	/* 软件版本:年份 */ 
	glht1621_min(8);	/* 软件版本:月期 */ 
	glht1621_sec(4);	/* 软件版本:日份 */ 
#endif 
	disp_state = DISP_INIT; 
} 
 
/*F************************************************************************** 
* NAME: disp_task 
*---------------------------------------------------------------------------- 
* PARAMS: 
* 
* return: 
*---------------------------------------------------------------------------- 
* PURPOSE:  
*   Display task handling display of clock and scrolling of file name 
*---------------------------------------------------------------------------- 
* EXAMPLE: 
*---------------------------------------------------------------------------- 
* NOTE: 
*---------------------------------------------------------------------------- 
* REQUIREMENTS: 
*****************************************************************************/ 
void disp_task (void) 
{ 
	switch (disp_state) 
  	{ 
 
		case DISP_IDLE:  	break; 
		case DISP_INIT: 
		{ 
			ht1621_cls(); 
			disp_state = DISP_PRO; 
			} 
			break; 
 
		case DISP_TICK0:	 
		{ 
			if(disp_tick > DISP_LOOP){ 
			 	disp_state = DISP_PRO; 
				disp_tick = 0; 
				} 
			} 
			break; 
 
		case DISP_PRO: 
		{		 
			if(!MPOWER){ 
				glht1621_POFF(); 
				} 
			else { 
				if(vol_flag){ 
					if(	vol_tick > VOLDISP_TIME) { 
						vol_flag = Low; 
						vol_tick = 0; 
						} 
						else glht1621_volume();  
					} 
				else{ 
					if(CDPOWER){					 
						if(!DtsMen_flag) { 
							dtsFM_DispFer();  
							//dts_DispMem(); 
							} 
							else { 
								dts_DispMem(); 
								dtsFM_DispFer(); 
								} 
						} 
					} 
				} 
			disp_state = DISP_TICK0; 
			break; 
 
			} 
		default: ; 
	} 
	; 
}