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

📄 key_4x3.c

📁 单片机实现在的电子琴
💻 C
字号:
#include "key_4x3.h"

void delay2ms(uchar m)
{
	uchar n, s;
	for (; m--; )
	{    
		for (n = 16; n--;)
		{
			for (s=S; s--;)
			{
			}
		}       
	}      
}              

void delay5us(uchar u)
{
    u *= CLK;
    while (--u);
}
/***************底层函数******************/
uchar Read_io()             //ok
{
    uchar tmp;
    tmp = Px;                   //读入数据
    tmp = (tmp >> MOVE) & 0x0f; //处理数据
    return(tmp);
}

void Write_io(uchar value)      //ok
{
    uchar tmp = 0x0f;
    Px = Px & ~(tmp << MOVE);   //键盘口清0
    Px = Px | (value << MOVE);  //装入数值
}

/****************主函数*******************/
uchar KEY_value(uchar key,uchar wait)
{
	uchar code _value[]={14,13,11,7}, _key[]={12,10,6,12,9,5,10,9,3,6,5,3};
	--key;
	Write_io(_value[key/3]);
	if(Read_io() == _key[key])
	{
		delay2ms(14);
		if(Read_io() == _key[key]) 
			if(!wait)
				return(1);
			else
			{	
                while(Read_io() == _key[key])
				{}
				return(1);
            }
		else return(0);
	}
	else return(0);
}

uchar KEY_num(uchar wait)
{
	uchar num;
	for(num=1;num<13;num++)
	{
	if(KEY_value(num,wait))
        {return(num);break;}
	}
}

uchar KEY_wait()
{
    uchar tmp;
    while(!(tmp = KEY_num(0)));
    return tmp;
}
/***********/

⌨️ 快捷键说明

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