打印

16位二进制数转三进制软件51单片机算法思路

[复制链接]
2368|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zenyin|  楼主 | 2007-12-12 12:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一个疑问:吃饱了二进制转三进制干吗啊?
背景:像PT2262PT2272等"骗"子采用三态编码(低,浮空,高),通常都是用"接地接VCC悬空"来硬编码,这样就是固定密码了,这在数字示波器成为普通工具的今天,固定密码已经只能对付**鸣狗盗的宵小了,滚动密码正是新时期的矛与盾,要是利用单片机软编码呢?不就可以实现三态软件控制了,也正是因为单片机的嵌入可以按"同步的游戏规则实现滚动密码"!
如果是8位数据密码,这不难,只要不断除以3取余数就是了!关键现在是16位的,换句话说只要把高8位处理完底下就好整了!
   下面的思路不光对三进制是适合的对任意进制都有参考意义!
                  这是个抓大放小的思路
首先注意一个细节  3的5次方为243 而2的8次方是256 
一个16位二进制数例如(R3R4)本质是R3*256+R4
一定可以写成R3*243+R3*13+R4=R2*243+(R3R4)    (R3R4)还是二进制数,而且 这个数最大只可能为256*(256-243)=3328=0D00H!请问为什么? 
再做一次R3*243+R3*13+R4,把R3加到R2中(R2可能有进位了)余数还(R3R4)
此时这个数一定小于13*13+255,再补充一次(也最多一次),R3一定是小于243的数了,到此就把一个二进制数按3的权位展开了,刚才高位循环只最多用了三次
地位不别连续除以3而是分别除以812793也最多除4次完成!
同样的思路当把256看着250时,最适合做16位二进制树转BCD码运算!
如果是A/D转换,你可以把基准比正常调低250/256这样高位的码就是250的权,你除以40/4就分别对应了万和千,而低位字节你的作RN*250/256,其中除以256等于丢弃乘法的低八位,这运算就非常简单了!希望大家广泛运用这个技巧!
还有一个问题,既然有单片机还用2272/2262干吗?呵呵~~~~~~~~~

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

90

主题

393

帖子

5

粉丝