writedate(uchar adr,uchar date )
{
writerom(adr|0x80);
write(date);
}
/*uchar read()
{
while(busy()==1);
uchar date;
RW=1;
RS=1;
LCDE=0;
_nop_();
_nop_();
LCDE=1;
_nop_();
_nop_();
date=P0;
_nop_();
_nop_();
_nop_();
_nop_();
LCDE=0;
return date;
}*/
clear()
{
while(busy()==1);
writerom(0x01); //清屏
}
/*uchar readdate (uchar adr)
{
writerom(adr);
return(read());
} */
lcdintl()
{
writerom(0x06);
writerom(0x0f) ;
writerom(0x38) ;
clear();
delayms(10);
}
/**********矩阵键盘扫描获得按键值**********/
uchar getkey()
{
uchar k,i;
uchar temp1,temp2;
p=0xf0;
if(p!=0xf0)
{
delayms(20);
if(p!=0xf0)
{
temp1=p;
p=0x0f;
temp2=p ;
while(p!=0x0f);
temp1=temp1|temp2;
}
}
for(i=0;i<16;i++)
{
if(temp1==kc[i])
{
k=i;break;
}
}
return k;
}
/**********result显示**********/
void resultscan (long date1,long date2,uchar date3)
{
uchar i,f;
switch(date3)
{
case 11: result=date1%date2;break;//取余
case 12: result=date1/date2;break;//除
case 13: result=date1*date2;break;//乘
case 14: result=date1-date2;break;//—
case 15: result=date1+date2;break;//+
default:result=0;
}
writerom(0x40|0x80);
i=0;
while(resul[i]!='\0')
{write(resul[i]);i++; }
write(':');
if(OV==0)
{
if(result<0)
{
write(tab[14]);
result=-result;
f=1;
}
}
else
{ i=11;}
if(result>=0) i=1;
if(result>=10) i=2;
if(result>=100) i=3;
if(result>=1000) i=4;
if(result>=10000) i=5;
if(result>=100000) i=6;
if(result>=1000000) i=7;
if(result>=10000000) i=8;
if(result>=100000000) i=9;
if(result>=1000000000) i=10;
switch(i)
{
case 10:write(tab[result/1000000000]);
case 9:write(tab[result/1000000000%10]);
case 8:write(tab[result/10000000%10]);
case 7:write(tab[result/1000000%10]);
case 6:write(tab[result/100000%10]);
case 5:write(tab[result/10000%10]);
case 4:write(tab[result/1000%10]);
case 3:write(tab[result/100%10]);
case 2:write(tab[result/10%10]);
case 1:write(tab[result/1%10]); break;
case 11:write('E');write('R');write('R');
}
if(f==1)
{
result=-result;
f=0;
}
}
/**********输入处理、运算函数**********/
void caculate()
{
uchar w=1,k,start,x,y,fh,i;
long num1,num2;
while(1)
{
p=0xf0;
if(p!=0xf0)
{
k=getkey();
if((k==10)&&(y==0))
{
start=0;
w=1;
num1=0;
x=0;
}
if(start==0)
{
lcdintl();
clear();
delayms(100);
writerom(0x00|0x80);
i=0;
while(chushi[i]!='\0')
{write(chushi[i]);i++; }
start=1;
write(':');
}
if(w==1)
{
if(k<10)
{
x=1;
num1=num1*10+k;
write(tab[k]);
}
if(k>10)
{
if(x==1)
{
w=2;
fh=k;
write(tab[k]);
}
if(x==0)
{
w=2;
fh=k;
num1=result;
i=0;
while(resul[i]!='\0')
{write(resul[i]);i++; }
write(tab[k]);
}
}
}
else
{
if(k<10)
{
y=1;
num2=num2*10+k;
if((busy()&0x7f)==0x10){ writerom(0x07);}
write(tab[k]);
}
if((k==10)&&(y==1))
{
w=1;
x=y=0;
start=0;
resultscan(num1,num2,fh);
num1=num2=0;
writerom(0x0c);
writerom(0x03);
}
}
}
}
}
/**********主函数**********/
void main()
{
uchar i;
lcdintl();
clear();
delayms(100);
writerom(0x00|0x80);
i=0;
while(chushi[i] != '\0')
{write(chushi[i]);i++; }
write(':');
caculate() ;
}
{
writerom(adr|0x80);
write(date);
}
/*uchar read()
{
while(busy()==1);
uchar date;
RW=1;
RS=1;
LCDE=0;
_nop_();
_nop_();
LCDE=1;
_nop_();
_nop_();
date=P0;
_nop_();
_nop_();
_nop_();
_nop_();
LCDE=0;
return date;
}*/
clear()
{
while(busy()==1);
writerom(0x01); //清屏
}
/*uchar readdate (uchar adr)
{
writerom(adr);
return(read());
} */
lcdintl()
{
writerom(0x06);
writerom(0x0f) ;
writerom(0x38) ;
clear();
delayms(10);
}
/**********矩阵键盘扫描获得按键值**********/
uchar getkey()
{
uchar k,i;
uchar temp1,temp2;
p=0xf0;
if(p!=0xf0)
{
delayms(20);
if(p!=0xf0)
{
temp1=p;
p=0x0f;
temp2=p ;
while(p!=0x0f);
temp1=temp1|temp2;
}
}
for(i=0;i<16;i++)
{
if(temp1==kc[i])
{
k=i;break;
}
}
return k;
}
/**********result显示**********/
void resultscan (long date1,long date2,uchar date3)
{
uchar i,f;
switch(date3)
{
case 11: result=date1%date2;break;//取余
case 12: result=date1/date2;break;//除
case 13: result=date1*date2;break;//乘
case 14: result=date1-date2;break;//—
case 15: result=date1+date2;break;//+
default:result=0;
}
writerom(0x40|0x80);
i=0;
while(resul[i]!='\0')
{write(resul[i]);i++; }
write(':');
if(OV==0)
{
if(result<0)
{
write(tab[14]);
result=-result;
f=1;
}
}
else
{ i=11;}
if(result>=0) i=1;
if(result>=10) i=2;
if(result>=100) i=3;
if(result>=1000) i=4;
if(result>=10000) i=5;
if(result>=100000) i=6;
if(result>=1000000) i=7;
if(result>=10000000) i=8;
if(result>=100000000) i=9;
if(result>=1000000000) i=10;
switch(i)
{
case 10:write(tab[result/1000000000]);
case 9:write(tab[result/1000000000%10]);
case 8:write(tab[result/10000000%10]);
case 7:write(tab[result/1000000%10]);
case 6:write(tab[result/100000%10]);
case 5:write(tab[result/10000%10]);
case 4:write(tab[result/1000%10]);
case 3:write(tab[result/100%10]);
case 2:write(tab[result/10%10]);
case 1:write(tab[result/1%10]); break;
case 11:write('E');write('R');write('R');
}
if(f==1)
{
result=-result;
f=0;
}
}
/**********输入处理、运算函数**********/
void caculate()
{
uchar w=1,k,start,x,y,fh,i;
long num1,num2;
while(1)
{
p=0xf0;
if(p!=0xf0)
{
k=getkey();
if((k==10)&&(y==0))
{
start=0;
w=1;
num1=0;
x=0;
}
if(start==0)
{
lcdintl();
clear();
delayms(100);
writerom(0x00|0x80);
i=0;
while(chushi[i]!='\0')
{write(chushi[i]);i++; }
start=1;
write(':');
}
if(w==1)
{
if(k<10)
{
x=1;
num1=num1*10+k;
write(tab[k]);
}
if(k>10)
{
if(x==1)
{
w=2;
fh=k;
write(tab[k]);
}
if(x==0)
{
w=2;
fh=k;
num1=result;
i=0;
while(resul[i]!='\0')
{write(resul[i]);i++; }
write(tab[k]);
}
}
}
else
{
if(k<10)
{
y=1;
num2=num2*10+k;
if((busy()&0x7f)==0x10){ writerom(0x07);}
write(tab[k]);
}
if((k==10)&&(y==1))
{
w=1;
x=y=0;
start=0;
resultscan(num1,num2,fh);
num1=num2=0;
writerom(0x0c);
writerom(0x03);
}
}
}
}
}
/**********主函数**********/
void main()
{
uchar i;
lcdintl();
clear();
delayms(100);
writerom(0x00|0x80);
i=0;
while(chushi[i] != '\0')
{write(chushi[i]);i++; }
write(':');
caculate() ;
}
