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

📄 key._c

📁 mega128+VS1003做的mp3的程序 可以用WINAVR编译
💻 _C
字号:
#include <iom64v.h>
#include <macros.h>
#include "key.h"
#define  uchar unsigned char
#define  uint  unsigned int

#define  key1   BIT(4)
#define  key2  	BIT(5)
#define  key3   BIT(6)
#define  key4   BIT(7)

uchar keybuf;

#pragma interrupt_handler Read_Keybroad:11
/******************************************************************************/
void Read_Keybroad(void)
{
 static uchar push = 0;
 TCCR2 = 0X00;
 DDRF  = 0x0f;
 PORTF |= 0xf0;
 NOP();
 NOP();
// Print_str("I,am herer\r\n");
 if((PINF & 0xf0) == 0xf0){
 						   DDRF |= 0x80; 
						   PORTF &= 0x7f; //输出0
						   NOP();
						   NOP();					   
						   if((PINF & 0x70) == 0x70){//这里表示S2、S3、S7没有按下
 												 	 push = 0;
													 TCCR2 = 0X05;
					   								 return;
													}
						  if(push){//键没有释放  
						            TCCR2 = 0X05; 						  
							        return;
							  	   }
                           switch(PINF & 0x70)
                                             {
					                         case 0b01100000: keybuf = UP;   push=1; break;//s1
											 case 0b01010000: keybuf = DOWN; push=1; break;//s6
											 case 0b00110000: keybuf = LIFT; push=1; break;//s6
											 default : KEYBUF_NULL;
										     }
						  TCCR2 = 0X05;
						  return;
						 }// if((PINF & 0xf0) == 0xf0)
 if(push){TCCR2 = 0X05;return;}//键没有释放
 switch(PINF & 0x70)
       {
	    case 0b01100000: keybuf = RIFT;	push=1;	  break;//s4
		case 0b01010000: keybuf = ESC;	push=1;	  break;//s5
		case 0b00110000: keybuf = ENTER;push=1;	  break;//s8
		default : KEYBUF_NULL;				
	   }
 TCCR2 = 0X05;
 return;
}

void key_init(void)
{
    TCCR2 = 0x00; //stop
	TCNT2 = 0x00; //set count
	TIMSK |= 1<<TOIE2;
	TCCR2 = 0x05; //stop
	SEI();
}

⌨️ 快捷键说明

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