//#include <io8515v.h>
#include <iom8515v.h>
#include<math.h>
#include<stdio.h>
#include<macros.h>
void defor()
{int i,j,k;
for(i=0;i<=20;i++)
{for(j=0;j<=250;j++)
{k=0;}
}
}
//void defor()
//{
//int i,j,k;
//for(i=0;i<=20;i++){
// for(j=0;j<=250;j++){
// k=0;}
//}
char dujian()
{ char tt;
char kn[4]={0x10,0x20,0x40,0x80};
int i,k;
i=1;
//PORTA=0x0f;
//if(PIND!=0x0f)
//{//
PORTA=0x01;
//defor();
//defor();
for (i=0;i<=3;i++)
{//defor();
//defor();
PORTA=PORTA*2;
//defor()
//
if(PIND!=0x0F)
{ defor();
if(PIND==0X0E)
{
while(PIND==0X0E)
{tt=0x01+(kn[i]);
//defor();
}
break;
}
if(PIND==0X0D)
{
while(PIND==0X0D)
{tt=0x02+(kn[i]);
//defor();
}
break;
}
if(PIND==0X0B)
{
while(PIND==0X0B)
{tt=0x04+(kn[i]);
//defor();
}
break;
}
if(PIND==0X07)
{
while(PIND==0X07)
{tt=0x08+(kn[i]);
//defor();
}
break;
}
}
//}
else
{tt=0x00;
}
}
//}
//PORTA=!PORTA;
return tt;
}
char fanyi (char tt)
{char kt[4][4]={{0x37,0x34,0x31,0x2e},{0x38,0x35,0x32,0x30},{0x39,0x36,0x33,0x3d},{0x2f,0x2a,0x2d,0x2b}};
int i;
char mm;
int j;
if(tt==0x00)
{mm=0x00;}
else
{
for (i=0 ;i<=3 ;i++)
{
if(((tt&0x0f)>>i)==0x01)
{
for (j=0 ;j<=3 ;j++)
{if(((tt&0xf0)>>j)==0x10)
{mm=kt[i][j];}
}
break;
}
}
}
return mm;
}
void delay(void)
{DDRB=0X00;
PORTB=0X80;
for(;;)
{//rs=0;
//rw=1;
//e=0;
//e=1;
DDRC=0XFF;
PORTC=0X40;
PORTC=0X60;
DDRB=0XFF;
if(PINB==0X00)
break;
}
}
void enable(void)
{
//rs=0;
//rw=0;
DDRC=0XFF;
//e=0;
PORTC=0X00;
delay();
//e=1;
PORTC=0X20;
}
void print(void)
{
//rs=1;
//rw=0;
DDRC=0XFF;
//e=0;
PORTC=0X80;
delay();
PORTC=0XA0;
//e=1;
}
void kk()
{int i,j,m,t;
char x,y;
x=dujian();
y=fanyi(x);
PORTB=y;
if (y!=0x00)
{print();
}
if(y==0x3d)
{PORTB=0x01;
enable();}
//for(m=0;m<=10000;m++)
//{t=0;
//}
}
void main()
{
DDRA=0xff;
PORTA=0X01;
DDRD=0X00;
DDRB=0XFF;
PORTB=0x01;
enable(); //clear display
PORTB=0x38;
enable(); //两行显示 5*7点阵 8位接口
PORTB=0x0e;
enable(); //开显示屏 光标
PORTB=0x06;
enable(); //光标右移
PORTB=0x80;
enable();
while(1)
{
kk();
}
}