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

📄 task.c~

📁 UCOS-II ATMEGA128 移殖
💻 C~
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -