完善资料让更多小伙伴认识你,还能领取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 条评论
|
|
感谢楼主谢谢分享
|
|
|
|
路过学习,谢谢分享。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
875 浏览 2 评论
【youyeetoo X1 windows 开发板体验】+ 影音处理和AI模型移植
730 浏览 5 评论
I.MX6ULL-飞凌 ElfBoard ELF1板卡- 移植zbar的方法
888 浏览 0 评论
1566 浏览 3 评论
由于 Windows 无法加载这个设备所需的驱动程序,导致这个设备工作异常?
2452 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
3749 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-3-29 14:16 , Processed in 0.711221 second(s), Total 104, Slave 83 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号