task.c~

来自「UCOS-II ATMEGA128 移殖」· C~ 代码 · 共 73 行

C~
73
字号
#include <mega128.h>
#include "ucos_ii.h"
#include "lcd.h"
#include "lio.h"
#include "key.h"
#include "task.h"
#include "menu.h"

 void  KeyScanTask(void *p_arg);
 void  MenuProcTask(void *p_arg);
 void  MenuDispTask(void *p_arg);
 void SecondTask(void *lcndata);

#define ADC_KEY_CHANNEL         	0x40  

static void  KeyScanTask (void *p_arg)
{
    INT8U i;
	INT8U err;
	INT16U ADC_key;
#if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
    OS_CPU_SR  cpu_sr;
#endif
    p_arg = p_arg;                               /* Prevent compiler warnings                          */

    while (TRUE)                                /* Task body, always written as an infinite loop.     */
    {
		OSTimeDly(2);	    
    	OS_ENTER_CRITICAL();
		ADMUX = ADC_KEY_CHANNEL;               //键盘扫描
        ADC_key = ADCW;
		OS_EXIT_CRITICAL();  
        key_scan(ADC_key);
		if(F_KEY_OK == 1)
			OSSemPost(KeySem);
		OS_ENTER_CRITICAL();
			ADCSRA &=~ (1<<ADIF) ;       		   
    		ADCSRA |= (1 << ADSC);				//*重新启动ADC	
		OS_EXIT_CRITICAL();  
    }
}


//秒定时中断
INT8U t1s;
static void SecondTask(void *lcndata) 
{
	lcndata=lcndata;
	while(1)
	{
		t1s++;
		PORTD ^= 0x01;
		OSTimeDly(OS_TICKS_PER_SEC);	
	}
}


static void  MenuProcTask(void *p_arg)
{
    INT8U  err;
	p_arg = p_arg;
    menu_init();
	while (TRUE) 
	{
		OSSemPend(KeySem,0, &err);
		if(err == OS_NO_ERR)
		{
		    menu_select(KEY_value);
		 	F_KEY_OK = 0;
		}
		
    }
}

⌨️ 快捷键说明

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