亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? test.c

?? uCOS電子鐘 pc機(jī)上模擬ucos實時操作系統(tǒng)上跑電子鐘程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*
*********************************************************************************************************
*                                                uC/OS-II
*                                          The Real-Time Kernel
*
*                           (c) Copyright 1992-2008, Bucker
*                                           All Rights Reserved
*
*                                               EXAMPLE #1
*********************************************************************************************************
*/

#include "includes.h"
#include "image.h"
#include "led.h"

/*
*********************************************************************************************************
*                                               CONSTANTS
*********************************************************************************************************
*/

#define TASK_STK_SIZE 512								      	/* Size of each task's stacks (# of WORDs)            */
#define VIDEO 0x10															/*BIOS調(diào)用中INT10H*/
#define MY_TASK_START_PRIO 4
/*
*********************************************************************************************************
*                                               VARIABLES
*********************************************************************************************************
*/

OS_STK TaskDispStk[TASK_STK_SIZE];        		/* Tasks stacks                                  */
OS_STK TaskMenuStk[TASK_STK_SIZE];        		/* Tasks stacks                                  */
OS_STK TaskClockStk[TASK_STK_SIZE];        		/* Tasks stacks                                  */
OS_STK TaskSetDateStk[TASK_STK_SIZE];        	/* Tasks stacks                                  */
OS_STK TaskSetTimeStk[TASK_STK_SIZE];        	/* Tasks stacks                                  */
OS_STK TaskSetAlertStk[TASK_STK_SIZE];        	/* Tasks stacks                                  */
OS_STK TaskStartStk[TASK_STK_SIZE];				/* Tasks stacks                                  */
OS_EVENT *TimeKey;
void *TimeKeyMsg[10];

FILE *Fr;
INT8U Status = 0;
struct TIME
{
	INT16U Year;
	INT8U Month;
	INT8U Day;
	INT8U Hour;
	INT8U Minute;
	INT8U Second;
	INT8U Week;
} Time;

/*
*********************************************************************************************************
*                                           FUNCTION PROTOTYPES
*********************************************************************************************************
*/

void TaskDisp(void *data);                       /* Function prototypes of tasks                  */
void TaskMenu(void *data);                       /* Function prototypes of tasks                  */
void TaskClock(void *data);                       /* Function prototypes of tasks                  */
void TaskSetDate(void *pdata);									/*設(shè)定日期*/
void TaskSetTime(void *pdata);									/*設(shè)定時間*/
void TaskSetAlert(void *pdata);									/*設(shè)定鬧鐘*/
void TaskStart(void *data);                  /* Function prototypes of Startup task           */
void PSet(INT16U x,INT16U y,INT16U color);
void InitScr(void);
void CloseScr(void);
void OpenHZK(char *FileName);
void DispChinese(INT16U x,INT16U y,char *Hz,INT8U att);
void DispChineseLine(INT16U x,INT16U y,char *Str,INT8U att);
void DispLED(INT16U x,INT16U y,INT8U led);
void Update(INT8U att);
void ResumeLCD(void);
INT8U GetWeek(INT16U year,INT8U month,INT16U day);
void DispNum(INT16U x,INT16U y,INT8U data,INT8U att);
void DispData(INT16U x,INT16U y,INT16U data,INT8U att);
INT8U EditData(INT16U x,INT16U y,INT16U *data,INT8U att,INT16S min,INT16S max);
/*
*********************************************************************************************************
*                                           模擬在LCD上的指定坐標(biāo)畫一個點
*********************************************************************************************************
*/

void PSet(INT16U x,INT16U y,INT16U color)
{
	union REGS regs;
	regs.h.ah = 0x0c;
	regs.h.al = color;
	regs.x.cx = x + 0x10;
	regs.x.dx = y + 0x18;
	int86(VIDEO,&regs,&regs);
}
/*
*********************************************************************************************************
*                                           產(chǎn)生一個仿真的LCD屏幕
*********************************************************************************************************
*/

