Assembly 组装TRISA/PORTD?

Assembly 组装TRISA/PORTD?,assembly,microcontroller,pic,Assembly,Microcontroller,Pic,我已经编写了一个程序,在我的PIC上打开几个LED,但我仍然不确定这些是做什么的: MAIN CLRF TRISD CLRF PORTD BCF TRISA,RA1 BCF TRISA,RA2 所以,我清除TRISD和PORTD,然后清除TRISA,RA1和RA2。清除TRISA,RA1是否意味着我清除了引脚RA1以便可以将其用作输出,还是我选择了银行?当涉及到CLRF TRISD/PORTD时,我无法准确地理解

我已经编写了一个程序,在我的PIC上打开几个LED,但我仍然不确定这些是做什么的:

MAIN    CLRF    TRISD
        CLRF    PORTD
        BCF     TRISA,RA1
        BCF     TRISA,RA2

所以,我清除TRISD和PORTD,然后清除TRISA,RA1和RA2。清除TRISA,RA1是否意味着我清除了引脚RA1以便可以将其用作输出,还是我选择了银行?当涉及到CLRF TRISD/PORTD时,我无法准确地理解他们在做什么…

您将
1
写入
TRISx
位以使相应的端口引脚成为输入,将
0
作为输出

通电时,数据方向为“输入”,以便在配置之前不会获得任何不需要的输出状态。假设其中一个输出触发警报?因此,您的前两行是背对背的-它们通过在配置之后写入输出来破坏该策略。他们应该是

MAIN    CLRF    PORTD   ;set output state before configuring data direction
        CLRF    TRISD   ;set data direction as 'output' for all pins

接下来的两条语句将端口A的两个单独管脚上的数据方向设置为输出,但同样,在写入所需的输出状态之前这样做是危险的。

CLRF TRISD是否将端口D设置为输出,而CLRF PORTD只是清除端口D的值,还是我错了?