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

📄 skey._c

📁 基于AVR的模数转换程序。是开发单片机必备的基本技巧。 本程序出自高手之手
💻 _C
字号:
#include <iom16v.h>
#include <macros.h>
#define  uchar unsigned char
#define  uint  unsigned int
#pragma data:code 
const  table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
		           0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0};
void delay(uint ms)
{
        uint i,j;
	for(i=0;i<ms;i++)
	   {
	   for(j=0;j<1141;j++);
       }
}
void show(uchar j,uchar k)
{
        PORTA|=BIT(3);
	PORTB=table[j];
	PORTA&=~BIT(3);
	
	PORTB=0XFF;
	PORTB&=~BIT(k);
	PORTA|=BIT(4);
	PORTA&=~BIT(4);
	delay(1);
}

uchar key_press()
{
    uchar j;
    DDRD|=0X0F;
	PORTD|=0X0F;
	
	DDRD&=0XF0;
	
	j=PIND;
	j=j&0X0F;//00001111
	if(j==0X0F)
	{
	  return 0;
	}
	else
	{
	 return 1;
	}
	
}

uchar key_scan()
{
    uchar key;
    delay(10);
	if(key_press())
	{
	key=PIND;
	key&=0X0F;
	switch(key)
	{
	   case 0X0E: 
	       key=1;
		   break;
	   case 0X0D:
	       key=2;
		   break;
	   	 case 0X0B: 
	       key=3;
		   break;
	   case 0X07:
	       key=4;
		   break; 
	   default:	
	       key=16;     	   
	}
	  while(key_press());
	}
	else
	{
	  key=16;
	}
	return key;
}
void main()
{
    uchar i,l;
    DDRA|=0X18;//0001 1000
	DDRB=0XFF;
	while(1)
	{
	  i=key_press();
	  if(i)
	  {
	     l=key_scan();
		 show(l,0);
	  }
	}
}

⌨️ 快捷键说明

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