void InitScr()
{
	union REGS regs;
	INT16U A;
	regs.x.ax = 0x0013;
	int86(VIDEO,&regs,&regs);
	for (A = 0;A < 130;A++)
	{
		PSet(A - 1,-1,2);
		PSet(A - 1,64,2);
	}
	for (A = 0;A < 66;A++)
	{
		PSet(- 1,A - 1,2);
		PSet(128,A - 1,2);
	}
}
/*
*********************************************************************************************************
*                                           將顯示模式改為字符方式
*********************************************************************************************************
*/

void CloseScr()
{
	union REGS regs;
	regs.x.ax = 0x0003;
	int86(VIDEO,&regs,&regs);
}

/*
*********************************************************************************************************
*                                           打開字庫文件
*********************************************************************************************************
*/

void OpenHZK(char *FileName)
{
	if (Fr != NULL) fclose(Fr);
	if ((Fr = fopen(FileName,"rb")) == NULL)
		exit(0);
}

/*
*********************************************************************************************************
*                                           模擬在LCD的指定位置顯示一個漢字
*********************************************************************************************************
*/

void DispChinese(INT16U x,INT16U y,char *Hz,INT8U att)
{
	INT8U a,b,c,d;
	if (Fr != NULL)
	{
		if (!(att & 0x80))
			fseek(Fr,(long)((INT16U)((INT8U)Hz[0] - 161) * 94 + (INT8U)Hz[1] - 161) * 32,SEEK_SET);
		else
			fseek(Fr,(long)((INT16U)((INT8U)Hz[0] - 161) * 94 + (INT8U)Hz[1] - 161) * 32 + 267616L,SEEK_SET);
		for (a = 0;a < 16;a++)
		{
			for (b = 0;b < 2;b++)
			{
				c = fgetc(Fr);
				for (d = 0;d < 8;d++)
				{
					if (!(att & 0x01))
					{
						if (c & 0x80) PSet(x + b * 8 + d,y + a,30);
						else PSet(x + b * 8 + d,y + a,1);
					}
					else
					{
						if (c & 0x80) PSet(x + b * 8 + d,y + a,1);
						else PSet(x + b * 8 + d,y + a,30);
					}
					c <<= 1;
				}
			}
		}
	}
}

/*
*********************************************************************************************************
*                                           模擬LCD上指定位置顯示一行漢字
*********************************************************************************************************
*/

void DispChineseLine(INT16U x,INT16U y,char *Str,INT8U att)
{
	if (x > 320) x = (128 - strlen(Str) * 8) >> 1;
	while (*Str)
	{
		DispChinese(x,y,Str,att);
		Str += 2;
		x += 16;
	}
}
/*
*********************************************************************************************************
*                                           模擬顯示數(shù)碼管數(shù)字
*********************************************************************************************************
*/

void DispLED(INT16U x,INT16U y,INT8U led)
{
	INT16U a,b;
    INT8U *P = LED[led];
	INT8U c,d;
	for (a = 0;a < 29;a++)
	{
		for (b = 0;b < 2;b++)
		{
            c = *P++;
			for (d = 0;d < 8;d++)
			{
				if (c & 0x80) PSet(x + b * 8 + d,y + a,30);
				else PSet(x + b * 8 + d,y + a,1);
				c <<= 1;
			}
		}
	}
}

/*
*********************************************************************************************************
*                                           更新顯示時間
*********************************************************************************************************
*/
void Update(INT8U att)
{
	static struct TIME oldtime;
	if (att || oldtime.Month != Time.Month)
	{
		oldtime.Month = Time.Month;
		DispLED(0,35,Time.Month / 10);
		DispLED(20,35,Time.Month % 10);
	}
	if (att || oldtime.Day != Time.Day)
	{
		oldtime.Day = Time.Day;
		DispLED(46,35,Time.Day / 10);
		DispLED(66,35,Time.Day % 10);
	}
	if (att || oldtime.Week != Time.Week)
	{
		oldtime.Week = Time.Week;
		if (Time.Week)
			DispLED(112,35,Time.Week);
		else
			DispLED(112,35,8);
	}
	if (att || oldtime.Hour != Time.Hour)
	{
		oldtime.Hour = Time.Hour;
		DispLED(0,0,Time.Hour / 10);
		DispLED(20,0,Time.Hour % 10);
	}
	if (att || oldtime.Minute != Time.Minute)
	{
		oldtime.Minute = Time.Minute;
		DispLED(46,0,Time.Minute / 10);
		DispLED(66,0,Time.Minute % 10);
	}
	if (att || oldtime.Second != Time.Second)
	{
		oldtime.Second = Time.Second;
		DispLED(92,0,Time.Second / 10);
		DispLED(112,0,Time.Second % 10);
	}
}

