2022年2022年计算器c程序 .pdf





《2022年2022年计算器c程序 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年计算器c程序 .pdf(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、#include unsigned char code disp_tab13=0 x28,0 x7e,0 xa2,0 x62,0 x74,0 x61,0 x21,0 x7a,0 x20,0 x60,0 xff,0 xa1,0 xf7; unsigned char code disp_tab_point13=0 x08,0 x5e,0 x82,0 x42,0 x54,0 x41,0 x01,0 x5a,0 x00,0 x40,0 xff,0 x40; unsigned char disp_buf8=10,10,10,10,10,10,10,0,disp_buf_X8,disp_buf_Y8; u
2、nsigned char keynum,shift_point; float X,Y ,Z; bit flag_div,flag_mul,flag_add,flag_sub,flag_point,flag_result,flag_keynum,no_keynum;bit flag_add_cal,flag_sub_cal,flag_cal,flag_error,flag_store_Y ,flag_fushu; bit flag_add1,flag_sub1,flag_mul1,flag_mul_cal,flag_div1,flag_div_cal;sbit flag_clear=P30; s
3、bit flag_OFF=P31; void mdelay(unsigned int Delay); unsigned char keyscan(void); void display(void); void readkey(unsigned char date); void pro_display(void); void store_X(void); void store_Y(void); void CHANGE_BCD(void); main() unsigned char i; while(1) readkey(keyscan(); pro_display(); if(!flag_OFF
4、) for(i=0;i8;i+) disp_bufi=10; if(!flag_clear) flag_add_cal=0; flag_sub_cal=0; flag_mul_cal=0; flag_div_cal=0; flag_add1=0; flag_sub1=0; flag_mul1=0; flag_div1=0; flag_add=0; flag_sub=0; flag_mul=0; flag_div=0; flag_cal=0; flag_point=0; flag_result=0; flag_keynum=0; 名师资料总结 - - -精品资料欢迎下载 - - - - - -
5、- - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - no_keynum=0; flag_store_Y=0; X=0; Y=0; Z=0; for(i=0;i=0) flag_fushu=0; / else Z=X+Y ; CHANGE_BCD(); else flag_add=0; store_X();/ 只要按了就存储当前值为X flag_cal=1; flag_add1=1;flag_sub1=0;flag_mul1=0;flag_div1=0; else if(flag_sub)/ 减法
6、if(flag_sub_cal) flag_sub_cal=0; flag_cal=1; store_Y(); / if(flag_fushu) if(X=Y)&(!flag_fushu) Z=X-Y ; else if(!flag_fushu) flag_fushu=1; Z=Y-X; else if(flag_fushu) Z=Y+X; CHANGE_BCD(); else 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 9 页 - - - - - - - - - f
7、lag_sub=0; store_X();/ 只要按了就存储当前值为X flag_cal=1; flag_sub1=1;flag_add1=0;flag_mul1=0;flag_div1=0; else if(flag_mul) / 乘法 if(flag_mul_cal) flag_mul_cal=0; flag_cal=1; store_Y(); Z=X*Y ; CHANGE_BCD(); else flag_mul=0; store_X();/ 只要按了就存储当前值为X flag_cal=1; flag_mul1=1;flag_add1=0;flag_sub1=0;flag_div1=0;
8、 else if(flag_div) / 除法 if(flag_div_cal) flag_div_cal=0; flag_cal=1; store_Y(); if(Y=0.) flag_error=1; else Z=X/Y ; CHANGE_BCD(); else flag_div=0; store_X();/ 只要按了加号就存储当前值为X flag_cal=1; flag_div1=1;flag_add1=0;flag_sub1=0;flag_mul1=0; else if(flag_result)/= 号键计算结果 flag_result=0; if(flag_add1|flag_su
9、b1|flag_mul1|flag_div1) if(!flag_store_Y) store_Y();flag_store_Y=1;/存储 =号按时的第一次值为Y if(flag_add1) Z=X+Y ; X=Z; flag_add_cal=0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 9 页 - - - - - - - - - if(flag_sub1) flag_sub_cal=0; if(X=Y)&(!flag_fushu) Z=X-Y ;X=Z; el
10、se if(!flag_fushu) flag_fushu=1; Z=Y-X;X=Z; else if(flag_fushu) Z=Y+X;X=Z; if(flag_mul1) flag_mul_cal=0; Z=X*Y ; X=Z; if(flag_div1) flag_div_cal=0; if(Y=0.) flag_error=1; else Z=X/Y ; X=Z; CHANGE_BCD(); display(); else flag_cal=1; void mdelay(unsigned int Delay) unsigned int i; for(;Delay0;Delay-) f
11、or(i=0;i124;i+) ; void pro_display(void)/ 输入显示处理程序 unsigned char i; if(flag_cal)/ 如果有 +-*/ 键按下if(flag_keynum|flag_point)/如果再有数字键按下 flag_cal=0; flag_keynum=0; flag_add_cal=1; flag_sub_cal=1; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 9 页 - - - - - - - - - fl
12、ag_mul_cal=1; flag_div_cal=1; shift_point=0; for(i=0;i7;i+) disp_bufi=10; if(flag_point) disp_buf7=0;flag_point=0;shift_point=7; else disp_buf7=keynum; else /没有数字键则显示display(); else /没有 +-*/ 键按下,就等待数字键键入,并作一些处理 if(disp_buf1=10)/判断是否到了首位 if(flag_point)/ 判断是否按了 .号if(shift_point=0)/ 如果是第一次按的.号flag_poin
13、t=0;shift_point=7; if(flag_keynum)/ 有数字键按下 flag_keynum=0; if(disp_buf7=0)&(disp_buf6=10)&(shift_point=0)/末尾位为0 且前面一位没数值且没有. if(keynum!=0)/ 如果键值不为0 则送末位disp_buf7=keynum;display(); else display(); else/末尾位不为0 for(i=0;i7;i+)/全体向首部移一位disp_bufi=disp_bufi+1; if(shift_point) shift_point-; disp_buf7=keynum;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年计算器c程序 2022 计算器 程序

限制150内