マイクロチップPIC uCで新しくなった。私はAVRの経験がありますが、数週間前にPICについて学ぶことにしました。マイクロチップPICのledフラッシュまたは動作がまれな動作
まあ、問題は次のとおりです。私は2つの点滅するledsで私の最初のプログラムをしようとしています、それは非常に簡単です。 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:このコードは機能しません。唯一の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対PORTA –
答えをありがとう、両方の解決策は私のために働いている。 AVRではPORTXレジスタにこの種の問題はありません。 –
@JuanLuis PIC以外のマイクロコントローラでは、これは問題ではありません。なぜ新しいデザインでPICを使うのか、私には分かりません。 – Lundin