📄 main.c
字号:
/*********************************************************************************************************
** Small RTOS(51)
** The Real-Time Kernel(For Keil c51)
**
** (c) Copyright 2002-2003, chenmingji
** All Rights Reserved
**
** V1.12.0
**
**
**--------------文件信息--------------------------------------------------------------------------------
**文 件 名: ext2.c
**创 建 人: 陈明计
**最后修改日期: 2002年12月30日
**描 述: ext2源代码。
**
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: 陈明计
** 版 本: V0.50
** 日 期: 2002年2月22日
** 描 述: 原始版本
**
**------------------------------------------------------------------------------------------------------
** 修改人: 陈明计
** 版 本: V1.11.0
** 日 期: 2003年12月2日
** 描 述: 删除TaskF代码
**
**------------------------------------------------------------------------------------------------------
** 修改人: 陈明计
** 版 本: V1.12.0
** 日 期: 2003年12月30日
** 描 述: 无变化
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人: 陈子牙
** 日 期: 2005年5月10日
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
#include "..\h\config.h"
#define ID_LEDRShow 0
#define ID_MusicPlay 1
#define ID_LEDWtsk 2
#define ID_MusicSpeak 4
#define ID_OSS_W_LED 0
#define ID_OSS_R_LED 1
#define ID_OSS_M 2
#define LED_MAX 20
#define aLED_MAX 2
char const aLED0[LED_MAX]={0x81,0x42,0x24,0x18,0x24,0x42,0x81,0xc3,0xe7,0xff,0x00,0x00,0xff,0x18,0x3c,0x7e,0xff,0x00,0x00,0x00};
char const aLED1[LED_MAX]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0xff,0x81,0x00,0x18,0x00};
char const * aLED[aLED_MAX];
/************************************************************************************************
函数名:主函数
功能: 启动多任务
作者: 陈子牙
************************************************************************************************/
void main(void)
{
TMOD = (TMOD & 0xF0) | 0x01;
TL0 = 0x00;
TH0 = 0x4c;
TR0 = 1;
ET0 = 1;
TF0 = 0;
OSStart();
}
//////////////////////////////////////////////////////////////////////////////////////////////
//** 函数名称 :
//** 函数功能 :
//** 入口参数 :
//** 出口参数 :
// 使用方法 :
// 注意事项 :
//////////////////////////////////////////////////////////////////////////////////////////////
void LEDRShow(void)
{char SemRec=0;
char ID_led=0;
char h_led=0;
bit bOK=0; //为0时允许灯亮
aLED[0]=aLED0;
aLED[1]=aLED1;
while(1)
{//SPEAK=1;
if(bOK==0)
{
if((++h_led)==LED_MAX)
h_led=0;
LED_SHOW=~aLED[ID_led][h_led];
}
OSWait(K_TMO,2);
SemRec=OSSemAccept(ID_OSS_R_LED);
if(SemRec==OS_SEM_OK)
{
ID_led++;
if(ID_led==aLED_MAX)
{
LED_SHOW=0xff;
bOK=1;
}
if(ID_led==aLED_MAX+1)
{
ID_led=0;
bOK=0;
}
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////
//** 函数名称 :
//** 函数功能 :
//** 入口参数 :
//** 出口参数 :
// 使用方法 :
// 注意事项 :
//////////////////////////////////////////////////////////////////////////////////////////////
void KEYGet(void)
{char key=0;
//OSWait(K_TMO,10);
OSSemCreate(ID_OSS_W_LED,0);
OSSemCreate(ID_OSS_R_LED,0);
OSSemCreate(ID_OSS_M,0);
//fnKEYInit();
while(1)
{//SPEAK=1;
OSWait(K_TMO,2);
key=fnGetKey();
if(key==KEY_W)
{
OSSendSignal(ID_LEDWtsk);
}
if(key==KEY_R)
{
OSSemPost(ID_OSS_R_LED);
}
if(key==KEY_M)
{
OSSendSignal(ID_MusicPlay);
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////
//** 函数名称 :
//** 函数功能 :
//** 入口参数 :
//** 出口参数 :
// 使用方法 :
// 注意事项 :
//////////////////////////////////////////////////////////////////////////////////////////////
extern char ID_speak;
extern char const aMusic1[];
extern char const aMusic2[];
extern char const *aMusic[MUSIC_MAX];
extern bit MUSIC_OK;//为1时,不允许播放音乐
void MusicPlay(void)
{
aMusic[0]=aMusic1;
aMusic[1]=aMusic2;
while(1)
{// SPEAK=1;
OSWait(K_SIG,0);
if((++ID_speak)==MUSIC_MAX)
{
MUSIC_OK=1;
//ID_speak=0;
}
if(ID_speak==MUSIC_MAX+1)
{
ID_speak=0;
MUSIC_OK=0;
}
OSSendSignal(ID_MusicSpeak);
}
}
void MusicSpeak(void)
{
while(1)
{ SPEAK=1;
OSWait(K_SIG,0);
timer1init();
Speak();
time1stop();
}
}
//////////////////////////////////////////////////////////////////////////////////////////////
//** 函数名称 :
//** 函数功能 :
//** 入口参数 :
//** 出口参数 :
// 使用方法 :
// 注意事项 :
//////////////////////////////////////////////////////////////////////////////////////////////
void LEDWtsk(void)
{bit i=1;
while(1)
{ //SPEAK=1;
LED_W=i=~i;
OSWait(K_SIG,0);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -