main.c
来自「UCOS-2.rar」· C语言 代码 · 共 298 行
C
298 行
/****************************************Copyright (c)**************************************************
** Guangzou ZLG-MCU Development Co.,LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name: main.c
** Last modified Date: 2004-09-16
** Last Version: 1.0
** Descriptions: The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by: Chenmingji
** Created date: 2004-09-16
** Version: 1.0
** Descriptions: The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#include "config.h"
#include "stdlib.h"
uint8 num[11][16]={ //0~9十个数字,字体点阵为8X16
{0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,
0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00},
{0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,
0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00},
{0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,
0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00},
{0x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,
0x04,0x02,0x02,0x42,0x44,0x38,0x00,0x00},
{0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,
0x44,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00},
{0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,
0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00},
{0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,
0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00},
{0x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,
0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00},
{0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,
0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00},
{0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,
0x26,0x1A,0x02,0x02,0x24,0x38,0x00,0x00},
{0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00}};
uint8 M[]= //冒号显示,点阵字体为8X16
{
0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00
};
const uint32 key=1<<16;
#define TaskStkLengh 512 //定义用户任务0的堆栈长度
OS_STK TaskKeyStk[TaskStkLengh]; //定义用户任务0的堆栈
OS_STK TaskDispStk[TaskStkLengh]; //定义用户任务0的堆栈
void TaskKey(void *pdata); //Task0 任务0
void TaskDisp(void *pdata); //Task0 任务0
//OS_EVENT *Mbox;
/****************************************************************************
* 名称: main()
* 功能: 初始化uC/OS-II操作系统,建立第一个任务,然后启动系统。
****************************************************************************/
int main(void)
{
OSInit ();
OSTaskCreate (TaskKey,(void *)0, &TaskKeyStk[TaskStkLengh - 1], 2);
OSStart ();
return 0;
}
/*********************************************************************************************************
** Task0 任务0
** 功能:使用ZLG/GUI,在屏幕上同时显示多个"Hello ZLG/GUI!"字符串
********************************************************************************************************/
void TaskKey(void *pdata)
{
uint32 s2;
static uint32 a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,i=0;
pdata = pdata;
PINSEL2= 0x00000000;
IO1DIR = 0x00000000;
TargetInit ();
GUI_Initialize(); // 初始化LCD
OSTaskCreate (TaskDisp,(void *)0, &TaskDispStk[TaskStkLengh - 1], 4);
//Mbox=OSMboxCreate((void*)0);
while (1)
{
if((IO1PIN&key)==0)
{
OSTimeDly(OS_TICKS_PER_SEC/50);
if((IO1PIN&key)==0)
{
while((IO1PIN&key)==0)OSTimeDly(1);
i=i+1;
}
}
if(i==0) OSTimeDly(OS_TICKS_PER_SEC/50);
if(i==1) {CCR=0x00;OSTaskSuspend(4);}
if(i==2)
{
for(s2=0;s2<400;s2++)
{
if((IO1PIN&key)==0)
{
OSTimeDly(OS_TICKS_PER_SEC/50);
if((IO1PIN&key)==0)
{
while((IO1PIN&key)==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&key)==0)
{
OSTimeDly(OS_TICKS_PER_SEC/50);
if((IO1PIN&key)==0)
{
while((IO1PIN&key)==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)// disp1(0,0,1,0,0,0);
{
GUI_LoadPic(8,0,*(num+a2),8,16); //恢复显示小时第二位
for(s2=0;s2<600;s2++)
{
if((IO1PIN&key)==0)
{
OSTimeDly(OS_TICKS_PER_SEC/50);
if((IO1PIN&key)==0)
{
while((IO1PIN&key)==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&key)==0)
{
OSTimeDly(OS_TICKS_PER_SEC/50);
if((IO1PIN&key)==0)
{
while((IO1PIN&key)==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&key)==0)
{
OSTimeDly(OS_TICKS_PER_SEC/50);
if((IO1PIN&key)==0)
{
while((IO1PIN&key)==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&key)==0)
{
OSTimeDly(OS_TICKS_PER_SEC/50);
if((IO1PIN&key)==0)
{
while((IO1PIN&key)==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); //恢复显示秒的第二位
i=0;OSTaskResume(4);
HOUR = a1*10+a2;
MIN = a3*10+a4;
SEC = a5*10+a6;
CCR=0x01;
}
}
}
/*********************************************************************************************************
**
********************************************************************************************************/
void TaskDisp(void *pdata)
{
uint32 times;
uint8 bak,shuz[6];
pdata = pdata;
TargetInit ();
GUI_Initialize(); // 初始化LCD
GUI_SetColor(1, 0); // 设置前景色和背景色
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(0,0,*(num+shuz[0]),8,16); //显示小时
GUI_LoadPic(9,0,*(num+shuz[1]),8,16); //显示小时
GUI_LoadPic(16,0,*(num+10),8,16); //显示冒号
GUI_LoadPic(24,0,*(num+shuz[2]),8,16); //显示分钟
GUI_LoadPic(32,0,*(num+shuz[3]),8,16); //显示分钟
GUI_LoadPic(40,0,*(num+10),8,16); //显示冒号
GUI_LoadPic(48,0,*(num+shuz[4]),8,16); //显示秒
GUI_LoadPic(56,0,*(num+shuz[5]),8,16); //显示秒
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?