/*
*********************************************************************************************************
*                                  恢復(fù)屏幕
*********************************************************************************************************
*/

void ResumeLCD()
{
	INT16U x,y;
	INT8U c,d;
	for (y = 0;y < 64;y++)
	{
		for (x = 0;x < 16;x++)
		{
			c = Image1[y * 16 + x];
			for (d = 0;d < 8;d++)
			{
				if (c & 0x80) PSet(x * 8 + d,y,30);
				else PSet(x * 8 + d,y,1);
				c <<= 1;
			}
		}
	}
	DispChineseLine(0,96,"按回車鍵進(jìn)菜單!!",0);
	DispChineseLine(0,112,"         ",0);
	DispChineseLine(0,128,"         ",0);
}

/*
*********************************************************************************************************
*                                            顯示數(shù)字
*********************************************************************************************************
*/
void DispNum(INT16U x,INT16U y,INT8U data,INT8U att)
{
	switch (data)
    {
	case 0:
		DispChinese(x,y,"0",att);
		break;
	case 1:
		DispChinese(x,y,"1",att);
		break;
	case 2:
		DispChinese(x,y,"2",att);
		break;
	case 3:
		DispChinese(x,y,"3",att);
		break;
	case 4:
		DispChinese(x,y,"4",att);
		break;
	case 5:
		DispChinese(x,y,"5",att);
		break;
	case 6:
		DispChinese(x,y,"6",att);
		break;
	case 7:
		DispChinese(x,y,"7",att);
		break;
	case 8:
		DispChinese(x,y,"8",att);
		break;
	case 9:
		DispChinese(x,y,"9",att);
		break;
    }
}

/*
*********************************************************************************************************
*                                            顯示數(shù)值
*********************************************************************************************************
*/
void DispData(INT16U x,INT16U y,INT16U data,INT8U att)
{
	INT8U a,b,c;
	a = att & 0x07;
    b = (att & 0x80);
    if (!b)
		c = (att >> 3) & 0x07;
    else
		c = 100;
	if (a == 4)
    {
        DispNum(x,y,data / 1000,b || (c == 4));
        data %= 1000;
        x += 16;
	}
	if (a >= 3)
    {
        DispNum(x,y,data / 100,b || (c == 3));
        data %= 100;
        x += 16;
	}
	if (a >= 2)
    {
        DispNum(x,y,data / 10,b || (c == 2));
        data %= 10;
        x += 16;
	}
	DispNum(x,y,data,b || (c == 1));
}

/*
*********************************************************************************************************
*                                            編輯數(shù)據(jù)
*********************************************************************************************************
*/
INT8U EditData(INT16U x,INT16U y,INT16U *data,INT8U att,INT16S min,INT16S max)
{
	INT8U a,b;
	INT8S buff[4];
	INT16U temp;
	INT8U err;
	INT16S *key;
	temp = *data;
	for (a = 0;a < 4;a++)
	{
		buff[a] = temp % 10;
		temp /= 10;
	}
	a = att & 0x07;
	b = (att >> 3) & 0x07;
	while (1)
	{
		DispData(x,y,*data,a | (b << 3));
		key = OSQPend(TimeKey,0,&err);
		if (*key == 0x104B)			/*如果是左移*/
		{
			if (++b > a)
            {
				if (*data >= min && *data <= max)
					return 2;
                else
					b = 1;
            }
		}
		else if (*key == 0x104D)		/*如果是右移*/
		{
			if (--b < 1)
            {
				if (*data >= min && *data <= max)
					return 3;
                else
					b = a;
            }
		}
		else if (*key == 0x1048)		/*如果是“上”*/
		{
			if (++buff[b - 1] > 9)
				buff[b - 1] = 0;
		}
		else if (*key == 0x1050)    /*如果是“下”*/
		{
			if (--buff[b - 1] < 0)
				buff[b - 1] = 9;
		}
		else if (*key == 0x1044)		/*如果是F10*/
			return 1;
		else if (*key == 0x0D)			/*如果是回車*/
        {
           	if (*data >= min && *data <= max)
				return 0;
        }
		*data = buff[3] * 1000 + buff[2] * 100 + buff[1] * 10 + buff[0];
	}
}

