支持最大八位的无符号长整型数值计算

#包括《iom16v.h》

#包括《macros.h》

//#包括《stdio.h》

#定义乌恰尔无符号字符

#定义uint无符号整数

#定义乌龙无符号长整型

#定义EA SREG |=位(7)

uchar temp,old,key_turn,flag=0;

乌龙数据=0,datB=0;

const uchar wela[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f };

const uchar tab[11]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x 00 };

extern uchar dat[8]={0,0,0,0,0,0 };

extern uchar dat_right[]={0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a };

无效延迟(单位z)

{

while(z-);

}

空显示(乌恰尔z)

{

乌恰尔一世;

while(z -)

for(I=0;我《8;我)

{

PORTB=wela[I];

PORTD=tab[dat _ right[I]];

延迟(30);

PORTB=0XFF

}

}

void clean_junk()

{

uchar i,p=0;

for(I=0;我《8;我)

{

dat _ right[I]=0x0a;

}

for(I=0;我《8;我)

{

if(dat[I]》0)p=1;

if(p)dat _ right[I]=dat[I];

}

}

空的删除()

{

乌恰尔一世;

for(I=0;我《8;我)

{

dat[I]=0;

}

clean _ junk();

}

void disan_he()

{

乌龙一世;

I=dat[0]* 1e 7 dat[1]* 1 E6 dat[2]* 1 E5 dat[3]* 1 E4 dat[4]* 1 E3 dat[5]* 1 E2 dat[6]* 1e 1 dat[7];

if(flag)datB=I;

else datA=I;

flag=1;

delete();

}

void disan_fen()

{

dat[0]=datA/1e 7;

dat[1]=data000000/1000000;

dat[2]=data00000/100000;

dat[3]=data0000/10000;

dat[4]=data000/1000;

dat[5]=data00/100;

dat[6]=data0/10;

dat[7]=data;

flag=0;

}

无效移动()

{

乌恰尔一世;

if(temp)0 temp《0x0b》

{

for(I=0;我《8;我)

{

dat[I]=dat[I 1];

}

if(temp==0x0a){ dat[0]=0;temp=0;}

dat[7]=temp;temp=0;

}

}

清空()

{

乌恰尔一世;

flag=0;

for(I=0;我《8;我)

{

dat[I]=0;

}

temp=0;

旧=0;

数据=0;

datB=0;

}

void disan()

{

如果(温度)0temp《0x11》开关(温度)

{

case0x0e:clean();打破;

案例0x0b:old=temp;temp=0;disan _ he();打破;

案例0x0c:old=temp;temp=0;disan _ he();打破;

案例0x0d:old=temp;temp=0;disan _ he();打破;

案例0x 10:old=temp;temp=0;disan _ he();打破;

案例0x0f:开关(旧)

{

case0x0b:if(flag)disan _ he();datA=datA/datB;旧=0;temp=0;disan _ fen();打破;

case0x0c:if(flag)disan _ he();数据=数据*数据旧=0;temp=0;disan _ fen();打破;

case0x0d:if(flag)disan _ he();datA=datA-datB;旧=0;temp=0;disan _ fen();打破;

案例0x 10:if(flag)disan _ he();数据=数据datB旧=0;temp=0;disan _ fen();打破;

默认值:temp=0;旧=0;打破;

}破;

默认值:move();temp=0;打破;

}

//disan _ fen();delete();

}

void diskey()

{

uchar i,n;

const uchar code[]={0xFE,0xFD,0xFB,0xf 7 };

if(temp==0x 00)for(I=0;我《4;我)

{

门户=代码[I];

temp=PINA;

if(~ temp0xf 0)I=6;

while(~PINA0xf0)显示(1);

PORTA=0xff

}

如果(温度)0x10开关(温度)

{

案例0x ee:temp=0x 07;打破;

案例0x de:temp=0x 08;打破;

案例0x be:temp=0x 09;打破;

案例0x7E:temp=0x0b;打破;

/////////////////////////

案例0x ed:temp=0x 04;打破;

案例0x DD:temp=0x 05;打破;

案例0x BD:temp=0x 06;打破;

案例0x7D:temp=0x0c;打破;

//////////////////////////

案例0xEB:temp=0x 01;打破;

案例0x db:temp=0x 02;打破;

案例0x bb:temp=0x 03;打破;

案例0x7B:temp=0x0d;打破;

////////////////////////

案例0xe 7:temp=0x0e;打破;

案例0xd 7:temp=0x0a;打破;

案例0xb 7:temp=0x0f;打破;

案例0x 77:temp=0x 10;打破;

/////////////////////////

默认值:temp=0x00打破;

}

disan();

}

void main()

{

MCU CSR |=1《JTD;//禁用jtag功能

MCU CSR |=1《JTD;//再次禁用jtag功能生效

DDRC=0x ff;

DDRB=0x ff;

DDRD=0x ff;

DDRA=0X0F;

while(1)

{

显示器(1);

diskey();

clean _ junk();

}

}