大会TRISA/PORTD?

Assembly TRISA/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 使其成为输出。

在power-up,数据方向是"input",这样您在配置它们之前不会得到任何不需要的输出状态。假设其中一个输出触发了警报?因此,您的前两行从头到尾 - 它们通过在配置 after 之后写入输出来破坏该策略。他们应该是

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

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