用C语言编写单片机上计算器程序遇到问题
- 提问者网友:斑駁影
- 2021-04-26 18:32
- 五星知识达人网友:夜余生
- 2021-04-26 19:15
串口输入数据:用串口调试助手 输入然后点发送就行 如 输入 3和4 就在串口助手填入0x03 0x04 勾16进制发送选项就不会以ASCII码发送,单片机接收到的就是0x02和0x04
另外ASCII码和10进制可以转换,如果以ASCII码发送,那就收后转为10进制计算再转为ASCII发回电脑即可
还有8位2进制数可以代表最大的10进制数为255,所以你发送33单片机不会误以为是两个数的
- 1楼网友:舊物识亽
- 2021-04-27 00:42
- 2楼网友:上分大魔王
- 2021-04-26 23:38
不懂
- 3楼网友:迟山
- 2021-04-26 22:26
串口输入就不用说了吧。
串口调试助手,或者你上位机软件好,也能自己写个。
第二个问题,结果 -48就行了。假设2+2,电脑得到的是(2+2)=(50+50)=100-48=52=4
- 4楼网友:雪起风沙痕
- 2021-04-26 21:02
void Serial_INT() interrupt 4 { static unsigned char Pointer;
if(!RI) return;
ES = 0; RI = 0; switch(SBUF) { case 0xfe: //指令开始 Pointer = 0x00; Register[0] = 0x00; break; case 0x80: //执行指令 if(Register[0] != 0x00) Serial_instru = 0x80; break; default: Register[Pointer] = SBUF; //指令内容 Pointer++; break; }
ES = 1; }
- 5楼网友:迷人又混蛋
- 2021-04-26 20:30
- 6楼网友:青灯有味
- 2021-04-26 20:10
问题一:如何输入一个两位数是吧……
通过串口输入:串口进来的数是以位传输的,如果是8位的,你需要先将数据转换成十进制数,用(x*10+y)得到两位数,x是高位,y是低位。这样就得到了两位的数了!
问题二:无论加减乘除都是二进制形式计算的!比如你输入的是1和2,他们二进制形式为别是1,10,那么加起来后就是11,即3!
如果你想输入33,即先输入3,再输入3,按照3*10+3就得到33.
你输入的时候应该一位一位的输入,应该都是这样吧,从键盘上按下一个数字就发送给单片机,单片机接收后再次接收一个数,直到你按下+-*/为止,然后就把它转换成十进制形式加成你想要的两位或者更多位!
最后再进行加法或其它!