paspasのプロフィール

@paspas paspas
ありがとう数70
質問数0
回答数133
ベストアンサー数
47
ベストアンサー率
52%
お礼率
0%

  • 登録日2003/02/11
  • PIC16F877AでRA0をデジタルI/Oに

    PICプログラミング初心者です。 テスト回路を作っていたのですが、下記の回路でRB0のスイッチ入力部をRA0に変更したいのですが いろいろ試してどうしてもRA0ではうまく出来ませんでした。 わかるかた教えて下さい、宜しくお願いします。 //HI-TECH //PIC16F877 LED Momentary SW ON_OFF #include <pic.h> #include <htc.h> #define _XTAL_FREQ 20000000 //セラミック発振子:20MHz ディレイ関数用 __CONFIG( PWRTEN // パワーアップタイマ有 enable power up timer & BORDIS // ブラウンアウトリセット有enable brown out reset & UNPROTECT // コードプロテクト無 use UNPROTECT & WDTDIS // ウォッチドックタイマ無 & LVPDIS // 低電圧プログラミング無 low voltage programming disabled & HS // 外部ハイスピード発振子 EXTRC Oscillator, RC on RA7/OSC1/CLKIN ); short int Led = 0; //LED Mode : LED On_Mode = 1, LED Off_Mode = 0 /*///////////////////////// 1mse ディレー関数 /////////////////////////*/ void delay_ms(unsigned long int msec) { while(msec) { msec--; __delay_ms(1); //1msec delay } } void interrupt ISR(void) { INTE = 0; // ext INT Disable PEIE = 0; //Peripheral INT Disable GIE = 0; // Gloval INT Disable delay_ms(50); if(RB0 == 0)//←ここをRA0に変更したい { if(Led == 0) //if LED Not Lighed { Led = 1; //LED Mode : LED ON Mode RD0 = 0; // LED Turn ON } else //if LED Lighted { Led = 0; //LED Mode : LED OFF Mode RD0 = 1; //RD0 port LED Turn off } } INTF = 0; // LED Flag Clear INTE = 1; // ext INT Enable PEIE = 0; // Peripheral INT Disable GIE = 1; //Gloval INT Enable } int main() { ADCON0 = 0x00; ADCON1 = 0x00; //アナログセレクタ アナログ不使用 TRISA=0b11111111;//入出力設定 A,Bポートすべて入力に TRISB=0b11111111; TRISC=0b10111111;//RC6 = TxDなので出力に。RC7はRxDなので入力にする必要あり。 TRISD=0b00000000; INTEDG = 0; // Down Edge Trigger Led = 0; //LED Mode : OFF Mode RD0 = 1; //RD0 port LED Turn off INTF = 0; //INT Flag Clear INTE = 1; //ext-INT Enable PEIE = 0; // Peripheral INT Disable GIE = 1; // Gloval INT Enable while(1) { } return 0; }

  • 接点に電圧があれば、それを検出し無電圧接点出力

    モータが回転するとその回転数に応じて、接点に10mV~600mVの電圧が掛ります。 その接点を入力にして、監視し、モータが停止した時に、それを検知するための無電圧接点出力を行いたいのですが、PLCなどを用いずに、安価に実現できるをご教授して頂けないでしょうか。 以上、宜しくお願いします。

  • CCS C-COMPILER を始めましたが

    CCS C-COMPILER をかじり始めたのですが かなり苦労しています どなたか教えてください。 演算子の動きをデバック機能によって勉強しています。 確認を watch によって x と y を step モードでどう変化するかを見るのですが何度やっても途中から x=y ではなくなります 実際の結果を書きますと(x,y)が(1,1)(2,2)(3,3)(4,4)。。。。。(63,63)(0,64)(2,65)。。。。(62,126)(63,127)(0,128)(2,129)。。。のように変化します 複雑な式ではないのにどうしてこんな結果になるかわからず困っています おそらく基本的なところで間違っていると思っています ソースファイルとリストは下記の通りです よろしくお願いします <<ソースファイル>> #include <16f84a.h> #fuses HS, NOWDT, PUT, NOPROTECT int x=0x01; int y=1; int b=1; main() { while(1) { x+=b; y+=b; } } <<リスト>> CCS PCM C Compiler, Version 4.110, 53639 06-2-12 16:52 Filename: C:\Program Files\MPLAB IDE\projects\gokan_ccs_c\ccs_c_16f84_20120206_1.lst ROM used: 17 words (2%) Largest free fragment is 1007 RAM used: 7 (10%) at main() level 7 (10%) worst case Stack: 0 locations * 0000: MOVLW 00 0001: MOVWF 0A 0002: GOTO 004 0003: NOP .................... #include <16f84a.h> .................... //////// Standard Header file for the PIC16F84A device //////////////// .................... #device PIC16F84A .................... #list .................... .................... #fuses HS, NOWDT, PUT, NOPROTECT .................... .................... int x=0x01; .................... int y=1; .................... int b=1; .................... main() .................... { 0004: CLRF 04 0005: MOVLW 1F 0006: ANDWF 03,F 0007: MOVLW 01 0008: MOVWF 10 0009: MOVWF 11 000A: MOVWF 12 .................... while(1) .................... { .................... x+=b; 000B: MOVF 12,W 000C: ADDWF 10,F .................... y+=b; 000D: MOVF 12,W 000E: ADDWF 11,F .................... } 000F: GOTO 00B .................... } .................... 0010: SLEEP Configuration Fuses: Word 1: 3FF2 HS NOWDT PUT NOPROTECT

  • CCS C-COMPILER を始めましたが

    CCS C-COMPILER をかじり始めたのですが かなり苦労しています どなたか教えてください。 演算子の動きをデバック機能によって勉強しています。 確認を watch によって x と y を step モードでどう変化するかを見るのですが何度やっても途中から x=y ではなくなります 実際の結果を書きますと(x,y)が(1,1)(2,2)(3,3)(4,4)。。。。。(63,63)(0,64)(2,65)。。。。(62,126)(63,127)(0,128)(2,129)。。。のように変化します 複雑な式ではないのにどうしてこんな結果になるかわからず困っています おそらく基本的なところで間違っていると思っています ソースファイルとリストは下記の通りです よろしくお願いします <<ソースファイル>> #include <16f84a.h> #fuses HS, NOWDT, PUT, NOPROTECT int x=0x01; int y=1; int b=1; main() { while(1) { x+=b; y+=b; } } <<リスト>> CCS PCM C Compiler, Version 4.110, 53639 06-2-12 16:52 Filename: C:\Program Files\MPLAB IDE\projects\gokan_ccs_c\ccs_c_16f84_20120206_1.lst ROM used: 17 words (2%) Largest free fragment is 1007 RAM used: 7 (10%) at main() level 7 (10%) worst case Stack: 0 locations * 0000: MOVLW 00 0001: MOVWF 0A 0002: GOTO 004 0003: NOP .................... #include <16f84a.h> .................... //////// Standard Header file for the PIC16F84A device //////////////// .................... #device PIC16F84A .................... #list .................... .................... #fuses HS, NOWDT, PUT, NOPROTECT .................... .................... int x=0x01; .................... int y=1; .................... int b=1; .................... main() .................... { 0004: CLRF 04 0005: MOVLW 1F 0006: ANDWF 03,F 0007: MOVLW 01 0008: MOVWF 10 0009: MOVWF 11 000A: MOVWF 12 .................... while(1) .................... { .................... x+=b; 000B: MOVF 12,W 000C: ADDWF 10,F .................... y+=b; 000D: MOVF 12,W 000E: ADDWF 11,F .................... } 000F: GOTO 00B .................... } .................... 0010: SLEEP Configuration Fuses: Word 1: 3FF2 HS NOWDT PUT NOPROTECT

  • AVR Tudio上記のプログラムをC言語で作成

    /* プログラム名;静止型自動検索装置         */ /* 使用マイコン AT90S2323-10pc      */ #include <io.h> int main() if (reset ==0)    /* reset=0 7 行目 */ {     /************  初期値         9 ***********************/ int kado  =1111 ;  int kens =0 ; int ketate  =0 ;    int palu   =0  ;  int ketaha =0  ; int ketaka  =0   ;  int time  =0   ;    int reset  =0  ; int dami  =0  ; /**********            I/Oレジスターの指定 19  *******/ equ sing   =r16  ;    /* $16 Bポー入力ピンパルス信号 20 */ def ddrb   =r17  ;      /* $17 Bポートデータ方向レジスター 21*/ def portb   =r18  ;     /* $18 Bポータレジスタ       22*/ /**********      ホートDとBを初期        23*********/ ser bpoto = $FE ;     /*  Bポート111111110設定  24  */ out ddrb  = bpoto ;                   clr bpoto = $00 ;    /*  出力LED       26  */ out portb = bpoto } ;    /* 初期設定       27 */ /**********     メイン処理ルーチン        28   *********/ eles if ( reset ==1)      /* reset=1 29     */ { dami ++ ; }     /*  r30+1    30      */ sdis pind sing ;     /* sing=1     31     */ { kens =kens + ketake } ;   /*  r2=r2+ r4  32     */ time = = 0 ;   /*  time=0     33    */ sbic pind sing  ;       /* sing=0    34      */ palu ++  ;   /*  r6=r6+1    35    */ time = 70 }  ;   /*  0.2sec    36    */ main2; sbic pind sing  ;     /*  sing=1    36       */ { rjmp main1 sbic pind sing  ;     /*  sing=0     39      */ { time -- }  ;    /*  t1=t1-1    40       */ if ( time != 0 )     /*  time ! =0   41       */ rjmp main2 if ( time ==0 ) { dami ++ ; }   /*   r30+1    43    */ if ( palu ! = 10 )      /*   r6 !=10  44       */ { rjmp main3 } if ( palu ==10 )       /*   r6=10     45    */ ketaha = ketate * 10 ;    /*   r8=r4x10    46   */ kens =kens - ketaha } ;    /*   r2=r2-r8   47      */ main3; palu = 0  ;   /*   r6=0   49 */ ketate = ketate * 10 ;   /*  r4=r4x10    50    */ if (ketaka == 5 )       /*  r10=!5     51     */ { rjmp main1 } ; if (ketaka == 5 )   { dami + + ; }     /*    r30+1   54   */ if ( kabo !=kens )        /*    r0 !=r2  55     */ { reset = 0 ;     /*   r28=0    56    */ rjmp main1 } ; if ( kabo =kens }       /*   r0=r2   58 */ { reset =3  ; }  /*   r28=3   59     */ main4; time = 800 ; }      /*   0.8sec設定 61   */ main5 time --  ;      /*  t1-1      62 */ if ( time > 400 )       /*    t1>400   63    */ { ori bpoto ,$10 ; out portb .bpoto }    ;  /*   LED表示   65  */ if ( time <=400 )      /*  t1<=400   66  */ { ori bpoto $00 ; out portb bpoto  ;    /*  LED消灯表示 68   */ if (time ! = 0 )   /*   time !=0      */ rjmp main5 } ; if ( time =0 )   { rjmp main4 )  ;  /****** END of File 72 ***** */       /*AVR Tudio上記のプログラムをC言語で作成しコンパイルを行つたところ */ /*エラー数が436個もあります、一番数の多いのは下記2個がおおいです。 */ /*../test5.c:71: error: stray '\201' in program */ /*./test5.c:71: error: stray '@' in program */ /*どこに不具合があるのかわかりません御教授下さい。

    • ベストアンサー
    • micr1
    • 科学
    • 回答数2