⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 user.c

📁 关于嵌入式操作系统TRON的一个机械控制的例子
💻 C
字号:
#include "user.h"
#include "core_api.h"
#include "defs.h"
#include "stdio.h"

#include "api.h"

struct {
U8 forward1;
U8 backward1;
U8 backlimit;
U8 forwardlimit;
} status ;

S32  cycletsk(S32 dat)
{
	U8 k;
	////////Add you code here //////////////
	//printf("I'm cycletsk.  delay 500ms\n");
	k=readstatus();
	if(k==1)
	status.backlimit=1;
	else if(k==2)
	status.forwardlimit=1;
	else
	status.backlimit=status.forwardlimit=0;
	dly_tsk(20);
	////////////////////////////////////////
	return 0;
}


int flag=0;
S32  taskA(S32  dat)
{  
	static	U8	sta0,sta1,sta2;
	sta0 = sta1;
	sta1 = sta2;
	sta2 = key1Scan0();
	if((!sta0)&&sta1&&sta2)			//key1Scan()
	{
		if(flag++%2==0)
		{
			status.forward1=1;
			status.backward1=0;
		}
        
		else
		{ 
			status.forward1=0;
			status.backward1=1;             
		}  
   
	} 
   
	dly_tsk(50);
	return 0;
}

//int i = 0;
S32  taskB(S32  dat)
{ 
	if (status.forward1)			//(status.backlimit==1)
		forward();
        
	else if(status.backward1)		//(status.forwardlimit==1)
		backward();
    
	if(((status.backlimit==1)&&status.backward1)||((status.forwardlimit==1)&&status.forward1))
	{
		status.forward1=status.backward1=0;
		stop();
	}  
    
    dly_tsk(100);
	return 0;
} 


static U8 t=0;
static U8 k=0;
static U8 m=0;
static U8 n=0;
S32  ScanTsk(S32 dat)
{ 
	if(status.forwardlimit==1)
	{
		k++;
		HC595_SendDat(k%16);
		if(k>=100)			//100*50ms
		{
			k=0;
			status.forward1=0;
			status.backward1=1;
		}
	}
	else
	{
		k=0;  
		HC595_SendDat(t++%16);
	}
   
	if(status.forward1)
	{ 
		m++;
		if(m>=45)
		{
			m=0;
			status.forward1=0;
			stop();
			status.backward1=1;
		}
	}
	else
		m=0;				//防止正转过程中按键,则正转计数清零
	if(status.backward1)
	{ 
		n++;
		if(n>=45)			//45*50ms
		{
			n=0;
			status.backward1=0;
			stop();
			status.forward1=1;
		}
	}
	else
		n=0;				//反转计数清零
		
	dly_tsk(50);			//50ms
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -