📄 main.c.bak
字号:
#include "include.h"
/**************************************************************************************
* 函数原型:
* 函数功能:
* 输入参数:
* 输出参数:
* 函数说明:
**************************************************************************************/
OS_TID TaskA_ID;
OS_TID TaskB_ID;
OS_TID TaskC_ID;
OS_TID TaskD_ID;
/**************************************************************************************
函数名称:InitT0
函数功能:定时器0初始化
输入参数:
输出参数:
函数说明:T0工作于模式1,16位计数器,1ms中断一次
**************************************************************************************/
void InitT0(void)
{
TMOD &= 0xF0; // Clear all T0 bits (T1 left unchanged)
TMOD |= 0x01; //T0工作于模式1
TH0=T0H_COUNTER; //
TL0=T0L_COUNTER;
Timer0Run(); //TR0=1;T0开始计数
//PT0=1; //T0中断优先级高
IrqAll_Enable(); //打开总中断
IrqT0_Enable(); //打开T0中断允许
}
/**************************************************************************************
函数名称:InT0
函数功能:定时器0中断服务程序
输入参数:
输出参数:
函数说明:1ms中断一次
**************************************************************************************/
//void InT0(void) interrupt 1 //using 1
//{ IrqT0_Unable();
// TH0=T0H_COUNTER;
// TL0=T0L_COUNTER;
// IrqT0_Enable();
//}
void MainInit(void)
{
InitT0();
}
//void AutoAdd(char *buf, char n)
//{char i;
// for(i=0; i<n; i++,buf++)
// {
// (*buf)++;
// if(i==1)
// //OSWait(K_TMO,5);
// os_dly_wait(ms(100));
// (*buf)++;
// }
//
//}
void TaskA(void)
{char a;
while (1)
{
a++;
//OSWait(K_TMO,5);
P1 = P1^B0000_0001;
os_dly_wait(ms(1000));
}
}
void TaskB(void)
{char b;
while (1)
{
b++;
//OSWait(K_TMO,10);
os_evt_wait_or ( 0x01, ms(60000) );
P1 = P1^B0000_0010;
//os_dly_wait(ms(4000));
}
}
void TaskC(void)
{char c;
//char buf[3];
while (1)
{
c++;
//AutoAdd(buf, 3);
//OSWait(K_TMO,15);
P1 = P1^B0000_0100;
os_dly_wait(ms(8000));
}
}
void TaskD(void)
{char d=0;
//char buf[3];
while (1)
{
d++;
// if(d==5)
// {
// OSTaskResume(1);
// OSTaskSuspend(3);
// }
//AutoAdd(buf, 3);
//OSWait(K_TMO,15);
os_evt_set(0x01, TaskB_ID);
P1 = P1^B0000_1000;
os_dly_wait(ms(16000));
}
}
/*
//main~TaskA, main~TaskB, main~TaskC, main~TaskD
//init~TaskA, init~TaskB, init~TaskC, init~TaskD
*/
uint8 xdata taskA_stack[50];
uint8 xdata taskB_stack[50];
uint8 xdata taskC_stack[50];
uint8 xdata taskD_stack[50];
void init (void)
{
//在 os_sys_init 中调用 OSInit(SP);
//OSTaskCreate(TaskA, 0);
//OSTaskCreate(TaskB, 1);
//OSTaskCreate(TaskC, 2);
TaskA_ID=os_tsk_create_user( TaskA, 0, taskA_stack, sizeof(taskA_stack) );
TaskB_ID=os_tsk_create_user( TaskB, 1, taskB_stack, sizeof(taskB_stack) );
TaskC_ID=os_tsk_create_user( TaskC, 2, taskC_stack, sizeof(taskC_stack) );
TaskD_ID=os_tsk_create_user( TaskD, 3, taskD_stack, sizeof(taskD_stack) );
//os_dly_wait(ms(100));
//os_tsk_delete_self ();
MainInit();
//OSTaskSuspend(TaskB_ID);
DelayNop(1);
}
//44.2368MHz
void main(void)
{//char ie_par;
DelayNop(1);
os_sys_init(init);
//MainInit();
while(1)
{
DelayNop(1);
PCON = PCON | 0x01; // CPU进入休眠状态
//ie_par=IE;
DelayNop(1);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -