作者ruemann (此人挂网中……)
看板ASM
标题Re: [问题] 初学PIC系列单晶片
时间Tue May 6 00:08:00 2008
※ 引述《icetofux (豆腐)》之铭言:
最近在阅读PIC系列单晶片的DATA SHEET,有几个小问题想不通,想请问:
1.以80C51来说,我们可以直接将常数值用立即定址的方式给输出PORT,如:
MOV P1,
#10101010B
但是在PIC系列IC的标准指令集中,资料搬移指令细分为很多种,却没有一种可
以直接将常数丢往输出PORT(根据使用手册叙述,PORT似乎可以视为暂存器,但
仍然没有一种资料搬移指令可以将常数丢往暂存器。),如果要达到上述功能,
仅能靠:
MOVLW B'10101010'
MOVWF PORTB
来实现,以执行所花费时间来看,的确不一定会比较久,但对於撰写的过程中,
每次要操作输出PORT(暂存器)都得经过W累加器感觉有点麻烦,想请问一下是不是
有更简单或是更常用的方法呢?
-------------------------------------------------------------------------------
巨集的功用在於简化叙述,会在编译/组译之前先将设定的巨集做文字代换後,再进行
编译/组译
巨集的缺点:
1. 容易造成混乱
2. 大部份的 ICE 不支援巨集断点
通常一些简单的流程,可以利用巨集来让程式更具有可读性
PIC 我没用过,不过根据找到的资料可以这样用:
MOVPORT MACRO ppx, cc1 ; MOVPORT 是名称,可自定但关键字不得使用
movlw cc1 ; cc1, ppx 是参数,名称不是关键字即可
movwf ppx ; MACRO 说明巨集开始
ENDM ; ENDM 则代表巨集结束
使用举例:
movport PORTB, B'10101010' ; 这样有没有比较清爽?
大概就是这样
--
我是宅湾人
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.204.29.197
1F:推 icetofux:简单易懂范例,非常感谢你。 05/06 12:30
2F:→ icetofux:顺带提一下,於MPLAB IDE中,使用MACRO於BUILD後, 05/06 12:31
3F:→ icetofux:会以"WARNING"方式进行提示。 05/06 12:32
4F:→ ruemann:我觉得那个WARNING应该可以从IDE的选项中关掉 05/09 18:49