📄 tranf.txt
字号:
/************************Test*************************************/
#include "includes.h"
#define TASK_STK_SIZE 512 //任务堆栈长度
char *s1="light green ";
char *s2="light red ";
char *s3="light yellow";
char *s4="the traffic control system";
char *s5=" ";
char *s6="slowly cross to east ";
char *s7="slowly cross to west ";
char *s8="slowly cross to north ";
char *s9="slowly cross to south ";
char *s10="the car cross to east wait";
char *s11="the car cross to west wait";
char *s12="the car cross to north wait";
char *s13="the car cross to south wait";
char *s14="please cross to left slowly";
char *s15=" ";
//char *s16="please input a number :";
BOOLEAN ac_key;
//INT8U err;
//INT8U y=0; //字符显示位置
INT16S key; //用于退出的键
INT8U n;
//INT16U m;
//OS_EVENT *Fun_Semp;
OS_STK StartTaskStk[TASK_STK_SIZE]; //定义任务堆栈区
OS_STK Task1Stk[TASK_STK_SIZE];//东西为绿,南北为红
OS_STK Task2Stk[TASK_STK_SIZE];//东西为黄,南北为红
OS_STK Task3Stk[TASK_STK_SIZE];//东西为红,南北为绿
OS_STK Task4Stk[TASK_STK_SIZE];//南北为黄,东西为红
//INT16U Fun(INT16U x);//统计车辆数目
//INT16U Fun1(INT16U x);
void StartTask(void *pdata); //声明起始任务
void Task1(void *pdata); //声明任务
void Task2(void *pdata); //声明任务
void Task3(void *pdata); //声明任务
void Task4(void *pdata); //声明任务
/************************主函数*********************************/
void main (void)
{
//定义信号量
OSInit(); //初始化uCOS_II
ac_key=1;// Fun_Semp=OSSemCreate(0);
PC_DOSSaveReturn( ); //保存Dos环境
PC_VectSet(uCOS, OSCtxSw); //安装uCOS_II中断
OSTaskCreate(StartTask, //创建任务StartTask
(void*)0, //给任务传递参数
&StartTaskStk[TASK_STK_SIZE - 1], //设置任务堆栈栈顶
0); //使任务的优先级别为0
// PC_DispStr(1,16,
// Fun1,
// DISP_BGND_BLACK+DISP_FGND_WHITE );
//scanf("%d",&m);
OSStart();
}
/***********************任务StartTask*******************************/
void StartTask (void *pdata)
{
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr;
#endif
pdata=pdata;
OS_ENTER_CRITICAL( );
PC_VectSet(0x08, OSTickISR); //安装时钟中断向量
PC_SetTickRate(OS_TICKS_PER_SEC); //设置uCOS_II时钟频率
OS_EXIT_CRITICAL( );
OSStatInit( ); //初始化统计任务
OSTaskCreate(Task1, //创建任务
(void*)0, //给任务传递参数
&Task1Stk[TASK_STK_SIZE - 1], //设置任务堆栈栈顶
1); //使任务的优先级别
OSTaskCreate(Task2, //创建任务
(void*)0, //给任务传递参数
&Task2Stk[TASK_STK_SIZE - 1], //设置任务堆栈栈顶
2); //使任务的优先级别
OSTaskCreate(Task3, //创建任务
(void*)0, //给任务传递参数
&Task3Stk[TASK_STK_SIZE - 1], //设置任务堆栈栈顶
3); //使任务的优先级别
OSTaskCreate(Task4, //创建任务
(void*)0, //给任务传递参数
&Task4Stk[TASK_STK_SIZE - 1], //设置任务堆栈栈顶
4); //使任务的优先级别
for (;;)
{
PC_DispStr(20,0,
s4,
DISP_BGND_BLACK+DISP_FGND_WHITE );
//如果按下Esc键则退出uCOS_II
if (PC_GetKey(&key) == TRUE)
{
if (key == 0x1B)
{
PC_DOSReturn( );
}
}
OSTimeDlyHMSM(0, 0, 3, 0); //等待3秒
}
}
/************************任务Task1*******************************/
void Task1 (void *pdata)
{
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr;
#endif
pdata = pdata;
for (;;)
{ // OSSemPend(Fun_Semp,0,&err); //请求信号量
if(ac_key)
{
ac_key=FALSE;
PC_DispStr(25,2,
s2,
DISP_BGND_BLACK+DISP_FGND_RED );
PC_DispStr(25,3,
s13,
DISP_BGND_BLACK+DISP_FGND_RED );//向南行的等
PC_DispStr(25,4,
s15,
DISP_BGND_BLACK+DISP_FGND_RED );//???????????????????
PC_DispStr(25,12,
s2,
DISP_BGND_BLACK+DISP_FGND_RED);
PC_DispStr(25,13,
s12,
DISP_BGND_BLACK+DISP_FGND_RED);//向北行的等
PC_DispStr(25,14,
s15,
DISP_BGND_BLACK+DISP_FGND_RED);//?????????????????
PC_DispStr(1,7,
s1,
DISP_BGND_BLACK+DISP_FGND_GREEN );
PC_DispStr(1,8,
s6,
DISP_BGND_BLACK+DISP_FGND_GREEN );//过西向东
PC_DispStr(1,9,
s14,
DISP_BGND_BLACK+DISP_FGND_GREEN );//左转
PC_DispStr(50,7,
s1,
DISP_BGND_BLACK+DISP_FGND_GREEN );
PC_DispStr(50,8,
s7,
DISP_BGND_BLACK+DISP_FGND_GREEN );//过东向西
PC_DispStr(50,9,
s14,
DISP_BGND_BLACK+DISP_FGND_GREEN );//左转
OSTimeDlyHMSM(0, 0,10, 0); //等待200毫秒
ac_key=TRUE;
}
OSTimeDlyHMSM(0, 0,0, 200);
}
}
/************************任务Task2******************************/
void Task2 (void *pdata)
{
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr;
#endif
pdata = pdata;
for (;;)
{ //OSSemPend(Fun_Semp,0,&err); //请求信号量
if(ac_key)
{
ac_key=FALSE;
PC_DispStr(25,2,
s2,
DISP_BGND_BLACK+DISP_FGND_RED );
//PC_DispStr(25,3,
//s13,
// DISP_BGND_BLACK+DISP_FGND_RED );//向南行的等
PC_DispStr(25,12,
s2,
DISP_BGND_BLACK+DISP_FGND_RED );
// PC_DispStr(25,13,
//s12,
//DISP_BGND_BLACK+DISP_FGND_RED);//向北行的等
//可在此添加任务5显示车辆数目
for( n=3;n>0;n--)
{
PC_DispStr(1,7,s3,DISP_BGND_BLACK+DISP_FGND_YELLOW );
PC_DispStr(50,7,s3,DISP_BGND_BLACK+DISP_FGND_YELLOW );
OSTimeDlyHMSM(0, 0,0, 500);
PC_DispStr(1,7,s5,DISP_BGND_BLACK+DISP_FGND_YELLOW );
PC_DispStr(50,7,s5,DISP_BGND_BLACK+DISP_FGND_YELLOW );
OSTimeDlyHMSM(0, 0,0,500);
}
//OSTimeDlyHMSM(0, 0,3, 0);
ac_key=TRUE;
}
OSTimeDlyHMSM(0, 0,0, 200); //等待200毫秒
}
}
/************************Task3**************************************/
void Task3 (void *pdata)
{
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr;
#endif
pdata = pdata;
for (;;)
{ // OSSemPend(Fun_Semp,0,&err); //请求信号量
if(ac_key)
{
ac_key=FALSE;
PC_DispStr(25,2,
s1,
DISP_BGND_BLACK+DISP_FGND_GREEN );
PC_DispStr(25,3,
s9,
DISP_BGND_BLACK+DISP_FGND_GREEN );//过北向南
PC_DispStr(25,4,
s14,
DISP_BGND_BLACK+DISP_FGND_GREEN );//左转
PC_DispStr(25,12,
s1,
DISP_BGND_BLACK+DISP_FGND_GREEN );
PC_DispStr(25,13,
s8,
DISP_BGND_BLACK+DISP_FGND_GREEN );//过南向北
PC_DispStr(25,14,
s14,
DISP_BGND_BLACK+DISP_FGND_GREEN );//左转
PC_DispStr(1,7,
s2,
DISP_BGND_BLACK+DISP_FGND_RED );
PC_DispStr(1,8,
s10,
DISP_BGND_BLACK+DISP_FGND_RED );//向东行的等
PC_DispStr(1,9,
s15,
DISP_BGND_BLACK+DISP_FGND_GREEN );//????????????????????????????????
PC_DispStr(50,7,
s2,
DISP_BGND_BLACK+DISP_FGND_RED );
PC_DispStr(50,8,
s11,
DISP_BGND_BLACK+DISP_FGND_RED );//向西行的等
PC_DispStr(50,9,
s15,
DISP_BGND_BLACK+DISP_FGND_GREEN );//????????????????????????????????????
OSTimeDlyHMSM(0, 0,10, 0);
ac_key=TRUE;
}
OSTimeDlyHMSM(0, 0,0, 200); //等待200毫秒
}
}
/************************任务Task4******************************/
void Task4 (void *pdata)
{
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr;
#endif
pdata = pdata;
for (;;)
{ // OSSemPend(Fun_Semp,0,&err); //请求信号量
if(ac_key)
{
ac_key=FALSE;
PC_DispStr(1,7,
s2,
DISP_BGND_BLACK+DISP_FGND_RED );
//PC_DispStr(1,8,
//s10,
//DISP_BGND_BLACK+DISP_FGND_RED );//向东行的等
PC_DispStr(50,7,
s2,
DISP_BGND_BLACK+DISP_FGND_RED );
//PC_DispStr(50,8,
//s11,
//DISP_BGND_BLACK+DISP_FGND_RED );//向西行的等
//可在此添加任务6显示车辆数目
for(n=3;n>0;n--)
{
PC_DispStr(25,2,
s3,
DISP_BGND_BLACK+DISP_FGND_YELLOW );
PC_DispStr(25,12,
s3,
DISP_BGND_BLACK+DISP_FGND_YELLOW );
OSTimeDlyHMSM(0, 0,0, 500);
PC_DispStr(25,2,
s5,
DISP_BGND_BLACK+DISP_FGND_YELLOW );
PC_DispStr(25,12,
s5,
DISP_BGND_BLACK+DISP_FGND_YELLOW );
OSTimeDlyHMSM(0, 0,0, 500);
}
// PC_DispStr(1,5,
// s2,
// DISP_BGND_BLACK+DISP_FGND_RED );
// PC_DispStr(50,5,
// s2,
//DISP_BGND_BLACK+DISP_FGND_RED );
//OSTimeDlyHMSM(0, 0,3, 0);
ac_key=TRUE;
}
OSTimeDlyHMSM(0, 0,0, 200); //等待200毫秒
}
}
/************************Fun1**************************************/
//INT16U Fun1(INT16U x)
//{
// printf("%c\n",s16);
// printf("%d\n",m);
//}
/**************************end***********************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -