#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit P0_0=P0^0;
uchar idata table[17]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xaa,0xbd,0xee,0xdd,0x99,0xfd,0xff,0xff};
uchar idata table2[10];
uchar num,temp;
uchar num1=0,flag;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
uchar keyscan();
void int0(void) interrupt 0
{ int m;
P1=0xff;
for(m=0;m<5;m++)
{ P1=table2[m];
delay(500);
}
}
void main()
{ uchar n=0;
uchar m;
uchar i=0;
flag=1;
TMOD=0x20;//设置定时器1为工作方式2
TH1=0xe8;
TL1=0xe8;
TR1=1;
EA=1; //总中断开启
EX0=1; //外部中断INT0开启
IT0=1;
REN=1;
SM0=0;
SM1=1;
while(flag) i=keyscan();
flag=1;
while(1)
{
if(num1==0)
{
RI=0;
P0_0=0;
while(!RI);
delay(500);
P1=SBUF;
m=SBUF;
table2[n]=m;
n++;
RI=0;
}
else if(num1==1)
{
while(flag) i=keyscan();
flag=1;
P0_0=1;
SBUF=table[i-1];
while (!TI);
P1=table[i-1];
TI=0;
}
}
}
uchar keyscan()
{
P2=0xfe;
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P2;
switch(temp)
{
case 0xee:{num=1;flag=0;}
break;
case 0xde:{num=2; flag=0;}
break;
case 0xbe:{num=3; flag=0;}
break;
case 0x7e:{num=4; flag=0;}
break;
}
while(temp!=0xf0)
{
temp=P2;
temp=temp&0xf0;
}
}
}
P2=0xfd;
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P2;
switch(temp)
{
case 0xed:{num=5;flag=0;}
break;
case 0xdd:{num=6;flag=0;}
break;
case 0xbd:{num=7;flag=0;}
break;
case 0x7d:{num=8;flag=0;}
break;
}
while(temp!=0xf0)
{
temp=P2;
temp=temp&0xf0;
}
}
}
P2=0xfb;
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P2;
switch(temp)
{
case 0xeb:{num=9; flag=0;}
break;
case 0xdb:{num=10; flag=0;}
break;
case 0xbb:{num=11;flag=0;}
break;
case 0x7b:{num=12; flag=0;}
break;
}
while(temp!=0xf0)
{
temp=P2;
temp=temp&0xf0;
}
}
}
P2=0xf7;
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P2;
switch(temp)
{
case 0xe7:{num=13; flag=0;}
break;
case 0xd7:{num=14;num1=2; flag=0;}
break;
case 0xb7:{num=15;num1=1;flag=0;}
break;
case 0x77:{num=16; flag=0;num1=0;}
break;
}
while(temp!=0xf0)
{
temp=P2;
temp=temp&0xf0;
}
}
}
return num;
return flag;
}

happywran
- 粉丝: 3
- 资源: 3
最新资源
- PEM电解槽多物理场耦合的三维两相流模拟研究:探究电流密度分布与析氢析氧过程的影响(使用comsol软件分析),PEM电解槽复杂多物理场的三维两相流模拟与性能分析-涵盖电化学、传质及析氢析氧过程,利
- 基于Matlab的悬臂梁有限元分析:四节点与八节点四边形单元编程指南,基于Matlab的悬臂梁结构有限元分析程序:四节点与八节点四边形单元编程详解,悬臂梁,有限元编程 基于matlab的悬臂梁四节点
- 基于COMSOL有限元PDE接口的二维混凝土湿热力耦合模型解析与优化:固体力学模块收敛问题解决方案,适合新手学习 ,基于COMSOL PDE接口的二维混凝土湿热力耦合模型解析:固体力学模块不收敛问题及
- (源码)基于加权概率算术编码的自适应信道编码系统.zip
- 10t双级纯水系统在某龙头水泥厂的PLC与HMI应用:西门子Smart PLC与海为触摸屏的Profinet通信控制方案,十年专注,专业树立行业标杆,程序通用且可定制,满足各类水处理及供求需求,设备配
- PHP新闻网站系统.rar
- 西门子S7-200 PLC在豆浆机流量控制中的应用:基于MCGS组态画面与S7-200程序的设计与实现,西门子S7-200 PLC程序与MCGS组态画面联合实现豆浆机流量控制:设计与实现,90#西门子
- c&c++课程设计-学生成绩管理系统.rar
- 知识-数据混合驱动的电网频率协同控制算法代码实现与解析
- 管家婆普及ⅡTOP13.22
- 管家婆普及ⅡTOP13.32
- 管家婆普及ⅡTOP15.0
- 基于T型三电平逆变器的SVPWM调制及电压电流双闭环控制仿真概览与波形分析(附图),基于T型三电平逆变器SVPWM策略的电压电流双闭环控制及波形分析仿真模型介绍,T型三电平逆变器 SVPWM 大扇区
- 威纶通触摸屏与台达变频器通讯协议实践详解:如何实现485直接通讯连接,威纶通触摸屏与台达变频器通讯实现详解:通讯协议与直接通讯技术探讨,威纶通触摸屏与台达变频器通讯485直接通讯 ,威纶通触摸屏; 台
- JAVA小区门户网站(源代码).rar
- 西门子S7-1200 PLC控制的七层单部电梯模拟系统:功能丰富、操作便捷的自动化电梯程序,西门子S7-1200 PLC控制的七层单部电梯模拟系统:功能全面、灵活定制的电梯程序设计,电梯程序PLC西门
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


