C语言

您所在的位置:网站首页 十进制转bcd码公式 C语言

C语言

2023-12-14 22:11| 来源: 网络整理| 查看: 265

前言

BCD码作为DS1302以及个别时间传感器的是以BCD码的形式来储存数据的,所以,显示与设置数据的时候需要代码手动进行设置。

BCD码介绍

BCD码是以十六进制方式显示为十进制的计数方式

比如:0x00~0x09,代表十进制中的1—9 0x10代表的并不是传统十六进制所代表的128,而是10, 十六进制的abcbdef在bcd码中并不存在。

代码

Sec代表秒 Min代表分钟 Hour代表小时

加法:

Sec++; //按下按键秒时间增加1 if((Sec&0x0f) == 0x0a) //当后四位值变成10 { Sec = Sec&0xf0; //后四位归零 Sec += 16; //前四位进1 if(Sec >= 0x60) { Sec = 0x00; Min++; if((Min&0x0f) { Min= Min&0xf0; //后四位归零 Min+= 16; if(Min >= 0x60) { Min = 0x00; Hour++; //按下按键小时时间增加1 if(Hour >= 0x24) //当所得值为24 { Hour = 0x00; //全部归零 } if((Hour&0x0f) == 0x0a) //当后四位值变成10 { Hour = Hour&0xf0; //后四位归零 Hour += 16; //前四位进1 } } } } }

减法

Sec--; //按下按键分钟时间减去1 if((Sec&0x0f) == 0x0f) //当后四位值变成15 { Sec = (Sec&0xf0)|0x09; //后四位改为9 if(Sec == 0xf9) //0x00-1 = 0xff 经程序变成0xf9 { Sec = 0x59; Min--; //按下按键分钟时间减去1 if((Min&0x0f) == 0x0f) //当后四位值变成15 { Min = (Min&0xf0)|0x09; //后四位改为9 if(Min == 0xf9) //0x00-1 = 0xff 经程序变成0xf9 { Min = 0x59; Hour--; //按下按键小时时间减1 if(Hour == 0xff) //当所得值为-1(unsigned char) { Hour = 0x23; //变成最大数减1(24-1) } if((Hour&0x0f) == 0x0f) //当后四位值变成15 { Hour = (Hour&0xf0)|0x09;//后四位改为9 } } } } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3