深圳市瑞丰汇科技有限公司 TEL:0755-83039202 FAX:0755-83038396
法宝级的 EMC 单片机编程技巧集锦
EM78 系列单芯片-提升软件效率的小程序
EM78 系列单芯片-提升软件效率的小程序
笔者闲暇时总喜欢一个人窝在房里拿烙铁 ,焊电路板,在网络上游走,看到喜欢的 DIY 也一定仔细端详,即使按图施工也可以得
到不少的乐趣,相信酷爱此道的人应该也不少 ,除了喜欢看看别人的作品,也可以互相比较一下看谁用的零件少,谁提供的功能
强,谁的速度最快,所以经常很容易就搜集到一些不错的电路,日子久了就像堆积木一样,可以一个方块一个方块的拿来用,吾人
戏称为积木设计法。将许多有用的电路组合在一起,又是一个新的东西。这种方式的确又快又经济,符合现代人快餐的观念。不仅
是硬件可以像堆积木一样的收集起来,软件当然也可以适用于积木法则,于是在不少有心人的努力之下,笔者也收集了 EM78 系列
单芯片一些很好的链接库,所以说麻雀虽小,五脏俱全。也因为这些链接库极具参考价值,笔者不忍独享,故决定将紊乱的笔记重
新整理后
公开出来,与热爱此系列单芯片的朋友们一同分享。
EM78XXX 单芯片自从问世以来已经陆续推出十余种不同等级的单芯片,小到 8Pin 的 78P152,大到 100Pin OTP 的 78P860,其汇
编语言指令都是一样的,仅有 57 个,所以反复练习几次就能熟悉指令的用法。汇编语言用在 I/O 控制非常容易,也有很高的效率,
所以坊间的书籍大部份以讨论控制为主显,显少专门探讨软件技巧的篇幅,其实老手都知道,关于芯片之控制往往用到时再去翻一
翻 DATA BOOK,注意一下 TIMING,然后准备一部示波器,三两下就可以搞定。反倒是算法用的好不好会大大影响产品的稳定度,
所以有经验的程序设计师通常都有自己的一套葵花秘笈,所以要提升自己的功力最好的方式除了多练习之外,看看别人的程序也会
使你进步很快。
BCD 转换成 Binary
由于 EM78XXX 是 8 位的微控器,因此为了节省内存,我们的范例仅以一个 BYTE 存放两位 BCD 数为例,数字的范围在 0~99 之
间,转换后的结果放在 ACC,如果您需要更多的位数,相信您在看完之后应该不难自行修改才是。
程序一
这个范例程序共花费 13 个指令 CYCLE,需要两个变量空间,执行后会影响到原 BCD 的内容。
MOV A,BCD
MOV TMP,A
MOV A,@0x0F
AND TMP,A
SWAP BCD
AND BCD,A
BC PSW,0
RLC BCD ; *2
MOV A,BCD
ADD TMP,A
RLC BCD
RLCA BCD ; *8
ADD A,TMP
说明
在程序一中所采用的方式应该算是最多人知道的方式,也是一种最直觉的方法,先将 BCD 个位数保存起来,因为十位数必须要乘
以 10,所以利用移位的技巧乘以 10 再加上个位数,所得的答案放入 ACC。
程序二
在程序一的缺点,就是在执行程序以后,原本 BCD 的内容已经在移位的过程中被破坏掉了,为了改善这项缺失,我们换一种方式
看看。下面这个程序,我们企图改善前面的缺失,共花费 11 个指令 CYCLE,仍需要两个变量空间,但是执行后不会破坏原来 BCD
的内容。