作为ASM下PIC编程的初学者,我不明白为什么在示例中,在设置新值之前要清除一个寄存器。在实际运行的程序中,这并不是这样做的,一切都运行得很好。
使用CRLF的示例
CRLF PORTB ; Init PORTB by clearing output data latches
BSF STATUS, RP0 ; Select Bank 1
MOVLW 0xCF ; Value used to initialize data direction
MOVWF TRISB ; Set RB<3:0> as inputs
假设我有一个Java程序,比如:
//case1
Long first = 1;
Long second = 1;
Long third = first - second;
//case2
Long first = Long.MAX_VALUE;
Long second = 100000L;
Long third = first - second;
这两种情况应该有完全相同的执行时间和开销,不是吗?实际的操作是在长右边的每一位上执行的,而不管它包含的值是什么,对吗?
如果我的假设是真的,有哪种语言不是这样的呢?
编辑:提示这一点的案例是我们在工作中使用的16位PIC (C代码),它计算不同时
下面的代码不会在我的PIC18F14K50上将任何引脚设置为高电平,但它不能再简单了!
#include <pic18.h>
#include <htc.h>
void main(void)
{
// Set ALL pins to output:
TRISA = 0;
TRISB = 0;
TRISC = 0;
// Set ALL pins to high:
LATA = 0b11111111;
LATB = 0b11111111;
LATC = 0b11111111;
// Leave pins high and wait