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

📄 key.c

📁 a gps program
💻 C
字号:
#include "includes.h"
#include "key.h"
#include "eeprom.h"
#include "display.h"

sbit SET = P1^1;
sbit UP = P1^2;
sbit DOWN = P1^3;

uchar KeyOld1, KeyOld2;

/*键盘扫描子函数*/
void KeyScan(void)
{
    uchar temp0, temp1;
    uchar KeyNew;
    if (SET == 0) {
        KeyNew = 0x01;
    }
    else if (UP == 0) {
        KeyNew = 0x03;
    }
    else if (DOWN == 0) {
        KeyNew = 0x02;
    }
    else {
        KeyNew = 0xff;
        KeyOld1 = 0xff;
        KeyOld2 = 0xff;
    }
    temp0 = KeyNew ^ KeyOld1;
    temp1 = KeyNew ^ KeyOld2;
    if (temp0 != 0) {
        if (temp1 != 0) {
            KeyOld2 = KeyNew;
        }
        else {
            if (KeyNew <= 0x04) {
                KeyManage(KeyNew);
				Clear();
				if (FlagSet == 0)
				    Flash = 1;
				Display();
                KeyOld1 = KeyNew;
            }
        }
    }
}
void KeyManage(uchar key_value)
{
    switch (MenuCoun) {
        case 0:
            KeySon1(key_value);
            break;
        case 1:
            KeySon2(key_value);
            break;
        case 2:
            KeySon3(key_value);
            break;
		case 3:
            KeySon4(key_value);
            break;
        case 4:
            KeySon5(key_value);
            break;
        case 5:
            KeySon6(key_value);
            break;
		case 6:
            KeySon7(key_value);
            break;
        case 7:
            KeySon8(key_value);
            break;
        case 8:
            KeySon9(key_value);
            break;
		case 9:
            KeySon10(key_value);
            break;
        case 10:
            KeySon11(key_value);
            break;
		case 11:
            KeySon12(key_value);
            break;
        default:
            break;
    }
}

void KeySon1(uchar value)
{
    switch (value) {
        case 1:
            //FlagSet = !FlagSet;
            break;
        case 2:
			MenuCoun += 1;
            break;
        case 3:
			MenuCoun = 11;
            break;
        default:
            break;
    }
}

void KeySon2(uchar value)
{
    switch (value) {
        case 1:
            //FlagSet = !FlagSet;
            break;
        case 2:
			MenuCoun += 1;
            break;
        case 3:
			MenuCoun -= 1;
            break;
        default:
            break;
    }    
}
void KeySon3(uchar value)
{
    switch (value) {
        case 1:
            //FlagSet = !FlagSet;
            break;
        case 2:
			MenuCoun += 1;
            break;
        case 3:
			MenuCoun -= 1;
            break;
        default:
            break;
    }    
}
void KeySon4(uchar value)
{
    switch (value) {
        case 1:
            //FlagSet = !FlagSet;
            break;
        case 2:
			MenuCoun += 1;
            break;
        case 3:
			MenuCoun -= 1;
            break;
        default:
            break;
    }    
}

void KeySon5(uchar value)
{
    switch (value) {
        case 1:
            //FlagSet = !FlagSet;
            break;
        case 2:
			MenuCoun += 1;
            break;
        case 3:
			MenuCoun -= 1;
            break;
        default:
            break;
    }    
}

void KeySon6(uchar value)
{
    switch (value) {
        case 1:
            FlagSet = !FlagSet;
			if (FlagSet) {
			    Set[0] = read(0);
			}
			else {
			    write(0, Set[0]);
			}
            break;
        case 2:
		    if (FlagSet) {
			    Set[0] += 1;
				if (Set[0] > 2)
				    Set[0] = 0;

			}
			else {
			    MenuCoun += 1;
			}
            break;
        case 3:
		    if (FlagSet) {
			    Set[0] -= 1;
				if (Set[0] < 0)
				    Set[0] = 2;
			}
			else {
			    MenuCoun -= 1;
			}
            break;
        default:
            break;
    }    
}

