找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1097|回复: 5
收起左侧

单片机计算机程序 怎么样才可以让它的最高位不输出0

[复制链接]
ID:1005774 发表于 2022-3-7 19:58 来自手机 | 显示全部楼层 |阅读模式
怎么样才可以让它的最高位不输出0啊
(这是主程序)
IMG_20220307_195057.jpg
IMG_20220307_195038.jpg
回复

使用道具 举报

ID:277550 发表于 2022-3-8 09:39 | 显示全部楼层
在显示那里修改,从最高位开始,如果是0、并且不是个位数,就不显示该位。
回复

使用道具 举报

ID:844772 发表于 2022-3-8 10:31 | 显示全部楼层
加一个标志位吧,计数一共收到几个数字,这样你也就知道最高位是谁了,同时收到数字也不用8位全左移了。
回复

使用道具 举报

ID:276663 发表于 2022-3-8 14:47 | 显示全部楼层
先以你想到的方法来做,做出来就是了,程序就是为了达到目的,这个目的并不难,你要先自己弄出来一个,然后去优化
回复

使用道具 举报

ID:123289 发表于 2022-3-8 14:56 | 显示全部楼层
设:X是16进制有符号数,需要转成10进制并在LED7-0(由高到低的8位数码管)上显示。
方案:
1、设置S7-0:8个寄存器(或存储器),存放X的绝对值的BCD码,SS是符号标记(1=负,0=正)。
2、设置Y7-Y0:8个寄存器(或存储器),对应存放S7-0段位译码值(数值依据LED的引脚译码,送屏后直接能显示Sx的对应数字)。
3、设置BF7-0:8个闪动标记位,对应LED7-0是否需要闪动,1闪。例如:全不闪BF7-0=00000000;需要第2位闪BF7-0=01000000;需要首末位闪BF7-0=10000001。
4、LED显示扫描程序(注:闪动是在此程序中实现的,这里从略。):从Y7-Y0取数据送屏显示。
程序步骤(当X有变化时才做):
1、将X进行16进制→10制计算,绝对值入S7-0。【注:小数点的表示方式这里略去,负数的显示方式以下也略去】
2、译码:从S7至S0顺序译码。并设立一个首0标记:FE0 = 0/1 = 0显示0/0显示空,译码开始时置 FE0 = 1。【注:这是关键!!!】
3、译码规则:【注:这是关键!!!】
3.1、当Sx=0时,如果FE0 = 0,正常译码。如果FE0 = 1,将“0”译成空(即:Yx=11111111,0亮1不亮的驱动。反之是Yx=00000000)。
3.2、当Sx<>0时,正常译码,并清FE0 = 0(阻止之后将“0”译成空)。
3.3、末位S0必须正常译码(即必须译成0-9,无论FE0是0是1,防止X=0时,LED7-0显示全空)。
回复

使用道具 举报

ID:1005774 发表于 2022-3-8 18:35 来自手机 | 显示全部楼层
IdeaMing 发表于 2022-3-8 14:47
先以你想到的方法来做,做出来就是了,程序就是为了达到目的,这个目的并不难,你要先自己弄出来一个,然后 ...

好的  谢谢
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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