1

我将使用 Microchip 的 PIC16F84A 实现我的电路……所以我必须从PORTA,3to发出信号,PORTB,0但 movwf 只是在使用PORTB……我有以下代码

movf        PORTA,3   ; copy PORTA,3 into registry
movwf       PORTB,0   ; copy PORTA,3 from the registry into PORTB,0

所以...当我给它一个高PORTA,3信号时,它应该发出一个信号PORTB,0......

我怎么能意识到这一点?

4

2 回答 2

1

这应该将值移动PORTAPORTB

movf PORTA, W
movwf PORTB

您的问题有点不清楚是要按原样移动值,还是要将 0 的PORTB位设置为PORTA. 在后一种情况下,您可以执行以下操作(用 C 编写,因为我不知道确切的 PIC16 语法):

temp = PORTA;
temp >>= 3; 
temp &= 1;      // temp now contains PORTA.0 in bit 0
temp2 = PORTB;
temp2 &= ~1;    // clear bit 0, keep all others as-is
temp |= temp2;
PORTB = temp;
于 2013-05-28T06:29:20.303 回答
1

将信号 PORTA(3) 移动到 PORTB(0):

btfss PORTA,3
bcf PORTB,0
btfsc PORTA,3
bsf PORTB,0

编辑:

// if PORT(3) is zero, PORTB(0,1,2) is reset to zero
movlw f8
btfss PORTA,3
andwf PORTB,1

// if PORT(3) is set, PORTB(0,1,2) is set to high
movlw 03
btfsc PORTA,3
iorwf PORTB,1
于 2013-05-28T06:44:02.217 回答