📄 keyboard_uart.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 + -