一个疑问:吃饱了二进制转三进制干吗啊? 背景:像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干吗?呵呵~~~~~~~~~ |