找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1322|回复: 4
收起左侧

关于51单片机汇编语言计算器程序的几个问题分析

[复制链接]
ID:73992 发表于 2022-11-11 21:42 来自手机 | 显示全部楼层 |阅读模式
我做51单片机计算器部分的时候遇到的问题
使用的是1602显示屏
按键输入的十进制值存入单片机70h~7fh。共16个ascii字符比如:2222333355556666的asc码
60h~6fh留存计算结果。
问题,70h~7fh的值不是真的值,是asc码。如果存真的值1602显示不出。
这个就涉及到框架和流程问题。将真值存入内存,在显示部分转换成asc码。
或者计算的时候转成真的值算完了改成asc码存入内存。或者有标准的通用的框架流程
问题2,就是16位十进制数计算,超过了累加器A的大小,是按十进制每一位分别计算还是将每一位数加好了写入内存,然后整体计算呢。
问题3,就是请推荐关于汇编计算的书籍。
不然我做的计算器可能只会计算结果小于255的算术
回复

使用道具 举报

ID:195496 发表于 2022-11-12 08:17 | 显示全部楼层
去看一下单片机基础这本书,上面有例子,汇编语言的
回复

使用道具 举报

ID:883242 发表于 2022-11-12 23:01 | 显示全部楼层
你先试着做一个16位数据加减法程序,光想不去实践是永远做不出来的。
回复

使用道具 举报

ID:123289 发表于 2022-11-14 17:00 | 显示全部楼层
本帖最后由 yzwzfyz 于 2022-11-15 08:25 编辑

通用易想到的方法:
输入数字部分(任意进制,格式)-- 转成二进制进行运算 -- 转成显示码(显示设备需要的码)-- 送出显示
本例:
1、按键只是IO口的电平高低,无多少值一说。
2、按键后,先做识别,可以解析成数字,建议用二进制储存。【通用】
3、正常二进制运算【CPU善长】
4、转成BCD码【10进制】
5、转成ASCII码【需要的码】
6、送出

汇编计算是相当麻烦的事,没有很深的功底写不了。
多看别人的程序,自己慢慢积累。
先学会多字位的加、减,
再乘除,
再学会BCD码、ASCII码等其它码的转换,
再学会浮点数的表达方式及其加减乘除。
这样,许多常规的运算就解决了。
开方、三角函数,更需要数学功底。较难。
所以,现在很少数人用汇编写程序,但是会汇编的人,对单片机必然是精通的。否则他无法写程序,最低层了,是单片机的最高境界。
汇编最大的好处是,不受函数库的限制,可以直接根据元件说明编写控制程序。
而用C写程序时,一旦某元件的库文件没有提供时,就傻眼了。也即程序建立他人的元件库文件上。

回复

使用道具 举报

ID:73992 发表于 2022-11-16 13:12 来自手机 | 显示全部楼层
yzwzfyz 发表于 2022-11-14 17:00
通用易想到的方法:
输入数字部分(任意进制,格式)-- 转成二进制进行运算 -- 转成显示码(显示设备需要 ...

我选择的流程是,按键存成asc码,1602可以直接显示。需要用到内存值的时候,将asc码转成二进制。进行计算。这两天我学习了双字节加法。1,fefe+f0f5等等。按照算术流程,如十进制355+652,先把加数转换成二进制,再把被加数转换成二进制,计算出结果转成asc码1602显示
2,我准备验证的流程是,上式为例不进行二进制计算,2+5=7存个位成asc码,5+5=0存十位成asc码 进1,1+3+6=0存百位成asc码进1,1+0=0存千位成asc码。这样的话省的来回转换
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表