📄 键盘扫描.c
字号:
#include "STC12C5410AD.H"
#include <stdio.h>
#include "键盘扫描.H"
#include <math.h>
unsigned int m=0,n=0;
unsigned int i=0,j=0;
unsigned char Key_InitNumber=0,Key_Number=0,Key_i=0,Key_Buffer=0;
unsigned int idata value[]={0,1,1,1,
1,1,1,1,
1,1,1,1,
1,1,1,1,
1,1,1,1};
#define NUMBER (0x131A)
unsigned int BUFF1=0;
void Delay_10US(void)
{
for(j=0;j<10;j++)
{;}
}
void D200M(void) //不开定时器0的时候,
{ //定时200MS,示波器显示2MS--2.02MS
for(j=0;j<923;j++)
{
for(i=0;i<100;i++)
{
;
}
}
}
void Key_Clock(unsigned char Key_InitNumber) //键盘扫描的时钟序列1
{
for(Key_i=0;Key_i<Key_InitNumber;Key_i++)
{
P2_1=0;
Delay_10US();
P2_1=1;
Delay_10US();
}
}
void Key_Clock1(void) //键盘扫描的时钟序列2
{
P2_1=0;
Delay_10US();
P2_1=1;
Delay_10US();
}
void initTimer(void) //定时器初始化,晶振6MHz,
{ //定时器0,方式2(8位定时器),中断100us
TMOD=0x22; //(2^8-x)*12/(6*(10^6))=100*(10^-6)
TH0=0xB2; //解得x=206,TH0=0xCE,TL0=0xCE;
TL0=0xB2;
//TL0=0x1f;
AUXR=0x80;
}
void initPWM(void) //PWM的初始化
{
CMOD=0x02;
// CL=0x00;
// CH=0x00;
CCAP0L=0x80; //80H=128D
CCAP0H=0x80;
CCAPM0=0x42;
// PCA_PWM0=0x00;
CR=1;
AUXR=0xE0;
TMOD=0x15;
IE=0x88;
TH0=0x00;
TL0=0x00;
TH1=0x15;
TL1=0xA0;
// P0=0x02; //RN3:CH2,通道2
P0=0x00; //RN1:CH0,通道0
}
void timer0(void) interrupt 1 using 1
{ //每0.01ms中断一次
// P3_5=!P3_5;
P2_4=!P2_4;
}
void timer1(void) interrupt 3
{
TH1=0x15;
TL1=0xA0;
//add your code here.
BUFF1=(TH0<<8)+TL0;
TH0=0x00;
TL0=0x00;
}
void main()
{
// initTimer(); //定时器初始化
//AUXR=0x00;
//TR0=1;
ET0=1;
EA=1;
AUXR=0x80;
P1=0xff; //默认为1,设置为0时才有效
P2_1=0; //164的初始化
P2_2=1;
P2_3=1;
P0_3=0; //LED和蜂鸣器的初始化
P2_0=0;
P1_7=1;
P2_4=0;
P3_4=0;
for(;;)
{
Key_Buffer=0;
P2_2=1;
P2_3=1;
Key_Clock(20); //键盘各按键的初始化
P2_4=0;
P3_4=0;
P1_7=1;
P2_2=0;
Key_Clock1();
/* if(P2_3=0)
{
initTimer();
Code_08();
P1_7=0;
} */
for(Key_Number=1;Key_Number<17;Key_Number++)
{
P2_2=1;
Key_Clock1();
if(P2_3==0)
{
Key_Buffer=Key_Number;
// break;
}
switch (Key_Buffer)
{
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 9:
break;
case 10:
break;
case 11:
break;
case 12:
break;
case 13:
break;
case 14:
break;
case 15:
break;
default:
TR0=0;
TR1=0;
break;
}
}
P2_0=!P2_0;
D200M();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -