yy.c

来自「找了很久,这里的C8051F020的UCOS移植.020没有SFRPAGE. 」· C语言 代码 · 共 146 行

C
146
字号
#include <includes.h>
#include "key7279.h"
void TaskStartyya(void *yydata) reentrant;
void TaskStartyyb(void *yydata) reentrant;
void TaskStartyyc(void *yydata) reentrant;
void TaskStartyyd(void *yydata) reentrant;
void config();
OS_STK TaskStartStkyya[MaxStkSize];//注意:我在ASM文件中设置?STACK空间为40H即64。
OS_STK TaskStartStkyyb[MaxStkSize];
OS_STK TaskStartStkyyc[MaxStkSize];
OS_STK TaskStartStkyyd[MaxStkSize];
extern uchar ab[8];

OS_EVENT *CommMbox,*sem,*qbox;
void *Commsg[4] ;

void config()
{//看门狗禁止   
 WDTCN=0x07;
 WDTCN=0xde;
 WDTCN=0xad;							 
 SFRPAGE=0x0f;					    

//交叉开关使能,但没有进行外围设备配置		 
 XBR0=0x00;	 //IIC配置到引脚 
 			 //SPI配置到引脚  三线四线由SPI寄存器决定 
 XBR1=0x00;//INT0和INT1配置到管脚 	
 			//xbrP1.7置位输出系统时钟频率 
 XBR3=0x00;												
 XBR2=0x42;//不将P0.5 P0.6 P0.7 分配到管脚		
 			//将T4分配到引脚,输出方波  
 //XBR2=0x41;		 //ADC0引脚连接到端口 	  

//引脚输出配置	 								  
SFRPAGE=0x0f;
P0MDOUT  = 0xff; //sclk和NSS为开漏输出 ,MOSI为主输出 	  
P1MDOUT  = 0xff;
P2MDOUT  = 0xff;
P3MDOUT  = 0xff;
P5MDOUT  = 0xff;                       // P5口设为推挽方式	    
//P5MDOUT  = 0xf8; 
P6MDOUT  = 0x00;
P7MDOUT  = 0xff;
P3MDIN   = 0xff;
//晶振配置,采用内部晶振 内部晶振是24.5M 		   
SFRPAGE=0x0f;
CLKSEL =0x00;
OSCXCN =0x00;
OSCICN =0x83;
}
  
void main(void)
{
	config();
    OSInit();    
    InitTimer0();
   
    OSTaskCreate(TaskStartyya, (void *)0, &TaskStartStkyya[0],2);
    OSTaskCreate(TaskStartyyb, (void *)0, &TaskStartStkyyb[0],3);
    OSTaskCreate(TaskStartyyc, (void *)0, &TaskStartStkyyc[0],4);    
    OSTaskCreate(TaskStartyyd, (void *)0, &TaskStartStkyyd[0],5);

	CommMbox	=   OSMboxCreate((void *)0);
	qbox		=	OSQCreate(&Commsg[0],4);
	sem			=	OSSemCreate(1);

    OSStart();
}


void TaskStartyya(void *yydata) reentrant
{	INT8U err;
	INT8U  *msg;
    yydata=yydata;
	qp7279(ab);
    for(;;){
	 	msg=OSQPend(qbox,0,&err);
		if(err==OS_NO_ERR)
		{ 
		displ(ab,*msg);
		play7279(ab);
		}
		else
		{ 
		displ(ab,0);
		play7279(ab);
		}

    }    
}
void TaskStartyyb(void *yydata) reentrant
{	INT8U err;
	INT8U  *msg;
    yydata=yydata;
    for(;;){
	 	msg=OSMboxPend(CommMbox,0,&err);
		if(err==OS_NO_ERR)
		{ 
		displ(ab,*msg);
		play7279(ab);
		}
		else
		{ 
		displ(ab,0);
		play7279(ab);
		}	   
    }  	   
}
void TaskStartyyc(void *yydata) reentrant
{	INT8U err;
    yydata=yydata;
    for(;;){
		OSSemPend(sem,0,&err);
		if(err==OS_NO_ERR)
		{ 
		displ(ab,3);
		play7279(ab);
		}
		else
		{ 
		displ(ab,0);
		play7279(ab);
		}	   
    }  
}
void TaskStartyyd(void *yydata) reentrant
{	INT8U err;
	INT8U	youxia=0x02,yx=0x07;
    yydata=yydata;
    for(;;){
//		err=OSQPostFront(qbox,(void *)&yx);
		err=OSQPost(qbox,(void *)&yx);

		OSTimeDly(OS_TICKS_PER_SEC);

		err=OSMboxPost(CommMbox,(void *)&youxia) ;

		OSTimeDly(OS_TICKS_PER_SEC*2);  

		err=OSSemPost(sem);

		OSTimeDly(OS_TICKS_PER_SEC*3);  		  
//		youxia++;if(youxia==10)youxia=1;
//		yx--; if(yx==0)	yx=9;
    }      
}

⌨️ 快捷键说明

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