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

📄 taskkey.c

📁 Keil单片机软件开发平台下的一个51系列单片机工程
💻 C
📖 第 1 页 / 共 3 页
字号:
/*--------------文件信息--------------------------------------------------------------------------------
**文   件   名: I2C_24C04.C
**创   建   人: 刘宝贵
**最后修改日期: 2005 07 19
**描        述: A24c04驱动函数
**
**--------------历史版本信息----------------------------------------------------------------------------
** 修改人: 
** 版  本: 
** 日 期: 
** 描 述: 
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人: 
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#include"includes.h"
#define KEY_FUNCTION 0x0C
#define KEY_RUN      0x0D 
#define KEY_STOP     0x0F 
#define KEY_PAUSE    0x0E 
#define KEY_LEFT     0x0B 
#define KEY_YES      0x0A
#define KEY_0        0x0 
#define KEY_1        0x1 
#define KEY_2        0x2 
#define KEY_3        0x3 
#define KEY_4        0x4 
#define KEY_5        0x5 
#define KEY_6        0x6 
#define KEY_7        0x7 
#define KEY_8        0x8 
#define KEY_9        0x9 

#define KEY_NULL 0xFF
unsigned char KeyNumber;
/*********************************************************************************************************
** 函数名称: 
** 功能描述: 
** 输 入:   
** 输 出:   
** 全局变量: 
** 调用模块: 
** 注  意:
** 作 者: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void InitializeNewStep()
{
    LoadSingleStep(ProgramNo,Step);//读取工步
    if(CheckSingleStep() == 0)//检测读取的工步是否合法 0:不合法。
    {
        Mode = 99;
        LoopTimes = 0;
        SetupI = 0;
        SetupU = 0;
//        IntervalTimeM = 0;
        JumpTimeM = 0;
        JumpU = 0;
        JumpQ = 0;
    }
    Deep0Focus = 1;
    Deep1Focus = 0;
}
/*********************************************************************************************************
** 函数名称: 
** 功能描述: 
** 输 入:   
** 输 出:   
** 全局变量: 
** 调用模块: 
** 注  意:
** 作 者: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
unsigned char ReadKey()
{
    unsigned char data keytemp,keytemp1;
    do
    {
        os_wait (K_TMO, 20/OS_MSEL_PER_TICKS, 0);
        keytemp = ReadOutXRAM(CPLD_KEY_NUMBER);//读CPLD的键盘寄存器
        os_wait (K_TMO, 20/OS_MSEL_PER_TICKS, 0);
        keytemp1 = ReadOutXRAM(CPLD_KEY_NUMBER);//读CPLD的键盘寄存器
    }while(keytemp != keytemp1 || keytemp > 15);
    switch(keytemp1)
    {
/*
        case    0:keytemp = KEY_FUNCTION  ;break;
        case    1:keytemp = KEY_1         ;break;
        case    2:keytemp = KEY_2         ;break;
        case    3:keytemp = KEY_3         ;break;
        case    4:keytemp = KEY_RUN       ;break;
        case    5:keytemp = KEY_4         ;break;
        case    6:keytemp = KEY_5         ;break;
        case    7:keytemp = KEY_6         ;break;
        case    8:keytemp = KEY_STOP      ;break;
        case    9:keytemp = KEY_7         ;break;
        case 0x0A:keytemp = KEY_8         ;break;
        case 0x0B:keytemp = KEY_9         ;break;
        case 0x0C:keytemp = KEY_PAUSE     ;break;
        case 0x0D:keytemp = KEY_LEFT      ;break;
        case 0x0E:keytemp = KEY_YES       ;break;
        case 0x0F:keytemp = KEY_0         ;break;
*/
        case    0:keytemp = KEY_FUNCTION  ;break;
        case    1:keytemp = KEY_PAUSE     ;break;
        case    2:keytemp = KEY_STOP      ;break;
        case    3:keytemp = KEY_RUN       ;break;
        case    4:keytemp = KEY_1         ;break;
        case    5:keytemp = KEY_4         ;break;
        case    6:keytemp = KEY_7         ;break;
        case    7:keytemp = KEY_LEFT      ;break;
        case    8:keytemp = KEY_2         ;break;
        case    9:keytemp = KEY_5         ;break;
        case 0x0A:keytemp = KEY_8         ;break;
        case 0x0B:keytemp = KEY_YES       ;break;
        case 0x0C:keytemp = KEY_3         ;break;
        case 0x0D:keytemp = KEY_6         ;break;
        case 0x0E:keytemp = KEY_9         ;break;
        case 0x0F:keytemp = KEY_0         ;break;
    }
    return(keytemp);
}