/*
*********************************************************************************************************
*                                            計算某年月日是星期幾
*********************************************************************************************************
*/
INT8U GetWeek(INT16U year,INT8U month,INT16U day)
{
	INT8U dat[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
	INT8U y;
	if (month > 1)
		for (y = 1;y < month;y++) day += dat[y - 1];
		if (((!(year % 4) && (year % 100)) || !(year % 400)) && month > 2) day++;
		return (year + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400 - 1 + day) % 7;
}

/*
*********************************************************************************************************
*                                                MAIN
*********************************************************************************************************
*/

void  main (void)
{
	struct time ti;
	struct date da;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频第二页| 欧美成人a视频| 在线观看日韩毛片| 精品精品国产高清一毛片一天堂| 久久午夜电影网| 亚洲三级免费观看| 国内精品久久久久影院薰衣草| av午夜一区麻豆| 欧美一卡在线观看| 自拍偷在线精品自拍偷无码专区| 成人短视频下载| 精品久久久网站| 国产剧情一区二区| 欧美一激情一区二区三区| 一区二区三区欧美| 丰满少妇在线播放bd日韩电影| 欧美乱妇23p| 亚洲一区二区三区四区在线观看| 国产·精品毛片| 亚洲欧美日韩中文播放| 99久久久久久99| 国产人久久人人人人爽| 韩国女主播一区| 亚洲日韩欧美一区二区在线| 欧美精品久久一区| 国产91精品免费| 亚洲电影激情视频网站| 日本精品免费观看高清观看| 国产精品乱码一区二三区小蝌蚪| 激情小说欧美图片| 亚洲品质自拍视频网站| 日韩天堂在线观看| 91一区二区三区在线观看| 亚洲欧美中日韩| 91麻豆国产自产在线观看| 麻豆91在线观看| 日韩免费看的电影| 狠狠色综合日日| 亚洲黄色免费电影| 欧美日韩国产小视频在线观看| 午夜电影一区二区三区| 6080日韩午夜伦伦午夜伦| 人妖欧美一区二区| 精品99一区二区三区| 欧美综合视频在线观看| 国产成人欧美日韩在线电影| 国产精品久久久久一区| 91视频com| 国产成人精品网址| 日本欧美一区二区三区乱码| 精品福利在线导航| 欧美日本一区二区| 91麻豆免费观看| 成人晚上爱看视频| 亚洲一区二区在线观看视频| 欧美激情综合在线| 欧洲激情一区二区| 欧美在线观看你懂的| 成人高清视频在线| 国产91丝袜在线18| 韩国v欧美v日本v亚洲v| 免费观看久久久4p| 亚洲午夜在线电影| 日韩一区二区影院| 欧美久久久久久久久中文字幕| 91丝袜高跟美女视频| 北岛玲一区二区三区四区| 国产激情精品久久久第一区二区 | 国产激情精品久久久第一区二区 | 国产永久精品大片wwwapp| 国产精品久久看| 久久精品人人做| 欧美在线观看视频一区二区三区| 99视频超级精品| 99国内精品久久| 91理论电影在线观看| 91丨porny丨户外露出| 91在线云播放| 色999日韩国产欧美一区二区| 色爱区综合激月婷婷| 色8久久精品久久久久久蜜| 色综合久久精品| 老鸭窝一区二区久久精品| 亚洲视频一区二区在线| 久久99精品久久久久| 国产精品九色蝌蚪自拍| 亚洲同性同志一二三专区| 亚洲人成精品久久久久久| 亚洲少妇中出一区| 一区二区三区四区蜜桃| 无码av免费一区二区三区试看| 亚洲国产欧美在线| 美女视频一区二区| 国产福利一区在线| 91偷拍与自偷拍精品| 色婷婷激情综合| 91精品国产91热久久久做人人| 7777精品伊人久久久大香线蕉完整版| 欧美老女人在线| 欧美mv日韩mv国产| 日本一区二区三区电影| 亚洲欧美另类小说视频| 偷拍日韩校园综合在线| 精品一区二区三区av| 大胆欧美人体老妇| 欧美日韩激情一区二区| 日韩精品中文字幕一区二区三区| 国产亚洲精品中文字幕| 亚洲欧美激情插| 蜜桃一区二区三区在线观看| 丁香婷婷综合色啪| 欧美三级电影精品| 欧美系列亚洲系列| 久久综合色之久久综合| 日韩伦理免费电影| 蜜臀a∨国产成人精品| 成人免费观看男女羞羞视频| 欧美日韩精品一区二区在线播放| 欧美成人三级在线| 亚洲精品菠萝久久久久久久| 美美哒免费高清在线观看视频一区二区 | 欧美日韩国产乱码电影| 精品久久国产97色综合| 一区二区三区四区国产精品| 久久成人久久鬼色| 欧美中文字幕一区| 久久精品亚洲国产奇米99| 性做久久久久久免费观看欧美| 国产精品亚洲专一区二区三区 | 成人免费毛片嘿嘿连载视频| 欧美日韩高清一区二区不卡| 欧美激情中文字幕| 午夜国产精品影院在线观看| 99久久精品一区| xfplay精品久久| 五月婷婷激情综合网| 99精品欧美一区| 久久久久久麻豆| 亚洲国产精品t66y| 蜜臀99久久精品久久久久久软件| 一本色道亚洲精品aⅴ| 国产日韩v精品一区二区| 麻豆精品国产传媒mv男同| 欧洲激情一区二区| 亚洲人一二三区| 成人免费高清在线| 久久综合久色欧美综合狠狠| 亚洲成人一区二区| 一本大道av伊人久久综合| 国产精品无码永久免费888| 极品美女销魂一区二区三区| 欧美日韩国产经典色站一区二区三区| 亚洲视频一二三区| 成人精品视频一区二区三区| 久久久久一区二区三区四区| 蜜桃av一区二区| 日韩一级在线观看| 日韩精品一区第一页| 国产不卡高清在线观看视频| 精品免费视频.| 日本va欧美va欧美va精品| 欧美精选午夜久久久乱码6080| 一区二区三区高清在线| 91免费版在线| 有码一区二区三区| 91日韩精品一区| 亚洲男帅同性gay1069| 色婷婷综合视频在线观看| 中文字幕一区二区三区四区| 成人av集中营| 亚洲视频一区二区免费在线观看| 99视频一区二区三区| 亚洲免费在线视频一区 二区| 91丨国产丨九色丨pron| 亚洲免费观看视频| 色伊人久久综合中文字幕| 亚洲综合精品自拍| 欧美夫妻性生活| 美女在线视频一区| 久久久精品影视| 99在线精品一区二区三区| 亚洲黄色av一区| 欧美一区二区女人| 激情图区综合网| 国产精品―色哟哟| 91精品福利视频| 日本亚洲电影天堂| 久久亚洲精品国产精品紫薇| 国产91露脸合集magnet| 亚洲视频在线观看一区| 欧美日韩精品免费观看视频| 美女视频第一区二区三区免费观看网站 | 视频在线观看一区| 欧美精品一区二区三| 成人性视频网站| 亚洲一区二区三区四区五区黄| 91精品国产综合久久福利| 国产高清视频一区| 亚洲黄色小说网站| 精品少妇一区二区三区免费观看|