我是新的與Microchip PIC uC。我有一些AVR的經驗,但幾個星期前我決定學習PIC。Microchip PIC閃存或操作罕見行爲
那麼,問題是以下。我想用2個閃光燈做我的第一個程序,它非常簡單。 RA1和RA2閃爍。
當我輸入代碼1和代碼2時,程序完美運行。 代碼1:工作正常。
//Code 1. OK.
main(){
while(1){
__delay_ms(1000); //wait 1 second
PORTA |= 0b00000110; //RA1 & RA2 on
__delay_ms(1000); //wait 1 second
PORTA &= 0b00000000; //RA1 & RA2 off
}
}
代碼2:工作正常。
//Code 2. OK
main(){
while(1){
__delay_ms(1000); //wait 1 second
PORTA |= (1 << 1) | (1 << 2); //RA1 & RA2 on
__delay_ms(1000); //wait 1 second
PORTA &= ~(1 << 1) & ~(1 << 2); //RA1 & RA2 off
}
}
代碼3:此代碼不起作用。只有1個LED閃光燈。我用AVR和代碼完美的工作。問題是什麼? OR操作不應該影響RA1操作。
//Code 3. Don't work. Only RA2 flash.
main(){
while(1){
__delay_ms(1000); //wait 1 second
PORTA |= (1 << 1); //RA1 on
PORTA |= (1 << 2); //RA2 on
__delay_ms(1000); //wait 1 second
PORTA &= ~(1 << 1); //RA1 off
PORTA &= ~(1 << 2); //RA2 off
}
}
非常感謝您的幫助。
致以問候
許多PIC還具有輸出鎖存寄存器,它們更適合控制輸出,因爲它們只包含您寫入它們的值。 AKA。 LATA vs PORTA –
感謝您的回答,兩個解決方案都爲我工作。在AVR上,PORTX寄存器不存在這種類型的問題。 –
@JuanLuis在PIC之外的任何微控制器上,這都不是問題。爲什麼人們會在新設計中使用PIC,我不知道。 – Lundin