独立式键盘的按键功能扩展

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ID=0; while(1) { switch(ID) { case 0: P3=0xfe; break; case 1: P3=0xfd; break; case 2: P3=0xfb; break; case 3: P3=0xf7; break; } }
}
/**************************************************************
函数功能:定时器 T0 的中断服务子程序,进行键盘扫描
**************************************************************/
void intersev(void) interrupt 1 using 1
{
TR0=0; //关闭定时器 T0
P1=0xff;
//独立式键盘的按键功能扩展:"以一当四"
#include<reg51.h>
// 包含 51 单片机寄存器定义的头文件
unsigned char ID; //储存流水灯的流动速度
sbit S1=P1^4;
//位定义 S1 为 P1.4
/************************************************************** 函数功能:延时子程序 **************************************************************/ void delay(void) //因为仅对一个按键扫描,所以延时时间较长约 200ms {
unsigned char i,j; for(i=0;i<200;i++)
for(j=0;j<100;j++) ;
}
/**************************************************************
函数功能:主函数
**************************************************************/
void main(void)
ቤተ መጻሕፍቲ ባይዱ
{
TMOD=0x02; EA=1; ET0=1; TR0=1; TH0=256-200;
//使用定时器 T0 的模式 2 //开总中断 //定时器 T0 中断允许 //定时器 T0 开始运行 //定时器 T0 赋初值,每 200 微妙来 1 次中断请求
TL0=256-200;
if(S1==0)
//如果是按键 S1 按下
{
delay();
//延时 20ms,软件消抖
if(S1==0)
//如果是按键 S1 按下
ID=ID+1;
}
if(ID==4)
ID=0;
TR0=1;
//启动定时器 T0
}
相关文档
最新文档