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

📄 key.c

📁 c8051f新华龙单片机开发运用程序
💻 C
字号:
//============================================================================
//按键测试程序.按下S1-S4,在LCD上分别显示1-4

//实验时短接J17的1,2引脚(LCD电源控制引脚)
//-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------

#include <c8051f310.h>                 // SFR declarations
#include <INTRINS.H>
#include <stdio.h>

sbit	key1=P2^1;
sbit	key2=P2^2;
sbit	key3=P2^3;
sbit	key4=P2^6;
unsigned long q;

//--------------------------------
void YJ_Init(void);
void SPI0_Init (void);
void Write_CHAR(unsigned char yjchar);
unsigned char key_in(void);
//-----------------------------------------------------
void delay(void)
{
	int a=1000;
	while(a!=0)
	{
		a--;
	}
}

/*----------------------------------------------------*/
//按键连接到p2.0、p2.1、p2.2、P2.3,均为开漏输出
unsigned char key_in(void)
{  
    XBR0 =0X00;
	P2=0xff;
	if(key1==0)
	{
		key1=1;
		delay();//延时
		if(key1==0)
		{
			while(key1==0);
			XBR0 =0X02;
			return(0x32);//返回字符"1"表示按键SW1按下
		}
	}

	if(key2==0)
	{
		key2=1;
		delay();//延时
		if(key2==0)
		{
			while(key2==0);
			XBR0 =0X02;
			return(0x33);//返回字符"3"表示按键SW1按下
		}
	}

	if(key3==0)
	{
		key3=1;
		delay();//延时
		if(key3==0)
		{
			while(key3==0);
			XBR0 =0X02;
			return(0x34);//返回字符"3"表示按键SW1按下
		}
	}

	if(key4==0)
	{
		key4=1;
		delay();//延时
		if(key4==0)
		{
			while(key4==0);
			XBR0 =0X02;
			return(0x31);//返回字符"4"表示按键SW1按下
		}
	}
	XBR0 =0X02;
	return(0);//返回0,表示没有按键按下
}

//---------------------------------------------
void main(void) 
{	
	unsigned char data1;

   PCA0MD &= ~0x40; // WDTE = 0 (watchdog timer enable bit)
   OSCICN |= 0x03; // Set internal oscillator to highest
                   // setting (24500000)

/*    XBR0 = 0x00; // XBAR0: Initial Reset value
    XBR1 = 0x40; // XBAR1: Initial Reset value
	P2MDOUT  = 0xf0;  // Output configuration for P2 
    P3MDOUT = 0x1f; // Output configuration for P3 
*/
	P0SKIP    = 0xFE;
   P1SKIP    = 0x7F;
   XBR0 = 0x02;                       // Enable SMBus pins
   XBR1 = 0x40;                       // Enable crossbar and weak pull-ups

   P0MDOUT = 0xFF;                    // All P0 pins open-drain output
   P2MDOUT = 0xFF;
   P3MDOUT |= 0x04;                   // P3.3 push-pull output

   P2  |=0X01;

   SPI0_Init ();


   YJ_Init();
	while(1)
	{
		data1=key_in();						//读按键
		if(data1!=0)						//有按键按下,显示对应的按键
		{
			YJ_Init();                     //LCD初始化
                                           //准备送数据
			for(q=0;q<1000;q++);	
	    	Write_CHAR(data1);		                 	//控制LCD	
			for(q=0;q<1000;q++);

		}
	}

}

⌨️ 快捷键说明

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