void KeySon7(uchar value)
{
    switch (value) {
        case 1:
            FlagSet = !FlagSet;
			if (FlagSet) {
			    Set[1] = read(1);
			}
			else {
			    write(1, Set[1]);
			}
            break;
        case 2:
		    if (FlagSet) {
			    Set[1] += 1;
				if (Set[1] > 2)
				    Set[1] = 0;
			}
			else {
			    MenuCoun += 1;
			}
            break;
        case 3:
		    if (FlagSet) {
			    Set[1] -= 1;
				if (Set[1] < 0)
				    Set[1] = 2;
			}
			else {
			    MenuCoun -= 1;
			}
            break;
        default:
            break;
    }    
}

void KeySon8(uchar value)
{
    switch (value) {
        case 1:
            FlagSet = !FlagSet;
			if (FlagSet) {
			    Set[2] = read(2);
			}
			else {
			    write(2, Set[2]);
			}
            break;
        case 2:
		    if (FlagSet) {
			    Set[2] += 1;
				if (Set[2] > 2)
				    Set[2] = 0;
			}
			else {
			    MenuCoun += 1;
			}
            break;
        case 3:
		    if (FlagSet) {
			    Set[2] -= 1;
				if (Set[2] < 0)
				    Set[2] = 2;
			}
			else {
			    MenuCoun -= 1;
			}
            break;
        default:
            break;
    }    
}

void KeySon9(uchar value)
{
    switch (value) {
        case 1:
            FlagSet = !FlagSet;
			if (FlagSet) {
			    Set[3] = read(3);
			}
			else {
			    write(3, Set[3]);
			}
            break;
        case 2:
		    if (FlagSet) {
			    Set[3] += 1;
				if (Set[3] > 1)
				    Set[3] = 0;
			}
			else {
			    MenuCoun += 1;
			}
            break;
        case 3:
		    if (FlagSet) {
			    Set[3] -= 1;
				if (Set[3] < 0)
				    Set[3] = 1;
			}
			else {
			    MenuCoun -= 1;
			}
            break;
        default:
            break;
    }    
}

void KeySon10(uchar value)
{
    switch (value) {
        case 1:
            FlagSet = !FlagSet;
			if (FlagSet) {
			    Set[4] = read(4);
			}
			else {
			    write(4, Set[4]);
			}
            break;
        case 2:
		    if (FlagSet) {
			    Set[4] += 1;
				if (Set[4] > 1)
				    Set[4] = 0;
			}
			else {
			    MenuCoun += 1;
			}
            break;
        case 3:
		    if (FlagSet) {
			    Set[4] -= 1;
				if (Set[4] < 0)
				    Set[4] = 1;
			}
			else {
			    MenuCoun -= 1;
			}
            break;
        default:
            break;
    }    
}

void KeySon11(uchar value)
{
    switch (value) {
        case 1:
            FlagSet = !FlagSet;
			if (FlagSet) {
			    Set[5] = read(5);
			}
			else {
			    write(5, Set[5]);
			}
            break;
        case 2:
		    if (FlagSet) {
			    Set[5] += 1;
				if (Set[5] > 1)
				    Set[5] = 0;
			}
			else {
			    MenuCoun += 1;
			}
            break;
        case 3:
		    if (FlagSet) {
			    Set[5] -= 1;
				if (Set[5] < 0)
				    Set[5] = 1;
			}
			else {
			    MenuCoun -= 1;
			}
            break;
        default:
            break;
    }    
}

void KeySon12(uchar value)
{
    switch (value) {
        case 1:
            FlagSet = !FlagSet;
			if (FlagSet) {
			    Set[6] = read(6);
			}
			else {
			    write(6, Set[6]);
			}
            break;
        case 2:
		    if (FlagSet) {
			    Set[6] += 1;
				if (Set[6] > 1)
				    Set[6] = 0;
			}
			else {
			    MenuCoun = 0;
			}
            break;
        case 3:
		    if (FlagSet) {
			    Set[6] -= 1;
				if (Set[6] < 0)
				    Set[6] = 1;
			}
			else {
			    MenuCoun -= 1;
			}
            break;
        default:
            break;
    }    
}

⌨️ 快捷键说明

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