📄 3.c
字号:
#include<reg51.h>
sbit c1 = P2^3;
sbit c2 = P2^2;
sbit c3 = P2^1;
sbit r1 = P2^4;
sbit r2 = P2^5;
sbit r3 = P2^6;
sbit r4 = P2^7;
void Enter (void);
void SUM_ (void);
int i,ii,a;
int w,x,y,z,A1,A2,w1,x1,y1,z1;
unsigned int L,L1,L2,L3,L4,L5,L6;
unsigned int Sum,O,V,Q,R,S,T;
void show( void);
void Shift (void);
unsigned char Patturn [] = {0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80,0x90,0xf0};
unsigned char Buffer1[4];
unsigned char Buffer2[4];
unsigned char key;
bit PP,PP1;
void delay_db(int time)
{
do
{
time--;
}while(time>0);
}
unsigned char scankey(void)
{
unsigned char ret = 0xFF;
c1 = 0;
if(r1==0)
{
delay_db(30000);
ret = 0x01;
}
if(r2==0)
{
delay_db(30000);
ret = 0x04;
}
if(r3==0)
{
delay_db(30000);
ret = 0x07;
}
if(r4==0)
{
delay_db(30000);
ret = 0x11; //*+++++
}
c1 = 1;
//------------------------------------------------//
c2 = 0;
if(r1==0)
{
delay_db(30000);
ret = 0x02;
}
if(r2==0)
{
delay_db(30000);
ret = 0x05;
}
if(r3==0)
{
delay_db(30000);
ret = 0x08;
}
if(r4==0)
{
delay_db(30000);
ret = 0x00;
}
c2 = 1;
//----------------------------------------//
c3 = 0;
if(r1==0)
{
delay_db(30000);
ret = 0x03;
}
if(r2==0)
{
delay_db(30000);
ret = 0x06;
}
if(r3==0)
{
delay_db(30000);
ret = 0x09;
}
if(r4==0)
{
delay_db(30000);
ret = 0x12; //#======
}
c3 = 1;
return(ret);
}
/*************************** Main loop **************************/
void main(void)
{
Buffer1[4]=0;
Buffer1[3]=0;
Buffer1[2]=0;
Buffer1[1]=0;
while(1)
{
key = scankey();
if( key != 0xff)
{
if( key != 0x11&&key!=0x12&&PP==0)
{
i++;
//if(i<=4)
//Buffer1[i]=key;
if (i>=1)
{
//i=4;
Shift ();
Buffer1[1]=key;
}
}
if( key == 0x11) //*+
{
SUM_();
PP=1;
}
if( key == 0x12) //#==
{
Enter();
}
//------------------------------------
if( key != 0x11&&key!=0x12&&PP==1) //Prees again No * ,NO #
{
if(PP1==1)
{
Buffer1[4]=0;
Buffer1[3]=0;
Buffer1[2]=0;
Buffer1[1]=0;
}
{
PP1=0;
ii++;
//if(ii<=4)
//Buffer1[ii]=key;
if (ii>=1)
{
//ii=4;
Shift ();
Buffer1[1]=key;
}
}
}
}
show ();
}
}
/***********************************************************************************************************************/
void Enter (void) //#==
{
w1 = Buffer1[4];
x1 = Buffer1[3];
y1 = Buffer1[2];
z1 = Buffer1[1];
w1=w1*1000;
x1=x1*100;
y1=y1*10;
z1=z1*1;
A2=(w1+x1+y1+z1);
Sum=(A1*A2);
if (Sum >= 10000)
{
L=Sum/1000; // 21.338
L1=L%10; //2.1
L2=Sum%1000; //338
L3=L2/100; //3.38
L4=L2%100; //38
L5=L4/10; //3.8
L6=L4%10; //8
Buffer1[4]=L1;
Buffer1[3]=L3;
Buffer1[2]=L5;
Buffer1[1]=L6;
}
if (Sum <= 9999)
{
O=Sum/1000; //1234/1000=1 0
V=Sum%1000; //1234/1000=234 018
Q=V/100; //234/100=2 0
R=V%100; //234/100=34 18
S=R/10; //34/10=3 1
T=R%10; //34/10=4 8
Buffer1[4]=O;
Buffer1[3]=Q;
Buffer1[2]=S;
Buffer1[1]=T;
}
}
void SUM_ (void) //*++
{
w = Buffer1[4];
x = Buffer1[3];
y = Buffer1[2];
z = Buffer1[1];
w=w*1000;
x=x*100;
y=y*10;
z=z*1;
A1=(w+x+y+z);
PP1=1;
}
void Shift (void)
{
Buffer2[1]= Buffer1[1];
Buffer2[2]= Buffer1[2];
Buffer2[3]= Buffer1[3];
Buffer2[4]= Buffer1[4];
//--------------------
Buffer1[2]= Buffer2[1];
Buffer1[3]= Buffer2[2];
Buffer1[4]= Buffer2[3];
}
void show( void)
{
P0 = Patturn[Buffer1 [1]]|0x0E;
delay_db(25);
P0 = Patturn[Buffer1 [2]]|0x0d;
delay_db(25);
P0 = Patturn[Buffer1 [3]]|0x0b;
delay_db(25);
P0 = Patturn[Buffer1 [4]]|0x07;
delay_db(25);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -