📄 sw.c
字号:
/*********************************
* 按键应用例子 *
* 实验环境:M128 *
* 接线方式:RS=PD.0,E=PC.2 *
* Db0-Db7=PB0-PB7 *
* 作 者:tonghe *
* 日 期:2007年03月06日 *
* 版 本:V1.2 *
* 修改日期:2007年08月11日 *
* 编 译 器:ICCAVR6.31A *
*********************************/
#include <iom128v.h>
#include "stdio.h"
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
//延时子程序
void delay(uchar x)
{
uchar j;
while((x--)!=0)
{
for(j=0;j<125;j++)
{;}
}
//判断是否有键按下
keypressed()
{
uchar key;
key=PINB;
key=key|0xf0;
if(key==0xff)
x=0;
else
x=1;
}
//键盘扫描子程序
keyscan()
{
uint key=0;
delay(15);//延时消除抖动
if((keypressed())==1)//判断是否有键按下
{
key=PINB;
key=key|0xf0;
if(key==0xfe)
{ key=1;}
else if(key==0xfd)
{ key=2;}
else if(key==0xfb)
{ key=3;}
else if(key==0xf8)
{ key=4;}
else
{ key=0;}
}
do
{
}
while((keypressed())==1);//等待键释放
delay(15);//延时消除抖动
}
// return key;
}
//主程序
main()
{
uchar keycode;
DDRB&=~BIT(PB0);
DDRB&=~BIT(PB1);
DDRB&=~BIT(PB2);
DDRB&=~BIT(PB3);
do{
if((keypressed())==1)
keycode=keyscan();
switch(keycode)
{
case 1:
DDRE&=BIT(PE0);
case 2:
DDRE&=BIT(PE1);
case 3:
DDRE&=BIT(PE2);
case 4:
DDRE&=BIT(PE3);
case 0:
break;
}
}while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -