📄 ucos_ii.c
字号:
//******************************************************************
#define OS_GLOBALS
#include <includes.h>
OS_STK Vacation[0x20] _at_ 0x60;
//******************************************************************
//* mytest system TI0mer initial
#define TIME_10mS (OS_TICKS_PER_SEC /100)
#define TIME_50mS (OS_TICKS_PER_SEC /20 )
#define TIME_100mS (OS_TICKS_PER_SEC /10 )
#define TIME_200mS (OS_TICKS_PER_SEC /5 )
#define TIME_500mS (OS_TICKS_PER_SEC /2 )
#define TIME_1S (OS_TICKS_PER_SEC)
#define TIME_2S (OS_TICKS_PER_SEC * 2)
#define TIME_3S (OS_TICKS_PER_SEC * 3)
#define TIME_4S (OS_TICKS_PER_SEC * 4)
#define TIME_5S (OS_TICKS_PER_SEC * 5)
//******************************************************************
//* mytest system crystalloid
#define XA_CRYSTAL_FREQ (INT32U)(22118400L)
//******************************************************************
//* SCR crystalloid
#define CFG_SCR_4 SCR&0x03
#define CFG_SCR_16 SCR&0x07
#define CFG_SCR_64 SCR&0x0B
#define OS_CFG_SCR CFG_SCR_4
//******************************************************************
//* mytest system
#define TASK_STK_SIZE 128 //* 128 word
#define NUMBER_TASKS 2
//******************************************************************
//* mytest task stack define
OS_STK xdata AnPrintfStk[TASK_STK_SIZE];
OS_STK xdata BnPrintfStk[TASK_STK_SIZE];
//OS_STK Vacation[0x30] _at_ 0x50;
//******************************************************************
//* OS_EVENT
OS_EVENT xdata * AnPrintfWait;
OS_EVENT xdata * BnPrintfWait;
//******************************************************************
INT8U xdata OSCtxSwCtrMax;
INT8U xdata AnPrintfData[] = {0xC4,0xE3,0xBA,0xC3,0xA3,0xAC,0xCE,0xD2,
0xCA,0xC7,0xC8,0xCE,0xCE,0xF1,0x41,0x6E,
0x5C,0x6E};
INT8U xdata BnPrintfData[] = {0xC4,0xE3,0xBA,0xC3,0xA3,0xAC,0xCE,0xD2,
0xCA,0xC7,0xC8,0xCE,0xCE,0xF1,0x42,0x6E,
0x5C,0x6E};
//-------------------------------------------------------------------
void TimeTickInitial(void);
void AnPrintf(void *dataptr); //* Startup Task
void BnPrintf(void *dataptr); //* 8 IdenTI0cal Tasks
void Serial_initialize(void);
//staTI0c void XAInit (void);
//staTI0c void TI0merInit (INT8U tmr, INT16U freq, INT8U prio);
//staTI0c void SeryComm0Init (INT16U baud);
//******************************************************************
//******************************************************************
void main (void)
{
//XAInit(); //* XA ConfiguraTI0on
WDTCN = 0xDE;
WDTCN = 0xAD;
OSInit(); //* Initialize uC/OS-II, The Real-TI0me Kernel
BnPrintfWait = OSSemCreate(0);
OSTaskCreateExt(AnPrintf,(void *)0,&AnPrintfStk[TASK_STK_SIZE-1],0x01,0x00,&AnPrintfStk[0],TASK_STK_SIZE,(void*)0,0);
OSTaskCreateExt(BnPrintf,(void *)0,&BnPrintfStk[TASK_STK_SIZE-1], 0x02,0x00,&BnPrintfStk[0],TASK_STK_SIZE,(void*)0,0);
TimeTickConfig();
Serial_initialize();
OSStart();
while(1)
;
}
void AnPrintf(void *dataptr)
{
INT8U i;
INT8U err;
dataptr = dataptr;
while(1)
{
for(i=0;i<18;)
{
if(TI0)
{
TI0= 0;
SBUF0 = AnPrintfData[i];
i++;
}
}
OSSemPend(BnPrintfWait,10,&err);
}
}
//******************************************************************
void BnPrintf(void *dataptr)
{
INT8U i;
dataptr = dataptr;
EA =1;
while(1)
{
TI0 = 1;
for(i=0;i<18;)
{ if(TI0)
{
TI0 = 0;
SBUF0 = BnPrintfData[i];
i++;
}
}
OSSemPost(BnPrintfWait);
}
}
void Serial_initialize()
{
SCON0 = 0x50; //* SCON: mode 1, 8-bit UART, enable rcvr */
TMOD |= 0x20; //* TMOD: TI0mer 1, mode 2, 8-bit reload */
TH1 = 0xfd; //* TH1: reload value for 1200 baud @ 16MHz */
TR1 = 1; //* TR1: TI0mer 1 run */
TI0 = 1; //* TI0: set TI0 to send first char of UART */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -