作为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
; RB<5-4> as outputs
; RB <7-6> as inputs
不带CRLF的示例
BSF STATUS, RP0 ; Select Bank 1
MOVLW 0xCF ; Value used to initialize data direction
MOVWF TRISB ; Set RB<3:0> as inputs
; RB<5-4> as outputs
; RB <7-6> as inputs
这两个部分都工作得很好,为什么要清除呢?
发布于 2016-10-29 00:01:55
微芯片控制器的一个常见缺陷是写入PORTx寄存器。你应该永远不要这样做( do )。如果要更改输出引脚的状态,则应直接写入输出锁存器(LATx)。这是因为写入PORTx寄存器涉及读取/修改/写入过程,如果引脚同时改变状态,则会导致问题。仅使用PORTx读取输入管脚(当然还有输出管脚)的值。
如注释中所述,TRISx寄存器设置引脚(0=输出、1=input)的方向。请注意,这与使用0=input、1=output的某些其他处理器(例如摩托罗拉HC12)的设置相反。
https://stackoverflow.com/questions/40216983
复制相似问题