历史上的今天
返回首页

历史上的今天

今天是:2025年02月03日(星期一)

2020年02月03日 | mega16单片机科学计算器程序源代码

2020-02-03 来源:elecfans

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

mega16单片机科学计算器程序源代码

#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();

}

}


推荐阅读

史海拾趣

博巨兴公司的发展小趣事

随着业务的快速发展,博巨兴公司在2004年决定扩大经营规模,将写字楼搬迁至福田区彩田路彩虹大厦。这一举措不仅提升了公司的形象,也为进一步拓展业务提供了更好的条件。同时,公司不断加强技术研发,成功取得了苏州市华芯微电子有限公司的代理权,进一步巩固了在芯片代理领域的地位。

General Electric Company公司的发展小趣事
能够承受较高的电源电压,通常远高于普通运算放大器。
Fujisoku Corporation公司的发展小趣事

在电子废弃物处理成为全球关注焦点的背景下,“未来电子”积极倡导绿色生产和循环经济理念。公司投入大量资源研发环保型电子产品,并建立了完善的电子废弃物回收处理体系。通过技术创新和科学管理,“未来电子”实现了生产过程中的节能减排和废弃物的有效回收利用,赢得了社会各界的广泛赞誉。这一举措不仅提升了公司的社会形象,还为公司的可持续发展奠定了坚实基础。

昆泰芯微电子(CONNTEK)公司的发展小趣事

昆泰芯微电子自成立以来,便以其深厚的技术实力和持续的创新能力,在电子行业中独树一帜。公司拥有一支由清华大学、荷兰代尔夫特理工大学等海内外知名大学毕业的专业技术团队,他们具备在恩智浦、美满电子及高通等半导体名企的工作经历,为公司带来了丰富的行业经验和前沿技术。在传感器芯片领域,昆泰芯微电子成功研发出具有国际一流性能的产品,成功打入一线知名品牌厂商,引领了行业风潮。

Baton Lock公司的发展小趣事

在快速发展的过程中,Baton Lock意识到产品质量是公司生存和发展的关键。因此,公司投入大量资源加强品质管理,从原材料采购到生产流程控制,再到产品检测,都实施了严格的标准和程序。这一举措有效提升了产品的稳定性和可靠性,赢得了客户的信任。

迦美信芯(CanaanTek)公司的发展小趣事

迦美信芯一直致力于技术创新和产品升级。公司推出的面向手机终端和物联网的2G/3G/4G/5G全系列的射频开关、天线调谐器、低噪声放大器等产品,在行业内具有较高的知名度和美誉度。特别是在天线调谐器领域,迦美信芯已成为国内设计出天线调谐器芯片并大量量产的厂家之一。

问答坊 | AI 解惑

MSP430系列单片机简介

MSP430系列单片机简介…

查看全部问答>

交流并网逆变器,是不是先要用建交流小信号模型?

本信息来自合作QQ群:电子工程师技术交流(12425841) 群主在坛子ID:Kata   交流并网逆变器,是不是先要用建交流小信号模型,然后用matlab仿真,然后才是主回路拓扑结构 功率器件的选择,DSP算法的实现啊? …

查看全部问答>

ARM中如何把常量数组放在代码段?

现在有个很大的常量数组const int testdata[1000],为了节约内存,想把他放在代码段里面。 请问需要怎么申明?以前在单片机里面字节加个code前缀就可以了,ARM里是怎么实现的? RO数据区就是代码段吗?…

查看全部问答>

谢谢!急需

arduino的编程c代码给我弄几篇…

查看全部问答>

关于802.11模块

现在市面上有没有802.11的通讯模块卖?…

查看全部问答>

WinCE Bluetooth 问题 求解 感谢

各位先进好 跟各位先进请教几个问题 小弟最近在研究嵌入式系统的蓝牙装置 使用的cpu是 s3c2443 , OS是 WinCE Platform Builder 5.0 我想建构一个bluetooth的AP 查了一下 MSDN 却对于有些感到不解 MSDN 将嵌入式系统的蓝牙区分为Bluetooth OS Des ...…

查看全部问答>

RC充电计算方法

      RC充电计算方法 转载:http://hi.baidu.com/cumtsun/blog/item/b8ee5f16561cae4e20a4e93c.html 例1:如图所示的是一个单片机的上电复位电路,电源电压Ucc=5V,电容器    ...…

查看全部问答>

请问版主:STM8S903的芯片能不能进行IO口的模拟?

                                 我现在想用903的PA3 和 PF4来模拟I2C的SCL 和 SDA 。这样可以么?怎么实现模拟的呀?谢啦!…

查看全部问答>

FPGA

 .。。。。。。。。。。。。。。。。。。。。…

查看全部问答>

普通的IO信号在PCB上对应的fpga脚为全局时钟

     各位大侠,晶振的时钟为main_clk,将该时钟分频后得到AD的时钟AD_clk,但是在实际的电路图中,我AD_clk连接在了fpga的全局时钟对应的脚上面个,综合的时候报错,好像是普通的IO信号时不能连在全局时钟上面的,现在肿么办 ...…

查看全部问答>