单片机怎么用数码管显示大于255的数字?
LOOP:INCR6CJNER6,#255,LOOP;255以内数字累计,低8位INCR7CJNER7,#8,LOOP;低8位到255以后高8位加1算法是这样的,但是还是...
LOOP:
INC R6
CJNE R6,#255, LOOP ;255以内数字累计 ,低8位
INC R7
CJNE R7,#8,LOOP ; 低8位到255以后 高8位加1
算法是这样的,但是还是在数码管上显示不出来,每次到255以后就回0了。 展开
INC R6
CJNE R6,#255, LOOP ;255以内数字累计 ,低8位
INC R7
CJNE R7,#8,LOOP ; 低8位到255以后 高8位加1
算法是这样的,但是还是在数码管上显示不出来,每次到255以后就回0了。 展开
5个回答
展开全部
这个问题,如果用C语言写程序就很好解决了,不用考虑高8位和低8位的事了。
现在说用汇编语言写程序的事:
一、用数码管显示大于255的数,即用16位数表示,最大是65535,这需要有5位数码管才能显示出来,这是以十进制数形式显示的。
二、用数码管显示,是用十进制显示的,还是用十六制数显示的,这是有区别的。以十六进制数显示用4位数码管就够了,即显示:0000~FFFF。
三、以十六进制数显示就比较方便,高8位用2位数码管显示,即显示出R7的值,用2位数码管显示低8位即R6的值就可以了。
四、以十进制数显示就比较麻烦点,需要对由R7R6组成的16位数进行转换,即转换成十进制数再显示,转换成十进制数就是转换成BCD码,而BCD码是5位了,需要3个字节了。
五、你的程序仅仅是计数,并不是显示程序,所以,还不知道你是怎么显示的。你说的每次到255以后就回0了,这是R6,可实际上进位了,R7加1了,你没有显示出来R7的值,所以,才得到这个结果。
现在说用汇编语言写程序的事:
一、用数码管显示大于255的数,即用16位数表示,最大是65535,这需要有5位数码管才能显示出来,这是以十进制数形式显示的。
二、用数码管显示,是用十进制显示的,还是用十六制数显示的,这是有区别的。以十六进制数显示用4位数码管就够了,即显示:0000~FFFF。
三、以十六进制数显示就比较方便,高8位用2位数码管显示,即显示出R7的值,用2位数码管显示低8位即R6的值就可以了。
四、以十进制数显示就比较麻烦点,需要对由R7R6组成的16位数进行转换,即转换成十进制数再显示,转换成十进制数就是转换成BCD码,而BCD码是5位了,需要3个字节了。
五、你的程序仅仅是计数,并不是显示程序,所以,还不知道你是怎么显示的。你说的每次到255以后就回0了,这是R6,可实际上进位了,R7加1了,你没有显示出来R7的值,所以,才得到这个结果。
展开全部
用双字节吧,如果你的单片机寄存器是8位的话,就判断低字节累加是否溢出,如果溢出就高字节加1,这样组合起来就能显示大于255了,理论上无论多大多少位都可以显示。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
显示程序呢?
显示程序中,把 R7,是怎么显示的?
显示程序中,把 R7,是怎么显示的?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
很高深的专业问题啊!!!
追问
我刚开始学习单片机 基础很差 在这个问题上我也是百思不得其解 所以上网看各路大神们能不能给小弟指点指点 实在是感激不尽 谢谢啦····
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询