- 締切済み
RB0が電圧落ちる
以前RB6と投稿していましたがRB0でした ダイナミック点灯で4x4のLEDを制御するのですが PORTBの0~3はアノード 4~7はカソードに接続 なぜか PORTBの0につながるLEDだけ暗くなるんです MPLABIDEでXC8コンパイラを使用しております #include <stdio.h> #include <stdlib.h> #include <xc.h> // PIC16F886 Configuration Bit Settings // CONFIG1 #pragma config FOSC = XT #pragma config WDTE = OFF #pragma config PWRTE = ON #pragma config MCLRE = ON #pragma config CP = OFF #pragma config CPD = OFF #pragma config BOREN = OFF #pragma config IESO = OFF #pragma config FCMEN = OFF #pragma config LVP = OFF // CONFIG2 #pragma config BOR4V = BOR40V #pragma config WRT = OFF void delay(int a); int main(int argc, char** argv) { int i; ANSEL=0x00; ANSELH=0x00; ADCON0=0x83; ADCON1=0x00; TRISA=0x3F; TRISB=0x00; TRISC=0xFF; PORTA=0x00; PORTB=0x00; PORTC=0x00; while(1){ delay(1000); PORTB=0b00000001; delay(1000); PORTB=0b00000010; delay(1000); PORTB=0b00000100; delay(1000); PORTB=0b00001000; delay(1000); PORTB=0b00000000; delay(1000); } return (EXIT_SUCCESS); } void delay(int a){ //crystal frequency =20MHz //if x=1;(a)msec_Delay //if x=1000;(a)sec_Delay #define x 1 #define p 246/5*2 int t;int u;int v;v=a*x; for(t=1;t<=v;t++){ for(u=1;u<=p;u++){ ; } } }; あと 投稿時にtabキーを使用するには どうしたらいいでしょう
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Classified
- ベストアンサー率39% (28/71)
> ダイナミック点灯で4x4のLEDを制御するのですが > PORTBの0~3はアノード > 4~7はカソードに接続 当然、電流制限用の抵抗をかましてLEDに接続しているだと思いますが、その抵抗値がひとつだけ違ったとか、半田付けがてんぷらで/ブレッドボードでの接触が緩んでた、といったハード的な要因のほうはどうですか?
No.2です。 先ほどの回答では検証に不十分でした。 比較するために、プログラムを100分の1くらいのスピードでループさせてみたら、どうなりますか? (例 delay(1000); をそれぞれ更に100回ループさせるなど)
お礼
やはりRB0のみ2v程度に 落ちてしまいます DATAラッチっていうものが 関係あるんですかね ありがとうございます
プログラムをループさせないで、RB0につながるLEDだけを連続点灯させてみたらどうなりますか?
補足
ちなみに使用マイコンは PIC16F886 です http://ww1.microchip.com/downloads/en/DeviceDoc/41291D.pdf
- Nebusoku3
- ベストアンサー率38% (1464/3823)
内容を熟知しているわけでは有りませんが、 PORTB=0b00000000; の次にある delay(1000); が関係していませんか。 筋はずれの内容であればすみません。
お礼
ハード側は大丈夫だと思います PORTCに割り付けてみたら明るくなりました PICのDATAラッチが無いとか INTとか関係するのか と思ったのですが あんまり分からないです ありがとうございます