msp430简易计算器.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
msp430简易计算器

/************************************************************** 程序功能:实现六位数的加,减,乘,除和数的n次方,键盘K0~K9的键值 为0~9,K12~K15分别为+,—,*和/,K10为=,K11为上次输入数的n方。 ***************************************************************/ #include msp430x14x.h #include math.h #define uint unsigned int #define uchar unsigned char const uchar segment[19]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0xb7,0xc8,0x8f,0xbf,0x89,0xb9,0xff,0x86,0x88}; uchar static key_flag; uchar static key1; uchar A[6]={0,0,0,0,0,0}; //第一次输入的各位数 uchar B[6]={0,0,0,0,0,0}; //第二次输入的各位数 uchar F[8]={0,0,0,0,0,0,16,16}; //存放显示的数 long int c=0; //第一次输入的数值 long int d=0; //第二次输入的数值 int e=0; //存放符号位 long int g; /****************键盘初始化函数****************/ void int_I_O(void) //扫描键盘p1口及数码管p2,p4,p5口的板上资源初始化(数码管共阳极) { P1DIR |=BIT0+BIT1+BIT2+BIT3; // p1.0至p1.3为输出(p1.0至p1.3为键盘的行) P1OUT =0x00; //p1输出初始化全为0 P5DIR |=BIT7; //p5.7输出 P5OUT =~BIT7; //使能UC573SJ芯片,p5.7为锁存器使能端,低电平有效 P2DIR |=0XFF; //p2口与阴极接口端有连接,控制p2口能获得想要的显示 P4DIR |=0XFF; //p4口与数码管控制端有连接,p4端能控制数码管的熄灭或开启 } /****************系统时钟初始化函数****************/ void int_clk() //时钟设置为smclk=mclk=xt2clk { uchar i; BCSCTL1=~XT2OFF; //xt2off=0,打开高频晶振 BCSCTL2|=SELM1+SELS;//设置smclk=mclk,并使用高频晶振 do { IFG1=~OFIFG; for(i=0;i100;i++) _NOP(); } while((IFG1OFIFG)!=0);//直至OFIFG标志位清为0 IFG1=~OFIFG; } /****************timerA初始化函数****************/ void int_timer() //smclk为时钟来源,8分频,1MHz,增加模式,10ms来一个中断 { TACTL|=TASSEL1+TACLR+ID0+ID1;//smclk为时钟来源,8分频,1MHz TACTL|=MC0+TAIE; //增加模式,并且使能中断 TACCR0=9999; //10ms来一个中断 } /****************检测键盘有无输入函数****************/ void fast_scan() //检测键盘有无输入,没输入key_flag=0,有输入 key_flag=1 { uchar temp; P1OUT =0xf0; //p1口低四位清0,高四位不变, temp=P1OUT0xf0; //p1口为oxf0,没输入,否则有输入 if(temp==0xf0)key_flag=0; //没输入key_flag=0,有输入 key_flag=1 else { key_flag=1; } } /****************行扫描读列值函数****************/ uchar scan_key(uchar line) //表示每行扫描一次,判断一下列值 { uchar key; P1OUT=line; //接受扫描行,用p

文档评论(0)

zhuwenmeijiale + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档