完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
请问大神这个程序我怎么改成可以进行有符号的计算啊 可以计算负值
#include #define uint unsigned int #define uchar unsigned char ***it dula=P2^6; //段选引脚 ***it wela=P2^7; //位选引脚 uint flag,inputnum1,inputnum2,displaynum,mathsign,outputnum,keynum; uchar address[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; //6位数码管地址数组 uchar table[]={0x3f,0x06,0x5b,0x4f, //0-F共阴型数码管字形码 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,0x40 }; void delayms(uint xms) //延时函数 { uint x,y; for(x=xms;x>0;x--) for(y=110;y>0;y--); } void keyscan() { uchar temp,temph,templ,k; P3=0xf0; temp=P3; temph=temp&0xf0; if(temph!=0xf0) { delayms(10); temp=P3; temph=temp&0xf0; if(temph!=0xf0) { P3=0x0f; temp=P3; templ=temp&0x0f; k=temph^templ; switch(k) { case 0xee: keynum=0;break; //数字0 case 0xde: keynum=1;break; //数字1 case 0xbe: keynum=2;break; //数字2 case 0x7e: keynum=3;break; //数字3 case 0xed: keynum=4;break; //数字4 case 0xdd: keynum=5;break; //数字5 case 0xbd: keynum=6;break; //数字6 case 0x7d: keynum=7;break; //数字7 case 0xeb: keynum=8;break; //数字8 case 0xdb: keynum=9;break; //数字9 case 0xbb: keynum=10;break; // = case 0x7b: keynum=11;break; // 清零 case 0xe7: keynum=12;break; // + case 0xd7: keynum=13;break; // - case 0xb7: keynum=14;break; // * case 0x77: keynum=15;break; // / } while(temph!=0xf0) { P3=0xf0; temp=P3; temph=temp&0xf0; } } } } void display() { if(displaynum<10) //显示1位数,0~9 { P0=0xff; wela=1; P0=address[5]; wela=0; P0=0x00; dula=1; P0=table[displaynum]; dula=0; delayms(1); } else if (displaynum<100) //显示2位数,10~99 { P0=0xff; wela=1; P0=address[5]; wela=0; P0=0x00; dula=1; P0=table[displaynum%10]; dula=0; delayms(1); P0=0xff; wela=1; P0=address[4]; wela=0; P0=0x00; dula=1; P0=table[displaynum/10]; dula=0; delayms(1); } else //显示3位数,100~999 { P0=0xff; wela=1; P0=address[5]; wela=0; P0=0x00; dula=1; P0=table[displaynum%10]; dula=0; delayms(1); P0=0xff; wela=1; P0=address[4]; wela=0; P0=0x00; dula=1; P0=table[displaynum%100/10]; dula=0; delayms(1); P0=0xff; wela=1; P0=address[3]; wela=0; P0=0x00; dula=1; P0=table[displaynum/100]; dula=0; wela=1; P0=address[3]; wela=0; P0=0x00; dula=1; P0=0x40; dula=0; delayms(1); } } void main() { while(1) { keyscan(); if(keynum<10) { if(flag==0) { inputnum1=keynum; displaynum=inputnum1; } if(flag==1) { inputnum2=keynum; displaynum=inputnum2; } } if(keynum==10) { switch(mathsign) { case 12: outputnum=inputnum1+inputnum2;break; case 13: outputnum=inputnum1-inputnum2;break; case 14: outputnum=inputnum1*inputnum2;break; case 15: outputnum=inputnum1/inputnum2;break; } displaynum=outputnum; } if(keynum==11) { displaynum=0; inputnum1=0; inputnum2=0; outputnum=0; flag=0; keynum=16; mathsign=0; } if((keynum>=12)&&(keynum<=15)) { flag=1; mathsign=keynum; displaynum=0; } display(); } } |
|
相关推荐
5个回答
|
|
|
char int 是可以带符号的
|
|
|
|
|
|
把所有变量定义为int
|
|
|
|
|
|
有负值就是能多显示一个负号呗,数据改成有符号数,显示的时候判断小于0就先显示负号然后再显示数据
|
|
|
9 条评论
|
|
|
感谢楼主谢谢分享
|
|
|
|
|
|
路过学习,谢谢分享。
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
528 浏览 0 评论
654 浏览 0 评论
858 浏览 0 评论
837 浏览 0 评论
RT-Thread与英飞凌(infineon)合作得板子PSOC 6 板子学习
770 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
17064 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-14 22:55 , Processed in 0.854367 second(s), Total 96, Slave 77 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
908