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

📄 keyboard_uart.c

📁 avr单片机的键盘程序和串口程序
💻 C
字号:
//的键盘扫描程序
//功能描述:键盘扫描并调用以前的数码显示把数据输出
//采用端口:PB口
#include <avr/io.h>
#include <avr/interrupt.h>
//------------键盘码表
unsigned char a,b,date;
unsigned char x[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};

void key()
 {

 DDRB=0X0F;//开始扫描
 PORTB=0XF0;
 if( PINB!=0xf0)
  {
     switch(PINB)
      {
          case  0xe0:a=0;  break;
          case  0xd0:a=1;  break;
          case  0xb0:a=2;  break;
          case  0x70:a=3;  break;
      }
         DDRB=0XF0;
         PORTB=0X0F;
         if( PINB!=0x0f)
		 {
           switch(PINB)
            {
              case  0x0e:b=0;  break;
              case  0x0d:b=1;  break;
              case  0x0b:b=2;  break;
              case  0x07:b=3;  break;
            }

          }
      
   }
    date=x[a][b];     //计算扫描结果
	 // if( PINB!=0x0f)
      

//return 0;//扫描结束
  //else ;
 }
//------------------------------

SIGNAL(SIG_OVERFLOW1)     //interrupt[TIM1_OVF]
{
 TCNT1H=0Xf0; //重设初始值
 TCNT1L=0X2f; //完成一次工作
  put_c(date);  //调用显示函数
 TCCR1B=0X05;
 //uc_Led++; 

}


//定义一个数据 
int main(void)
{
  DDRA=0XFF;//显示输出端口 段
  DDRC=0XFF;//显示输出端口 位
   //--------------------------
	  uart_init();   //串口的设置
      put_s("hello");
	  sei();         //打开中断
   //---------------------------
     SREG|=0X80;// 全局中断使能即  sei();
     TIMSK|=0X04;
     timer1_init();
   //--------------------------------
while(1) key();
  //put_c(date);  //调用显示函数


  
}
////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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