51单片机怎么处理24位数据?

比如我从AD那里收到一个24位的数据0FFFFFFH,我怎么把数据转化为10进制,并用LED显示,我需要汇编代码,显示部分不用,主要是转化部分高手帮帮忙啊... 比如我从AD那里收到一个24位的数据0FFFFFFH,我怎么把数据转化为10进制,并用LED显示,我需要汇编代码,显示部分不用,主要是转化部分
高手帮帮忙啊
展开
 我来答
采百合de大笨熊
推荐于2016-07-08 · 超过11用户采纳过TA的回答
知道答主
回答量:43
采纳率:100%
帮助的人:0
展开全部
3字节二进制数范围为0-16777215,所以需要8位数码管来显示这个数
假如我们收到的三字节数为0E23456H=14824534(十进制)
那么,若想将其显示出来,我们需分别求出1,4,8,2,4,5,3,4 这8个数,
分别将其放入相应的内存单元,供显示程序读取。
现在的关键问题就是如何从0E23456H得到1,4,8,2,4,5,3,4
我们知道,0E23456H=14824534=1*10000000+4*1000000+8*100000+2*10000+4*1000+5*100+3*10*4*1
这就是十进制
所以,我们只需将14824534除以10000000,商即为10000000的权值,结果是1;余数为4824534,再除以1000000,商即为
1000000的权值,结果是4;余数为824534,再除以100000,....;余数为34,再除以10,得3,为10的权值;余数为4,为
1的权值.
8个数都求出来了
ok

如果你觉得3字节除以3字节的子程序比较难编,我这有个4字节除以2字节的子程序,你可以先把14824534除以10000得到
1482,然后用1482除以1000得1,余数除以100得4,再余数除以10得8,再余数为2。然后用14824534-1482*10000得到4534,
同样的方法得到4,5,3,4
HOHO~

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;函数名称:无符号32位被除数除以16位除数子程序
;说明: 除数不能为0,适用于商不大于2字节的除法
;入口参数:BCS4,BCS3,BCS2,BCS1; CS2,CS1 (4字节被乘数和2字节乘数,高字节在前)
;出口参数:BCS4,BCS3,BCS2,BCS1 (BCS4BCS3为余数;BCS2BCS1为商,高字节在前)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

BCS4 EQU 60H
BCS3 EQU 61H
BCS2 EQU 62H
BCS1 EQU 63H

CS2 EQU 64H
CS1 EQU 65H

DIV32: MOV B,#16
DIV32LOOP1:CLR C
MOV A,BCS1
RLC A
MOV BCS1,A

MOV A,BCS2
RLC A
MOV BCS2,A

MOV A,BCS3
RLC A
MOV BCS3,A

XCH A,BCS4
RLC A
XCH A,BCS4

MOV PSW.5,C
CLR C
SUBB A,CS1
MOV 66H,A
MOV A,BCS4
SUBB A,CS2
JB PSW.5,DIV32LOOP2
JC DIV32LOOP3
DIV32LOOP2:MOV BCS4,A
MOV A,66H
MOV BCS3,A
INC BCS1
DIV32LOOP3:DJNZ B,DIV32LOOP1
CLR PSW.5
DIV32DONE:RET
DIV32LOOP4:SETB PSW.5
SJMP DIV32DONE
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式