📄 nedu_sub_state.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 + -