永发信息网

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

答案:1  悬赏:0  手机版
解决时间 2021-03-17 21:31
  • 提问者网友:雨不眠的下
  • 2021-03-17 04:08
51单片机怎么处理24位数据?
最佳答案
  • 五星知识达人网友:一秋
  • 2021-03-17 04:36
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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