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

📄 nedu_sub_state.c

📁 三星44b0平台开发的PDA系统
💻 C
字号:
/*
*********************************************************************************************************************
*                 东软培训中心教学项目:基于ARM和uc/os-II的PDA系统
*
*                      (c) Copyright 2005, 东软培训中心
*                             All Rights Reserved
*
* 模块名称:状态子机模块
* 文件名:NEDU_SUB_STATE.C
* 作者:朱成果
* 时间:2005年11月9日
* 版本:V0.01
**********************************************************************************************************************
*/
#include "def.h"
#include "44b.h"
#include "uhal.h"
#include "driven.h"
#include "ucos_ii.h"

extern U8 state,esc,RTC[8];
extern U32 Sub_Mode;
extern unsigned char DATABUFF[0x4200];
extern RECLIST numturm[100];
extern char intstr[9];
extern RTC_REG RTC_data, RTC_Sdata;

/*
**********************************************************************************************************************
*                       RTCSETDISPLAY
*
* 作者:
*
* 时间:
*
* 描述:子状态机。把键盘任务传送的字节流自动按BCD格式保存到公共数组RTC中,供Rtc_set()函数使用。
*	 
* 参数:无。
*
* 返回值:无。
* 
***********************************************************************************************************************
*/
void RTC_Set_Display(void)
{
	OS_CPU_SR  cpu_sr;
	
	U32 bcolor=0x00;					//背景色
	U32 fcolor=0xff;					//前景色
	U32* pList_t=(U32*)0x0c005e08;		//显示指针 
	
	LCD_Clear(CLR_ALL);					//显示背景
    LCD_loard_tig(PDA_VERSION);
    LCD_loard_tig(PDA_SETRTC);
    
	//这是显示说明,编程时需要删除或替换
	LCD_Prints("Wait to Develope",fcolor, pList_t,bcolor);
	OS_ENTER_CRITICAL();
	Sub_Mode = TCH_INVALIDE;
	OS_EXIT_CRITICAL(); 
	
	while(1)
		{
			
			if(Sub_Mode != TCH_INVALIDE)
			{
				esc = ESCAP;
				OS_ENTER_CRITICAL();
				Sub_Mode = TCH_INVALIDE;
				OS_EXIT_CRITICAL(); 
				return;
			}
			OS_ENTER_CRITICAL();
			Sub_Mode = TCH_INVALIDE;
			OS_EXIT_CRITICAL(); 
			OSTimeDly(1000);   
		}					
}
/*
**********************************************************************************************************************
*                       RECDISPLAY
*
* 作者:
*
* 时间:
*
* 描述:子状态机。显示客户记录等数据,每次一项,按"下一项","前一项","删除""返回"进行对应的操作。
*	 
* 参数:无。
*
* 返回值:如ManegeRec数组中条目为0,则直接返回;无返回值。
* 
***********************************************************************************************************************
*/
void REC_Display(void)
{

	OS_CPU_SR  cpu_sr;
	
	U32 bcolor=0x00;					//背景色
	U32 fcolor=0xff;					//前景色
	U32 r_offset=0x820;					//条目间距
	U32* pList_r=(U32*)0x0c005a48;		//显示指针
	
	LCD_Clear(CLR_ALL);					//显示背景
    LCD_loard_tig(PDA_VERSION);
    LCD_loard_tig(PDA_DISREC);
    
	//这是显示说明,编程时需要删除或替换
	(void)LCD_Prints("   ---Wait to Develope---",fcolor,pList_r,bcolor);
	(void)LCD_Prints("Toush Return for Main Menu",fcolor, pList_r+r_offset,bcolor);
	(void)LCD_Prints(" !!! Hello World !!! ",fcolor, pList_r+(3*r_offset),bcolor);
	OS_ENTER_CRITICAL();
	Sub_Mode = TCH_INVALIDE;
	OS_EXIT_CRITICAL(); 
	
	while(1)
		{
			if(Sub_Mode != TCH_INVALIDE)
			{
				OS_ENTER_CRITICAL();
				Sub_Mode = TCH_INVALIDE;
				OS_EXIT_CRITICAL(); 
				return;
			}
			OS_ENTER_CRITICAL();
			Sub_Mode = TCH_INVALIDE;
			OS_EXIT_CRITICAL(); 
			OSTimeDly(1000); 
		}
}
/*
**********************************************************************************************************************
*                       RECSETDISPLAY
*
* 作者:
*
* 时间:
*
* 描述:电话号码录入子状态机。
*	 
* 参数:无。
*
* 返回值:无。
* 
***********************************************************************************************************************
*/
void REC_Set_Display(void)
{
	OS_CPU_SR  cpu_sr;
	
	U32 bcolor=0xff;				//背景色
	U32 fcolor=0x00;				//前景色
	U32 r_offset=0x690;				//条目间距
	U32* pList_r=(U32*)0x0c003b00;	//显示指针
	
	LCD_Clear(CLR_ALL);
    LCD_loard_tig(PDA_SETREC);
    
	//这是显示说明,编程时需要删除或替换
	(void)LCD_Prints("    Wait to be Developed",fcolor,pList_r,bcolor);
	(void)LCD_Prints("Toush AnyKey for Main Menu",fcolor, pList_r+r_offset,bcolor);
	(void)LCD_Prints(" !!! Hello Students !!!",fcolor, pList_r+(3*r_offset),bcolor);
	OS_ENTER_CRITICAL();
	Sub_Mode = TCH_INVALIDE;
	OS_EXIT_CRITICAL(); 
	
	while(1)
		{
			if(Sub_Mode != TCH_INVALIDE)
			{
				OS_ENTER_CRITICAL();
				Sub_Mode = TCH_INVALIDE;
				OS_EXIT_CRITICAL(); 
				return;
			}
			OS_ENTER_CRITICAL();
			Sub_Mode = TCH_INVALIDE;
			OS_EXIT_CRITICAL(); 
			OSTimeDly(1000); 
		}
}
/*
**********************************************************************************************************************
*                       DIS_MIAN
*
* 作者:朱成果
*
* 时间:2006年5月15日
*
* 描述:显示主菜单。
*
* 参数:无
*
* 返回值:无
* 
***********************************************************************************************************************
*/
void dis_main(void)
{
	LCD_Clear(CLR_ALL);
	LCD_loard_tig(PDA_VERSION);
	LCD_loard_tig(PDA_MAINPAGE);
	return;
}
/*
**********************************************************************************************************************
*                       DIS_TIME
*
* 作者:朱成果
*
* 时间:2006年6月5日
*
* 描述:显示系统时间。
*
* 参数:无
*
* 返回值:无
* 
***********************************************************************************************************************
*/
void dis_time(void)
{
	int i;
	OS_CPU_SR  cpu_sr;
	U32 bcolour=0xDB;		//显示背景色
	U32 fcolour=0x00;		//显示前景色
	U32 t_offset=0x5a0;		//条目间距
	U32* pList_t;			//显示指针
	
	LCD_Clear(CLR_ALL);				//显示背景
    LCD_loard_tig(PDA_SYSTIME);
    LCD_loard_tig(PDA_VERSION);
    LCD_loard_tig(BT_RETURN);
    
	for(;;){
			 Rtc_Read();
			 pList_t =(U32*)0xc005588;
		     BCDU32toAsc((U32)RTC_data.year);
		     (void)LCD_Prints(intstr,fcolour,pList_t,bcolour);
		     BCDU32toAsc((U32)RTC_data.month);
		     pList_t += t_offset;
		     (void)LCD_Prints(intstr,fcolour,pList_t,bcolour);
		     BCDU8toAsc(RTC_data.day);
		     pList_t += t_offset;
		     (void)LCD_Prints(intstr,fcolour,pList_t,bcolour);
		     BCDU8toAsc(RTC_data.hour);
		     pList_t += t_offset;
		     (void)LCD_Prints(intstr,fcolour,pList_t,bcolour);
		     BCDU8toAsc(RTC_data.min);
		     pList_t += t_offset;
		     (void)LCD_Prints(intstr,fcolour,pList_t,bcolour);
		     BCDU8toAsc(RTC_data.sec);
		     pList_t += t_offset;
		     (void)LCD_Prints(intstr,fcolour,pList_t,bcolour);
		     
		     for(i=0;i<200;i++)
		     {
		     if(Sub_Mode == TCH_RETURN)
		     	{
		        	OS_ENTER_CRITICAL();
					Sub_Mode = TCH_INVALIDE;
					OS_EXIT_CRITICAL(); 
		        	return;
		        }
		     OSTimeDly(5);
		     }
	     
	}
	return;
}
/*
**********************************************************************************************************************
*                       DIS_DATE
*
* 作者:
*
* 时间:
*
* 描述:显示系统日历。
*
* 参数:无
*
* 返回值:无
* 
***********************************************************************************************************************
*/
void dis_date(void)
{
	OS_CPU_SR  cpu_sr;
	U32 bcolour=0x00;					//背景色
	U32 fcolour=0xff;					//前景色
	U32* pList_d=(U32*)0xc00a028;		//日显示指针
	//U32* pList_m=(U32*)0xc005bd0;		//月显示指针
	//U32* pList_y=(U32*)0xc005b78;		//年显示指针
	
	LCD_Clear(CLR_ALL);					//显示背景
	LCD_loard_tig(PDA_VERSION);
	LCD_loard_tig(PDA_SYSDATE);
	
    //这是显示说明,编程时需要删除或替换
    LCD_Prints("Wait to Develope",fcolour, pList_d,bcolour);
    OS_ENTER_CRITICAL();
	Sub_Mode = TCH_INVALIDE;
	OS_EXIT_CRITICAL(); 
   
   while(1)
		{
			if(Sub_Mode != TCH_INVALIDE)
			{
				OS_ENTER_CRITICAL();
				Sub_Mode = TCH_INVALIDE;
				OS_EXIT_CRITICAL(); 
				return;
			}
			OS_ENTER_CRITICAL();
			Sub_Mode = TCH_INVALIDE;
			OS_EXIT_CRITICAL(); 
			OSTimeDly(1000); 
		}
}

//the end of sub_state module

⌨️ 快捷键说明

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