最近有SONIX搞个垃圾东西
其中需要显示需要把2进制变为10进制
typedef unsigned char tu08;
tu08 time;
tu08 time_temp;
tu08 shiwei;
tu08 gewei;
tu08 LED_TAB_BUFFER[2];
__ROM unsigned char LED_TAB[10]={seg_0,seg_1,seg_2,seg_3,seg_4,seg_5,seg_6,seg_7,seg_8,seg_9};
用传统的方法
void compute(void)
{
shiwei=time/10;
gewei=time%10;
LED_TAB_BUFFER[0]= LED_TAB[shiwei];
LED_TAB_BUFFER[1]= LED_TAB[gewei];
}
用这个方法多吃掉我5个RAM
代码很大
运行时也很耗时间
由于最后我缺一个RAM(因为片子本身就48个RAM)
决定就从它入手了
因为就显示两位数
手术后
void compute(void)
{
shiwei=0;
time_temp=time;
while (time_temp>= 10) {
time_temp -= 10;
shiwei++;
}
LED_TAB_BUFFER[0]= LED_TAB[shiwei];
LED_TAB_BUFFER[1]= LED_TAB[time_temp];
}
5个RAM省了
速度提上来了
要是谁还有好的方法欢迎赐教
第一次发经验贴欢迎拍砖 |