read_rtc指令读取的PLC日期bcd码怎样转换成单个的ascⅱ码
林慧玲
发布于2014-03-21 17:24
5
0
标签:
用read_rtc指令读取plc实时时钟,得到8个字节的bcd码,现在需要将这8个字节日期bcd码的前6个字节转换成ascⅱ码用于发送给微型打印机打印,假设读取的前6个日期数据是13年11月27日23时47分56秒,分别存储在以下数据区内:年13存在vb100中;月11存在vb101中;日27存在vb102中;时23存在vb103中;分47存在vb104中;秒56存在vb105中,怎样将这6个字节的bcd码数据转换成单个的ascⅱ码(就是说要将日期数据1,3,1,1,2,7,2,3,4,7,5,6,转换成12个单独的ascⅱ码用于发送给微型打印机打印),怎样做呢,
佳答案
这种转换可以自己编程。数字(十进制)0,1,2,3,4,...的ascⅱ码(十六进制)为30h,31h,32h,33h,34h,,,,,,。不难看出,两者之间相差30h。这样:
1、例如,年13存在vb100中,可以应用移位等方法方法先从vb100的高四位(即十进制1)取出后存入一字节单元的低四位中(即为00000001)。
2、将上述字节单元中的数值(即为00000001)与30h(即为00110000)相加,其后为00110001,这就是bcd码1的ascii码了,。
3、如法炮制,将应用移位等方法方法先从vb100的低四位(即十进制3)取出后存入一字节单元的低四位中(即为00000011)。与30h(即为00110000)相加,其后为00110011,这就是bcd码3的ascii码了,。
4、所谓的bcd码就是用二进制表示的十进制数,只是数字转换ascii码的编程是较简单的,不需求人。关键就是一个将高四位与低四位的数值弄清即可。可以编制一个子程序,多次调用即可。