支持最大八位的无符号长整型数值计算
#include《iom16v.h》
#include《macros.h》
//#include《stdio.h》
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define ea sreg|=bit(7)
uchar temp,old,key_turn,flag=0;
ulong data=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,0x00};
extern uchar dat[8]={0,0,0,0,0,0,0,0};
extern uchar dat_right[]={0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a};
void delay(uint z)
{
while(z--);
}
void display(uchar z)
{
uchar i;
while(z--)
for(i=0;i《8;i++)
{
portb=wela[i];
portd=tab[dat_right[i]];
delay(30);
portb=0xff;
}
}
void clean_junk()
{
uchar i,p=0;
for(i=0;i《8;i++)
{
dat_right[i]=0x0a;
}
for(i=0;i《8;i++)
{
if(dat[i]》0)p=1;
if(p)dat_right[i]=dat[i];
}
}
void delete()
{
uchar i;
for(i=0;i《8;i++)
{
dat[i]=0;
}
clean_junk();
}
void disan_he()
{
ulong i;
i=dat[0]*1e7+dat[1]*1e6+dat[2]*1e5+dat[3]*1e4+dat[4]*1e3+dat[5]*1e2+dat[6]*1e1+dat[7];
if(flag)datb=i;
else data=i;
flag=1;
delete();
}
void disan_fen()
{
dat[0]=data/1e7;
dat[1]=data%10000000/1000000;
dat[2]=data%1000000/100000;
dat[3]=data%100000/10000;
dat[4]=data%10000/1000;
dat[5]=data%1000/100;
dat[6]=data%100/10;
dat[7]=data%10;
flag=0;
}
void move()
{
uchar i;
if(temp》0&temp《0x0b)
{
for(i=0;i《8;i++)
{
dat[i]=dat[i+1];
}
if(temp==0x0a){dat[0]=0;temp=0;}
dat[7]=temp;temp=0;
}
}
void clean()
{
uchar i;
flag=0;
for(i=0;i《8;i++)
{
dat[i]=0;
}
temp=0;
old=0;
data=0;
datb=0;
}
void disan()
{
if(temp》0&temp《0x11)switch(temp)
{
case 0x0e:clean();break;
case 0x0b:old=temp;temp=0;disan_he();break;
case 0x0c:old=temp;temp=0;disan_he();break;
case 0x0d:old=temp;temp=0;disan_he();break;
case 0x10:old=temp;temp=0;disan_he();break;
case 0x0f:switch(old)
{
case 0x0b:if(flag)disan_he();data=data/datb;old=0;temp=0;disan_fen();break;
case 0x0c:if(flag)disan_he();data=data*datb;old=0;temp=0;disan_fen();break;
case 0x0d:if(flag)disan_he();data=data-datb;old=0;temp=0;disan_fen();break;
case 0x10:if(flag)disan_he();data=data+datb;old=0;temp=0;disan_fen();break;
default:temp=0;old=0;break;
}break;
default:move();temp=0;break;
}
// disan_fen();delete();
}
void diskey()
{
uchar i,n;
const uchar code[]={0xfe,0xfd,0xfb,0xf7};
if(temp==0x00)for(i=0;i《4;i++)
{
porta=code[i];
temp=pina;
if(~temp&0xf0)i=6;
while(~pina&0xf0)display(1);
porta=0xff;
}
if(temp》0x10)switch(temp)
{
case 0xee:temp=0x07;break;
case 0xde:temp=0x08;break;
case 0xbe:temp=0x09;break;
case 0x7e:temp=0x0b;break;
/////////////////////////
case 0xed:temp=0x04;break;
case 0xdd:temp=0x05;break;
case 0xbd:temp=0x06;break;
case 0x7d:temp=0x0c;break;
//////////////////////////
case 0xeb:temp=0x01;break;
case 0xdb:temp=0x02;break;
case 0xbb:temp=0x03;break;
case 0x7b:temp=0x0d;break;
////////////////////////
case 0xe7:temp=0x0e;break;
case 0xd7:temp=0x0a;break;
case 0xb7:temp=0x0f;break;
case 0x77:temp=0x10;break;
/////////////////////////
default:temp=0x00;break;
}
disan();
}
void main()
{
mcucsr|= 1《《jtd; //禁用jtag功能
mcucsr|= 1《《jtd; //再次禁用jtag功能生效
ddrc=0xff;
ddrb=0xff;
ddrd=0xff;
ddra=0x0f;
while(1)
{
display(1);
diskey();
clean_junk();
}
}
基于51单片机的温度湿度采集系统设计
物联网技术有助于政府监管数据所有权
一种有源箝位Flyback软开关电路设计
60W吉他音箱 (60W Guitar Amplifier)
AEC-Q101的认证对象和测试项目
mega16单片机科学计算器程序源代码
2018年Finwise Summit纷智峰会将在日本东京召开 共同探讨区块链行业未来
关于射频干扰对GNSS威胁的讨论
晶门科技公布2019中期业绩 总销售额及付运量均录按年双位数增长
运放参数讲解:最对最大值和推荐工作条件
领存自主可控高端存储产品亮相
微波传声技术
观测者-3成首次利用太阳能主动探测台风中心的无人艇
基于HA13118的18瓦音频放大器电路
高通正式推出了全球首个Qualcomm QTM527毫米波天线模组
“一石三鸟”固相烧结策略!废旧锂离子电池直接再生研究获进展
格莱美大师助阵 华为nova 2系列与暑期档大片更配
大幅面扫描仪技术术语:Gamut(色彩饱和度)
类的申明和成员函数定义分离是什么
速美达余衍兴《系统集成方案的优化之路》发表主题演讲