/*********************************************************************************************************
** 函数名称: 
** 功能描述: 
** 输 入:   
** 输 出:   
** 全局变量: 
** 调用模块: 
** 注  意:
** 作 者: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void TaskKey (void) _task_ 1  
{
    unsigned char data KeyNumber;
    Deep0Focus = 0;
    Deep1Focus = 0;
    while(1)
    {
        KeyNumber = ReadKey();
        switch(KeyNumber)
        {
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
            case 6:
            case 7:
            case 8:
            case 9:
            {
                uint16 temp16;
                uint8 temp8;
                switch(State)
                {
                    case RUN:
                    {
                        if(KeyNumber == 1 && Debug ==0 )//在运行时按数字键1则显示调试信息
                        {
                            Debug = 1;
                        }
                        else
                        {
                            Debug = 0;
                        }
                    }break;
                    case FUNCTION_TABLE:
                    {
                        switch(KeyNumber)
                        {
                            case 1://转设定工步
                            {
                                ProgramNo = 0;
                                State = SET_PROGRAM_STEP;
                                EepromWriteByte(E2State ,State);
                                Deep0Focus = 1;
                                Deep1Focus = 0;
                                Step = 0;
                                LoadSingleStep(ProgramNo,Step);//读取工步
                                if(CheckSingleStep() == 0)//检测读取的工步是否合法 0:不合法。
                                {
                                    Mode=99;
                                }
                            }break;
                            case 2://转设定参数
                            {
                                State = SET_PARAMETER;
                                EepromWriteByte(E2State ,State);
                                Deep0Focus=0;
                                Deep1Focus=0;
                            }break;
                            default://返回停止页面
                            {
                                State = STOP;
                                EepromWriteByte(E2State ,State);
                            }
                        }
                    }break;
                    case SET_PARAMETER:
                    {
                        switch(Deep0Focus)
                        {
                            case 0://设定地址
                            {
                                if(Deep1Focus!=255)
                                {
                                    temp16=1;
                                    temp8 = Deep1Focus--;
                                    while(temp8>0)
                                    {
                                        temp8--;
                                        temp16*=10;
                                    }
                                    Address += (unsigned char)(temp16*KeyNumber);
                                }
                            }break;
                            case 1://Ib
                            {
                                if(Deep1Focus!=255)
                                {
                                    temp16=1;
                                    temp8 = Deep1Focus--;
                                    while(temp8>0)
                                    {
                                        temp8--;
                                        temp16*=10;
                                    }
                                    Ib += temp16*KeyNumber;
                                }
                            }break;
                            case 2://Ik
                            {
                                if(Deep1Focus!=255)
                                {
                                    temp16=1;
                                    temp8 = Deep1Focus--;
                                    while(temp8>0)
                                    {
                                        temp8--;
                                        temp16*=10;
                                    }
                                    Ik += temp16*KeyNumber;
                                }
                            }break;
                            case 3://设定Ub
                            {
                                if(Deep1Focus!=255)
                                {
                                    temp16=1;
                                    temp8 = Deep1Focus--;
                                    while(temp8>0)
                                    {
                                        temp8--;
                                        temp16*=10;
                                    }
                                    Ub += temp16*KeyNumber;
                                }
                            }break;
                            case 4://设定Uk
                            {
                                if(Deep1Focus!=255)
                                {
                                    temp16=1;
                                    temp8 = Deep1Focus--;
                                    while(temp8>0)
                                    {
                                        temp8--;
                                        temp16*=10;
                                    }
                                    Uk += temp16*KeyNumber;
                                }
                            }break;
                            case 5://设定DAb
                            {
                                if(Deep1Focus!=255)
                                {
                                    temp16=1;
                                    temp8 = Deep1Focus--;
                                    while(temp8>0)
                                    {
                                        temp8--;
                                        temp16*=10;
                                    }
                                    DAb += temp16*KeyNumber;
                                }
                            }break;
                            case 6://设定DAk
                            {

⌨️ 快捷键说明

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