📄 main.c
字号:
{
if((IO1PIN&IO_KEY1)==0)
{
OSTimeDly(4);
if((IO1PIN&IO_KEY1)==0)
{
while((IO1PIN&IO_KEY1)==0);
i=i+1;
}
}
if(i==0) {OSTimeDly(OS_TICKS_PER_SEC/50);}
if(i==1) CCR=0x00;
if(i==2)
{
for(s2=0;s2<400;s2++)
{
if((IO1PIN&IO_KEY1)==0)
{
OSTimeDly(OS_TICKS_PER_SEC/50);
if((IO1PIN&IO_KEY1)==0)
{
while((IO1PIN&IO_KEY1)==0)OSTimeDly(OS_TICKS_PER_SEC/500);
a1=a1+1;
}
}
GUI_LoadPic1(0,0,*(num+a1),8,16); //反白显示小时第一位
if(a1==3)a1=0;
}
i=3;
}
if(i==3)
{
GUI_LoadPic(0,0,*(num+a1),8,16); //恢复显示小时第一位
for(s2=0;s2<400;s2++)
{
if((IO1PIN&IO_KEY1)==0)
{
OSTimeDly(OS_TICKS_PER_SEC/50);
if((IO1PIN&IO_KEY1)==0)
{
while((IO1PIN&IO_KEY1)==0)OSTimeDly(OS_TICKS_PER_SEC/500);
a2=a2+1;
}
}
GUI_LoadPic1(8,0,*(num+a2),8,16); //反白显示小时第二位
if(a2==10)a2=0;
}
i=4;
}
if(i==4)
{
GUI_LoadPic(8,0,*(num+a2),8,16); //恢复显示小时第二位
for(s2=0;s2<600;s2++)
{
if((IO1PIN&IO_KEY1)==0)
{
OSTimeDly(OS_TICKS_PER_SEC/50);
if((IO1PIN&IO_KEY1)==0)
{
while((IO1PIN&IO_KEY1)==0)OSTimeDly(OS_TICKS_PER_SEC/500);
a3=a3+1;
}
}
GUI_LoadPic1(24,0,*(num+a3),8,16); //反白显示分钟第一位
if(a3==6)a3=0;
}
i=5;
}
if(i==5)
{
GUI_LoadPic(24,0,*(num+a3),8,16); //恢复显示分钟第一位
for(s2=0;s2<400;s2++)
{
if((IO1PIN&IO_KEY1)==0)
{
OSTimeDly(OS_TICKS_PER_SEC/50);
if((IO1PIN&IO_KEY1)==0)
{
while((IO1PIN&IO_KEY1)==0)OSTimeDly(OS_TICKS_PER_SEC/500);
a4=a4+1;
}
}
GUI_LoadPic1(32,0,*(num+a4),8,16); //反白显示分钟第二位
if(a4==10)a4=0;
}
i=6;
}
if(i==6)
{
GUI_LoadPic(32,0,*(num+a4),8,16); //恢复显示分钟第二位
for(s2=0;s2<600;s2++)
{
if((IO1PIN&IO_KEY1)==0)
{
OSTimeDly(OS_TICKS_PER_SEC/50);
if((IO1PIN&IO_KEY1)==0)
{
while((IO1PIN&IO_KEY1)==0)OSTimeDly(OS_TICKS_PER_SEC/500);;
a5=a5+1;
}
}
GUI_LoadPic1(48,0,*(num+a5),8,16); //反白显示秒第一位
if(a5==6)a5=0;
}
i=7;
}
if(i==7)
{
GUI_LoadPic(48,0,*(num+a5),8,16); //恢复显示秒第一位
for(s2=0;s2<800;s2++)
{
if((IO1PIN&IO_KEY1)==0)
{
OSTimeDly(OS_TICKS_PER_SEC/50);
if((IO1PIN&IO_KEY1)==0)
{
while((IO1PIN&IO_KEY1)==0) OSTimeDly(OS_TICKS_PER_SEC/500);;
a6=a6+1;
}
}
GUI_LoadPic1(56,0,*(num+a6),8,16); //反白显示秒的第二位
if(a6==10)a6=0;
}
GUI_LoadPic(56,0,*(num+a6),8,16); //恢复显示秒的第二位
a=0;i=0;
HOUR = a1*10+a2;
MIN = a3*10+a4;
SEC = a5*10+a6;
CCR=0x01;
}
}
OSTaskResume(4);
OSTaskResume(2);
}
/****************************************************************************
** 名称: DemoMessage()
** 功能: 显示一个消息框(包含OK和CANSEL两个命令按纽),显示消息
为"Hello,ZLG/GUI",然后等待按键输入
** 入口参数:无
** 出口参数:无
****************************************************************************/
void DemoMessage(void)
{
uint8 select;
uint8 *key;
uint8 err;
WINDOWS message;
message.x=0; //设置窗口的位置和大小
message.y=0;
message.with=128;
message.hight=64;
message.title=(uint8*)"Message for Demo"; //窗口标题
message.state=(uint8*)0;
GUI_WindowsDraw(&message); //显示对话框窗口
GUI_PutString(8,35,"Hello,"); //显示对话框的消息"Hello,ZLG/GUI"
GUI_PutString(8,45,"ZLG/GUI!");
select=0;
while(1)
{
if(select==0)
{
GUI_Button_OK1(72,29); //选中OK按钮
GUI_Button_Cancle(72,45); //取消CANSEL按钮的选中状态
if((int)key==KEY_OK)
{
GUI_WindowsHide(&message);
sh();
return;
}
}
else
{
GUI_Button_OK(72,29); //取消OK按钮的选中状态
GUI_Button_Cancle1(72,45); //选中CANSEL按钮
if((int)key==KEY_OK)
{
GUI_WindowsHide(&message);
return;
}
}
key=OSMboxPend(KeyMbox,0,&err);
if(((int)key==KEY_LEFT)||((int)key==KEY_RIGHT))
{
select=1-select;
}
}
}
/****************************************************************************
** 名称: MenuIcoInit()
** 功能: 初始化mainmenu结构数组。即初始化各图标变量的成员,如图标
图形点阵数据指针、图标标题点阵数据指针及相应的功能函数等
** 入口参数:无
** 出口参数:无
****************************************************************************/
void MenuIcoInit(void)
{
int i;
for(i=0;i<8;i++)
{ /*初始化为未选中的状态*/
mainmenu[i].state=0;
/*连接相应的图标数据*/
mainmenu[i].icodat=(uint8*)pic_all[i][0];
mainmenu[i].title=(uint8*)pic_all[i][1];
/*连接菜单功能函数*/
mainmenu[i].Function=(void(*)(void))DemoMessage;
}
}
/****************************************************************************
** 名称: DrawMainWindow(void)
** 功能: 在屏幕上显示一个主窗口,大小为128X64
** 入口参数:无
** 出口参数:无
****************************************************************************/
void DrawMainWindow(void)
{
WINDOWS mainw;
mainw.x=0;
mainw.y=0;
mainw.with=128;
mainw.hight=64;
mainw.title=(uint8*)NULL;
mainw.state=NULL;
GUI_WindowsDraw(&mainw);
}
/****************************************************************************
** 名称: Task0任务0有先级为3
** 功能:
** 入口参数:无
** 出口参数:无
****************************************************************************/
void Task0(void *pdata)
{
uint8 select;
pdata=pdata;
while(1)
{
select=SelectMenuIco();
if(select<8)
{
(*mainmenu[select].Function)();
DrawMainWindow();
}
}
}
/****************************************************************************
** 名称: Task1任务1有先级为3
** 功能:
** 入口参数:无
** 出口参数:无
****************************************************************************/
void Task1(void *pdata)
{
uint32 i;
uint32 io_dat;
uint8 key;
pdata=pdata;
TargetInit();
GUI_Initialize();
GUI_SetColor(1,0);
MenuIcoInit();
DrawMainWindow();
OSTaskCreate (Task0,(void *)0, &TaskStk0[TaskStkLengh - 1], 3);
OSTaskCreate (TaskDisp,(void *)0, &TaskDispStk[TaskStkLengh - 1], 4);
while(1)
{
OSTimeDly(8);
if((IO1PIN&IO_KEYALL)!=IO_KEYALL)
{
OSTimeDly(2);
io_dat=IO1PIN;
if((io_dat&IO_KEYALL)!=IO_KEYALL)
{
if((io_dat&IO_KEY2)==0)key=KEY_LEFT;
if((io_dat&IO_KEY3)==0)key=KEY_RIGHT;
if((io_dat&IO_KEY4)==0)key=KEY_OK;
for(i=0;i<10000000;i++)
{
if((IO1PIN&IO_KEYALL)==IO_KEYALL) break;
}
OSMboxPost(KeyMbox,(void*)key);
}
}
}
}
void TaskDisp(void *pdata) //Task0 任务0 优先级2
{
uint32 times;
uint8 bak,shuz[6];
pdata=pdata;
while(1)
{
times=CTIME0;
bak=(times>>16)&0x1F; // 获取小时
shuz[0]=bak/10;
shuz[1]=bak%10;
bak=(times>>8)&0x3F; // 获取分钟
shuz[2]=bak/10;
shuz[3]=bak%10;
bak=times&0x3F; // 获取秒
shuz[4]=bak/10;
shuz[5]=bak%10;
GUI_LoadPic(20,4,*(FONT5x7ASCII_1+shuz[0]),5,8); //显示小时
GUI_LoadPic(26,4,*(FONT5x7ASCII_1+shuz[1]),5,8); //显示小时
GUI_LoadPic(32,4,*(FONT5x7ASCII_1+10),5,8); //显示冒号
GUI_LoadPic(38,4,*(FONT5x7ASCII_1+shuz[2]),5,8); //显示分钟
GUI_LoadPic(44,4,*(FONT5x7ASCII_1+shuz[3]),5,8); //显示分钟
GUI_LoadPic(50,4,*(FONT5x7ASCII_1+10),5,8); //显示冒号
GUI_LoadPic(56,4,*(FONT5x7ASCII_1+shuz[4]),5,8); //显示秒
GUI_LoadPic(62,4,*(FONT5x7ASCII_1+shuz[5]),5,8); //显示秒
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -