|
【TI首届低功耗设计大赛】二 - 十进制互换有妙方
[复制链接]
本帖最后由 dontium 于 2014-12-21 14:10 编辑
俺的参赛项目中,有数字显示部分,当然显示部分有二 - 十进制转换问题 ----- CPU处理需要二进制,显示数字需要十进制,
项目中用到实时钟,所以详细地看了RTC部分,在完成时钟的编程后,又在考虑FR5969中的几个寄存器都有什么用途,
发现,在手册 中有两个寄存器:
BCD2BIN、 BIN2BCD
在手册中没有任何说明,没有任何解释。只是在寄存器的位说明中说了它代表什么。
---- 这点可能不会被大伙重视。然而,它却能给程序编制带来很大益处。
一般地,ADC采集后显示是这样的(对于12位的ADC):
DisplayNumber = Adcval/1000; ----------- 找出最高位
Display(DisplayNumber ); --------------- 显示最高位
temp = Adcval- DisplayNumber *1000;
DisplayNumber = temp/100; --------- 找出次高位
Display(DisplayNumber ); --------------- 显示次高位
……
这样就显示得烦琐。
现在利用 BCD2BIN、 BIN2BCD寄存器就可以一下子搞定!
1、将ADC结果写入BIN2BCD BIN2BCD = Adcval;
2、从BIN2BCD中读出
DisplayNumber1 = ( BIN2BCD & 0xf000 )>>12;
DisplayNumber2 = ( BIN2BCD & 0xf00 ) >> 8;
……
-------------就这么简单!
|
|