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

📄 timertest.c

📁 本人编写的无线电话程序,给予PIC18C801设计,包括了uCOS的移植以及菜单,自己设计的拼音注入法,完整地一级汉字库,希望对大家有所帮助
💻 C
📖 第 1 页 / 共 3 页
字号:
				}
				else{
					(void)Disp_Word(16,16,0x0039,0);
					toggle=1;
				}
				err=OSSemPost(DisplaySem);
				if(err!=OS_NO_ERR)	OSTrap(TASK_1_PRIO+48);
*/				
			
				addr1=(TIMER_MESSAGE *)OSMemGet(pMemSml,&err);
				if(err!=OS_NO_ERR){
				OSTrap(TASK_1_PRIO+80);
				}
				addr1->Len=8;
				addr1->Src=TASK_1_PRIO;
				addr1->Des=TASK_TIMER_PRIO;
				addr1->MID=Timer_Start;
				addr1->TID=0x5678;
				addr1->Val=50;

			    OSQPost(MsgQueue[TASK_TIMER_PRIO],(rom INT8U *)addr1);
			}

			err=OSMemPut(pMemSml,msg);
			if(err!=OS_NO_ERR){
				OSTrap(TASK_1_PRIO+96);
			}
		}
	}
}
//===================================================================
void  Task2 (void *data)
{
    rom INT8U *msg;
    INT8U  err;
	rom INT8U *addr1;
	INT8U i;

	INT16U	times;
	INT8U	localH;
	INT8U	localM;
	INT8U	localS;
    
    times=0x0030;

	localH=17;
	localM=15;
	localS=0;	//16:55:00

    
    data = data;
    for (;;) {
		msg = (rom INT8U *)OSQPend(MsgQueue[TASK_2_PRIO],0, &err);


//		if((unsigned short long)msg<0x11a006 || (unsigned short long)msg>=0x11C006
		if((unsigned short long)msg<0x11a006 || (unsigned short long)msg>=0x11C006){

			CheckBytes[0]=TASK_2_PRIO+64;
			CheckBytes[1]=err;
			CheckAddr=msg;
			OSTrap(TASK_2_PRIO+64);

		}
		else if(msg[TASK_3_PRIO]!=TASK_3_PRIO
			|| msg[TASK_4_PRIO]!=TASK_4_PRIO
			|| msg[TASK_5_PRIO]!=TASK_5_PRIO
			|| msg[TASK_6_PRIO]!=TASK_6_PRIO
			|| msg[TASK_7_PRIO]!=TASK_7_PRIO
			|| msg[TASK_8_PRIO]!=TASK_8_PRIO
			|| msg[TASK_9_PRIO]!=TASK_9_PRIO
			|| msg[TASK_10_PRIO]!=TASK_10_PRIO
			|| msg[TASK_11_PRIO]!=TASK_11_PRIO
			|| msg[TASK_12_PRIO]!=TASK_12_PRIO
			|| msg[TASK_13_PRIO]!=TASK_13_PRIO){
			CheckBytes[0]=TASK_2_PRIO;
			CheckBytes[1]=err;
			for(i=1;i<14;i++)	CheckBytes[i+1]=msg[i];
			CheckAddr=msg;
			//CheckBytes[1]=(INT8U)((msg>>16)&0xff);
			//CheckBytes[2]=(INT8U)((msg>>8)&0xff);
			//CheckBytes[3]=(INT8U)(msg&0xff);
			OSTrap(TASK_2_PRIO);
		}
		else{
			if(times&0x0001){
				localS++;
				if(localS>=60){
					localS=0;
					localM++;
					if(localM>=60){
						localM=0;
						localH++;
						if(localH>=24)	localH=0;
					}
				}
//				i=Disp_Word(0,0,times,1);
				
				OSSemPend (DisplaySem,0,&err);
				if(err!=OS_NO_ERR)	OSTrap(TASK_2_PRIO+48);
				Display_Time(localH/10+0x30,localH%10+0x30,localM/10+0x30,localM%10+0x30,0);
				err=OSSemPost(DisplaySem);
				if(err!=OS_NO_ERR)	OSTrap(TASK_2_PRIO+48);
			}
			else{
				OSSemPend (DisplaySem,0,&err);
				if(err!=OS_NO_ERR)	OSTrap(TASK_2_PRIO+48);
				Display_Time(localH/10+0x30,localH%10+0x30,localM/10+0x30,localM%10+0x30,1);
				err=OSSemPost(DisplaySem);
				if(err!=OS_NO_ERR)	OSTrap(TASK_2_PRIO+48);
			}
			times++;
			if(times>0x0039)	times=0x0030;


/*			addr1=OSMemGet(pMemSml,&err);
			for(i=1;i<16;i++)		addr1[i]=0xEE;
			if(err!=OS_NO_ERR){
				CheckBytes[0]=TASK_2_PRIO+80;
				CheckAddr=addr1;
				OSTrap(TASK_2_PRIO+80);
			}

			msg[TASK_2_PRIO]=TASK_2_PRIO;
			for(i=1;i<16;i++)	addr1[i]=msg[i];
			
	        OSQPost(MsgQueue[TASK_1_PRIO],addr1);
*/
			err=OSMemPut(pMemSml,msg);
			if(err!=OS_NO_ERR){
				CheckBytes[0]=TASK_2_PRIO+96;
				CheckAddr=msg;
				OSTrap(TASK_2_PRIO+96);
			}

//			msg[TASK_2_PRIO]=TASK_2_PRIO;
//	        OSQPost(MsgQueue[TASK_1_PRIO],msg);
		}


    }
}
//===================================================================
void  Task3 (void *data)
{
    rom INT8U *msg;
    INT8U  err;
	rom INT8U *addr1;
	INT8U i;
    
    data = data;
    for (;;) {
		msg = (rom INT8U *)OSQPend(MsgQueue[TASK_3_PRIO],0, &err);

//		if((unsigned short long)msg<0x11a006 || (unsigned short long)msg>=0x11C006
		if((unsigned short long)msg<0x11a006 || (unsigned short long)msg>=0x11C006){

			CheckBytes[0]=TASK_3_PRIO+64;
			CheckBytes[1]=err;
			CheckAddr=msg;
			OSTrap(TASK_3_PRIO+64);

		}
		else if(msg[TASK_4_PRIO]!=TASK_4_PRIO
			|| msg[TASK_5_PRIO]!=TASK_5_PRIO
			|| msg[TASK_6_PRIO]!=TASK_6_PRIO
			|| msg[TASK_7_PRIO]!=TASK_7_PRIO
			|| msg[TASK_8_PRIO]!=TASK_8_PRIO
			|| msg[TASK_9_PRIO]!=TASK_9_PRIO
			|| msg[TASK_10_PRIO]!=TASK_10_PRIO
			|| msg[TASK_11_PRIO]!=TASK_11_PRIO
			|| msg[TASK_12_PRIO]!=TASK_12_PRIO
			|| msg[TASK_13_PRIO]!=TASK_13_PRIO){
			CheckBytes[0]=TASK_3_PRIO;
			CheckBytes[1]=err;
			for(i=1;i<14;i++)	CheckBytes[i+1]=msg[i];
			CheckAddr=msg;
			//CheckBytes[1]=(INT8U)((msg>>16)&0xff);
			//CheckBytes[2]=(INT8U)((msg>>8)&0xff);
			//CheckBytes[3]=(INT8U)(msg&0xff);
			OSTrap(TASK_3_PRIO);
		}
		else{

			addr1=OSMemGet(pMemSml,&err);
			for(i=1;i<16;i++)		addr1[i]=0xEE;
			if(err!=OS_NO_ERR){
				CheckBytes[0]=TASK_3_PRIO+80;
				CheckAddr=addr1;
				OSTrap(TASK_3_PRIO+80);
			}

			msg[TASK_3_PRIO]=TASK_3_PRIO;
			for(i=1;i<16;i++)	addr1[i]=msg[i];
			
	        OSQPost(MsgQueue[TASK_2_PRIO],addr1);

			err=OSMemPut(pMemSml,msg);
			if(err!=OS_NO_ERR){
				CheckBytes[0]=TASK_3_PRIO+96;
				CheckAddr=msg;
				OSTrap(TASK_3_PRIO+96);
			}

//			msg[TASK_3_PRIO]=TASK_3_PRIO;
//	        OSQPost(MsgQueue[TASK_2_PRIO],msg);
		}

    }
}
//===================================================================
void  Task4 (void *data)
{
    rom INT8U *msg;
    INT8U  err;
	rom INT8U *addr1;
	INT8U i;
    
    data = data;
    for (;;) {
		msg = (rom INT8U *)OSQPend(MsgQueue[TASK_4_PRIO],0, &err);

//		if((unsigned short long)msg<0x11a006 || (unsigned short long)msg>=0x11C006
		if((unsigned short long)msg<0x11a006 || (unsigned short long)msg>=0x11C006){

			CheckBytes[0]=TASK_4_PRIO+64;
			CheckBytes[1]=err;
			CheckAddr=msg;
			OSTrap(TASK_4_PRIO+64);

		}
		else if(msg[TASK_5_PRIO]!=TASK_5_PRIO
			|| msg[TASK_6_PRIO]!=TASK_6_PRIO
			|| msg[TASK_7_PRIO]!=TASK_7_PRIO
			|| msg[TASK_8_PRIO]!=TASK_8_PRIO
			|| msg[TASK_9_PRIO]!=TASK_9_PRIO
			|| msg[TASK_10_PRIO]!=TASK_10_PRIO
			|| msg[TASK_11_PRIO]!=TASK_11_PRIO
			|| msg[TASK_12_PRIO]!=TASK_12_PRIO
			|| msg[TASK_13_PRIO]!=TASK_13_PRIO){
			CheckBytes[0]=TASK_4_PRIO;
			CheckBytes[1]=err;
			for(i=1;i<14;i++)	CheckBytes[i+1]=msg[i];
			CheckAddr=msg;
			LoopForTest();
		}
		else{
			addr1=OSMemGet(pMemSml,&err);
			for(i=1;i<16;i++)		addr1[i]=0xEE;
			if(err!=OS_NO_ERR){
				CheckBytes[0]=TASK_4_PRIO+80;
				CheckAddr=addr1;
				LoopForTest();
			}

			msg[TASK_4_PRIO]=TASK_4_PRIO;
			for(i=1;i<16;i++)	addr1[i]=msg[i];
			
	        OSQPost(MsgQueue[TASK_3_PRIO],addr1);

			err=OSMemPut(pMemSml,msg);
			if(err!=OS_NO_ERR){
				CheckBytes[0]=TASK_4_PRIO+96;
				CheckAddr=msg;
				LoopForTest();
			}
//			msg[TASK_4_PRIO]=TASK_4_PRIO;
//	        OSQPost(MsgQueue[TASK_3_PRIO],msg);
		}


    }
}
//===================================================================
void  Task5 (void *data)
{
    rom INT8U *msg;
    INT8U  err;
	rom INT8U *addr1;
	INT8U i;
    
    data = data;
    for (;;) {
		msg = (rom INT8U *)OSQPend(MsgQueue[TASK_5_PRIO],0, &err);

//		if((unsigned short long)msg<0x11a006 || (unsigned short long)msg>=0x11C006
		if((unsigned short long)msg<0x11a006 || (unsigned short long)msg>=0x11C006){

			CheckBytes[0]=TASK_5_PRIO+64;
			CheckBytes[1]=err;
			CheckAddr=msg;
			LoopForTest();

		}
		else if(msg[TASK_6_PRIO]!=TASK_6_PRIO
			|| msg[TASK_7_PRIO]!=TASK_7_PRIO
			|| msg[TASK_8_PRIO]!=TASK_8_PRIO
			|| msg[TASK_9_PRIO]!=TASK_9_PRIO
			|| msg[TASK_10_PRIO]!=TASK_10_PRIO
			|| msg[TASK_11_PRIO]!=TASK_11_PRIO
			|| msg[TASK_12_PRIO]!=TASK_12_PRIO
			|| msg[TASK_13_PRIO]!=TASK_13_PRIO){
			CheckBytes[0]=TASK_5_PRIO;
			CheckBytes[1]=err;
			for(i=1;i<14;i++)	CheckBytes[i+1]=msg[i];
			CheckAddr=msg;
			//CheckBytes[1]=(INT8U)((msg>>16)&0xff);
			//CheckBytes[2]=(INT8U)((msg>>8)&0xff);
			//CheckBytes[3]=(INT8U)(msg&0xff);
			LoopForTest();
		}
		else{

			addr1=OSMemGet(pMemSml,&err);
			for(i=1;i<16;i++)		addr1[i]=0xEE;
			if(err!=OS_NO_ERR){
				CheckBytes[0]=TASK_5_PRIO+80;
				CheckAddr=addr1;
				LoopForTest();
			}

			msg[TASK_5_PRIO]=TASK_5_PRIO;
			for(i=1;i<16;i++)	addr1[i]=msg[i];
			
	        OSQPost(MsgQueue[TASK_4_PRIO],addr1);

			err=OSMemPut(pMemSml,msg);
			if(err!=OS_NO_ERR){
				CheckBytes[0]=TASK_5_PRIO+96;
				CheckAddr=msg;
				LoopForTest();
			}


//			msg[TASK_5_PRIO]=TASK_5_PRIO;
//	        OSQPost(MsgQueue[TASK_4_PRIO],msg);
		}

    }
}
//===================================================================
void  Task6 (void *data)
{
    rom INT8U *msg;
    INT8U  err;
	rom INT8U *addr1;
	INT8U i;
    
    data = data;
    for (;;) {

		msg = (rom INT8U *)OSQPend(MsgQueue[TASK_6_PRIO],0, &err);

//		if((unsigned short long)msg<0x11a006 || (unsigned short long)msg>=0x11C006
		if((unsigned short long)msg<0x11a006 || (unsigned short long)msg>=0x11C006){

			CheckBytes[0]=TASK_6_PRIO+64;
			CheckBytes[1]=err;
			CheckAddr=msg;
			LoopForTest();

		}
		else if(msg[TASK_7_PRIO]!=TASK_7_PRIO
			|| msg[TASK_8_PRIO]!=TASK_8_PRIO
			|| msg[TASK_9_PRIO]!=TASK_9_PRIO
			|| msg[TASK_10_PRIO]!=TASK_10_PRIO
			|| msg[TASK_11_PRIO]!=TASK_11_PRIO
			|| msg[TASK_12_PRIO]!=TASK_12_PRIO
			|| msg[TASK_13_PRIO]!=TASK_13_PRIO){
			CheckBytes[0]=TASK_6_PRIO;
			CheckBytes[1]=err;
			for(i=1;i<14;i++)	CheckBytes[i+1]=msg[i];
			CheckAddr=msg;
			//CheckBytes[1]=(INT8U)((msg>>16)&0xff);
			//CheckBytes[2]=(INT8U)((msg>>8)&0xff);
			//CheckBytes[3]=(INT8U)(msg&0xff);
			LoopForTest();
		}
		else{

			addr1=OSMemGet(pMemSml,&err);
			for(i=1;i<16;i++)		addr1[i]=0xEE;
			if(err!=OS_NO_ERR){
				CheckBytes[0]=TASK_6_PRIO+80;
				CheckAddr=addr1;
				LoopForTest();
			}

			msg[TASK_6_PRIO]=TASK_6_PRIO;
			for(i=1;i<16;i++)	addr1[i]=msg[i];
			
	        OSQPost(MsgQueue[TASK_5_PRIO],addr1);

			err=OSMemPut(pMemSml,msg);
			if(err!=OS_NO_ERR){
				CheckBytes[0]=TASK_6_PRIO+96;
				CheckAddr=msg;
				LoopForTest();
			}

//			msg[TASK_6_PRIO]=TASK_6_PRIO;
//	        OSQPost(MsgQueue[TASK_5_PRIO],msg);
		}


    }
}
//===================================================================
void  Task7 (void *data)
{
    rom INT8U *msg;
    INT8U  err;
	rom INT8U *addr1;
	INT8U i;
    
    data = data;
    for (;;) {
		msg = (rom INT8U *)OSQPend(MsgQueue[TASK_7_PRIO],0, &err);

//		if((unsigned short long)msg<0x11a006 || (unsigned short long)msg>=0x11C006
		if((unsigned short long)msg<0x11a006 || (unsigned short long)msg>=0x11C006){

			CheckBytes[0]=TASK_7_PRIO+64;
			CheckBytes[1]=err;
			CheckAddr=msg;
			LoopForTest();

		}
		else if(msg[TASK_8_PRIO]!=TASK_8_PRIO
			|| msg[TASK_9_PRIO]!=TASK_9_PRIO
			|| msg[TASK_10_PRIO]!=TASK_10_PRIO
			|| msg[TASK_11_PRIO]!=TASK_11_PRIO
			|| msg[TASK_12_PRIO]!=TASK_12_PRIO
			|| msg[TASK_13_PRIO]!=TASK_13_PRIO){
			CheckBytes[0]=TASK_7_PRIO;
			CheckBytes[1]=err;
			for(i=1;i<14;i++)	CheckBytes[i+1]=msg[i];
			CheckAddr=msg;
			//CheckBytes[1]=(INT8U)((msg>>16)&0xff);
			//CheckBytes[2]=(INT8U)((msg>>8)&0xff);
			//CheckBytes[3]=(INT8U)(msg&0xff);
			LoopForTest();

⌨️ 快捷键说明

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