📄 task.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 + -