paspas の回答履歴

全133件中1~20件表示
  • 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
  • ポテンショメータ

    PICにポテンショメータの角度データを入れる方法教えてください。

  • 電子工作 PIC PIC16F84A アセンブラ

    PIC16F84Aを使用して1番ピン及び2番ピン及び3番ピンが一瞬でも0Vになり、 5秒経過、6番ピンから3秒間出力、始めに戻る。 こんなようなプログラムを作りたいと思っていますが、 なにぶんPIC初心者なものでどうプログラムしたらよいか全くわかりません。 ピン入力に順序は関係なく全て0Vならカウント開始です。 5秒のカウント精度は低くても問題ありません。 5秒カウント中に1、2、3番ピンのいずれかが一瞬でも5Vになったらカウントを中止し、 始めに戻ります。 5秒カウントの6番ピンのステータスは0Vです。 6番ピン出力中は、1~3番ピンの監視は不要です。 6番ピンからの3秒出力の後は出力をやめ始めに戻ります。 開発言語はアセンブラです。

  • PICで豆の1秒あたりのカウントプログラムについて

     PICの初心者です。回路図を見て、基板を作れる程度、プログラムは書いてあるのを打ち込める程度で、意味はまったくわかりません。  PIC16F84のPICでカウントする公開の回路を見つけて、光りセンサ-回路でON.OFFさせるかいろも作りました。プログラムは作成者のものです。 見て書き込んで、なんとかカウントしました。合計数は、わかりました。 質問は、 1,このプログラムを直して、1秒間あたり、何粒落ちるかカウントしたいと考えました。  どのように、すれば良いのか教えてください。 2,合計のカウンタ-と秒速何粒落ちているかプログラムを1つのPICに入れて、動作の最初時に選 択できるようにしたいのですが、どのようにしたらよいでしょうか。  PICの回路図とプログラム(テキスト形式)を下に添付しています。   お願いします。私の連休中の宿題で困っています。 7セグメントLED表示4桁カウンタ ;(クロック 4MHz) ; [ ご注意 ] ;PIC プログラムには秋月電子製のライター・キットを使用しているため、アセン ;ブルにはキットに付属のアセンブラを使用しています。 ;プログラム本体は PIC の基本命令だけでの構成に書き替えていますが、ヘッ ;ダー部分などが異なる場合がありますので、他のアセンブラを使用する場合は ;適宜変更してご利用下さい。 include16f84.h .16f84 .oschs .pwrton .wdtoff .protect off countswequrb.0;カウント入力ポート org0ch d1ds1;カウント用 d2ds1 d3ds1 d4ds1 swlcds1;swait でのループ回数 sdds1;表示データ (0~9) lcds1;汎用、ループ用 org0 gotostart org4 gotostart start;初期設定 bsf3h,5;ページ 1 movlw10000b movwf85h;ポート ra の初期化 movlw00000001b movwf86h;ポート rb の初期化 bcf3h,5;ページ 0 clrfd1;カウントデータの初期化 clrfd2 clrfd3 clrfd4 ct10:btfsccountsw;入力が 0 なら次をスキップ gotoct12 callswait btfsccountsw;入力が 0 なら次をスキップ gotoct12;確かでないなら戻る incfd1,1;加算 movlw10 subwfd1,0 btfss3h,2 gotoct11 clrfd1 incfd2,1 movlw10 subwfd2,0 btfss3h,2 gotoct11 clrfd2 incfd3,1 movlw10 subwfd3,0 btfss3h,2 gotoct11 clrfd3 incfd4,1 movlw10 subwfd4,0 btfss3h,2 gotoct11 clrfd4 ct11:callswait btfsscountsw;入力が 1 なら次をスキップ gotoct11;入力が 1 になるのを待つ callswait btfsscountsw;確かに入力が 1 に戻ったかを確認 gotoct11 ct12:movlw11111110b movwfrb movlw01101b movwfra;桁4へ表示 movfd4,0 movwfsd calll7ptset callwait movlw11111110b movwfrb movlw01110b movwfra;桁 3 へ表示 movfd3,0 movwfsd calll7ptset callwait movlw11111110b movwfrb movlw00111b movwfra;桁 2 へ表示 movfd2,0 movwfsd calll7ptset callwait movlw11111110b movwfrb movlw01011b movwfra;桁 1 へ表示 movfd1,0 movwfsd calll7ptset callwait gotoct10 ;********************************************************************* l7ptset:;sd に指定された 0~9 の数字をセットする bcf3h,0;キャリフラグのクリア rlfsd,1;4倍 rlfsd,1 movfsd,0;sd の値を w にコピー addwfpc,1;プログラム・カウンタに加算 movlw00000010b;0 movwfrb gotopt10 nop movlw11100110b;1 movwfrb gotopt10 nop movlw10010000b;2 movwfrb gotopt10 nop movlw11000000b;3 movwfrb gotopt10 nop movlw01100100b;4 movwfrb gotopt10 nop movlw01001000b;5 movwfrb gotopt10 nop movlw00001100b;6 movwfrb gotopt10 nop movlw11100010b;7 movwfrb gotopt10 nop movlw00000000b;8 movwfrb gotopt10 nop movlw01100000b;9 movwfrb pt10: return ;********************************************************************* swait:;カウント入力時のウェイト・ルーチン movlw6;6回のループ movwfswlc swt10movlw11111110b movwfrb movlw01101b movwfra movfd4,0 movwfsd calll7ptset callwait movlw11111110b movwfrb movlw01110b movwfra movfd3,0 movwfsd calll7ptset callwait movlw11111110b movwfrb movlw00111b movwfra movfd2,0 movwfsd calll7ptset callwait movlw11111110b movwfrb movlw01011b movwfra movfd1,0 movwfsd calll7ptset callwait decfszswlc,1 gotoswt10 return ;********************************************************************* wait:;ウェイトルーチン(1桁の表示時間) movlw100 movwflc wt10decfszlc,1 gotowt10 return

  • PIC EEPROM

    CCSでEEPROMへの書き込み読み出しかたがわかりませんどなたか詳しく例題などを付けて教えて下さい。お願いします。またPICの種類によって文法が変わるのでしょうか?16F627Aでやりたいのですが。

  • PICの条件分岐について

    お世話になります。PICについて質問があります。ボタンを押せば、PORTBのLEDに対する出力が変わるという物ですが、意図したようになりません。PORTに対する設定は間違っていないと思うのですが、チャタリングを考慮したプログラムになっており、上手く条件分岐してくれません。条件というのは、PORTAに入力があれば、25ms待機して再度PORTAを見に行きます。そのときにもPORTAに入力があれば、変数に格納した数値を一つずつ減らしていき、そのときに0であればPORTBを設定したとおりに出力するというものです。以下がソースですが、ここがおかしいということだけでも教えてくださると助かります。よろしくお願いします。 list p=16f628a #include<p16f628a.inc> __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _LVP_OFF SWI equ 0x21 SWI2 equ 0x22 CNT1 EQU 0x20 CNT2 EQU 0x21 ORG 0x000 goto main ORG 0x004 main bcf STATUS,RP0 bcf STATUS,RP1 clrf INTCON clrf PORTA movlw 0x07 movwf CMCON bsf STATUS,RP0 bsf PCON,OSCF clrf TRISB movlw 0x03 movwf TRISA bcf STATUS,RP0 clrf PORTA clrf PORTB clrf SWI main_loop btfss PORTA,1 goto flase_wait_routine goto trues_wait_routine flase_wait_routine goto main_loop trues_wait_routine call DLY_25 btfss PORTA,1 goto main_loop incf SWI,f movf SWI,W movwf SWI2 decfsz SWI2,f goto a_loop_1 bsf PORTB,0 bcf PORTB,1 bcf PORTB,2 bcf PORTB,3 goto main_loop a_loop_1 decfsz SWI2,f goto a_loop_2 bcf PORTB,0 bsf PORTB,1 bcf PORTB,2 bcf PORTB,3 goto main_loop a_loop_2 decfsz SWI2,f goto a_loop_3 bcf PORTB,0 bcf PORTB,1 bsf PORTB,2 bcf PORTB,3 goto main_loop a_loop_3 decfsz SWI2,f goto a_loop_4 bcf PORTB,0 bcf PORTB,1 bcf PORTB,2 bsf PORTB,3 clrf SWI goto main_loop a_loop_4 goto main_loop ;Delay Routine DLY_25 ; 25ms movlw d'25' movwf CNT1 DLP1;1ms movlw d'20' movwf CNT2 DLP2 nop nop decfsz CNT2,f goto DLP2 decfsz CNT1,f goto DLP1 return END

  • PIC AD変換

    pic AD変換の仕方。 PIC12F675を使ってLEDの点滅プログラムを作りたいのですが、 そのとき可変抵抗器をつないでAD変換すれば点滅速度を変えられる 用になると思うのですが、AD変換のプログラムがわかりません。 どなたか教えてください。 初心者なのでできるだけ解説付きで、できれば HI-TECH C言語でお願いいたします。

  • pic

    pic16F877をC言語で利用しています.unsigned longでも格納できないサイズの正の整数を扱う場合どうすればいいでしょうか.

  • PIC18f452 のtxとrxピンの使い方

    PIC18f452 には TX と RX の pin が一つずつしかないのですが、それらを別々の目的に使うことは可能でしょうか? たとえば、TX の pin を XBee の送信に使い、RX の pin を Rs232からの受信 に使うことは可能でしょうか? よろしくお願いします。

  • picからsg12864を制御しています。

    picからsg12864を制御しています。 直線の描画を行った際、まっすぐな縦線が点線のようになってしまいます。 横線・斜線は問題なく描画できます。また、ビットマップをそのまま表示した場合も問題なく描画できます。 後閑さんのプログラムを使用しています。下記のlcd_Lineを使用しています。 for文を使用して、1秒間隔でlcd_Pixelで点を打って直線を描画て動作を確認したところ、一度は黒いドットが表示されますが、消えてしまう箇所がありました。消えてしまう箇所はいつも同じです。 どなたか、解決方法がわかる方はいらっしゃいませんでしょうか? #define abs(a) (((a)>0) ? (a) : -(a)) void lcd_Line(int x0, int y0, int x1, int y1) { int steep, t; int deltax, deltay, error; int x, y; int ystep; /// 差分の大きいほうを求める steep = (abs(y1 - y0) > abs(x1 - x0)); /// x、yの入れ替え if(steep){ t = x0; x0 = y0; y0 = t; t = x1; x1 = y1; y1 = t; } if(x0 > x1) { t = x0; x0 = x1; x1 = t; t = y0; y0 = y1; y1 = t; } deltax = x1 - x0; // 傾き計算 deltay = abs(y1 - y0); error = 0; y = y0; /// 傾きでステップの正負を切り替え if(y0 < y1) ystep = 1; else ystep = -1; /// 直線を点で描画 for(x=x0; x<x1; x++) { if(steep) lcd_Pixel(y,x,1); else lcd_Pixel(x,y,1); error += deltay; if((error << 1) >= deltax) { y += ystep; error -= deltax; } } } void lcd_Pixel(int Xpos, int Ypos, char On){ char cs, data, page, pos, count, i; /* if colum >127 then do nothing */ if(Xpos<128){ if(Xpos>63){ // 64=<colum<=127? Xpos = Xpos-64; // shift 64 dot cs = 1; } else cs = 2; page = (char)(7-Ypos/8); // set page lcd_Write(cs, 0xB8+page, 1); lcd_Write(cs, 0x40+Xpos, 1); // set colum data = lcd_Read(cs,0); // get current data lcd_Write(cs, 0x40+Xpos, 1); // set colum ???? data = lcd_Read(cs,0); // get current data ???? pos =1; // set bit position count = (char)(7-Ypos%8); // set bit for(i=0; i<count; i++) // caluculate 2^n pos *= 2; lcd_Write(cs, 0x40+Xpos, 1); // back address if(On==1) // set or reset bit lcd_Write(cs, data | pos, 0); // set 1 else lcd_Write(cs, data & ~pos, 0); // set 0 } }

  • PIC 16F887 を使い7SEG を動作させたいのですが上手く行き

    PIC 16F887 を使い7SEG を動作させたいのですが上手く行きません。 不具合の可能性が、回路が悪いのか、プログラムなのか、わかりません。 添付の画像は不鮮明だと思いますがご了承ください。 動作は、入力によって7SEGの表示をかえます。 マイコンは、PIC16F887(40ピン)で外部オシレータ、リセット等は付けてません。 11ピン 32ピンを5V 12ピン、31ピンをGNDに接続しました。 入力は1ピン~6ピンを10Kプルアップで使用し、6ピン(RA4)は使いませんが、10Kでプルアップしました。 1ピンはフォトカプラ入力ですが、2ピン~5ピンは直接駆動です。 出力は、7SEG(アノードコモン)を4つを動作させるため、40ピン、39ピン、30ピン、29ピンをトランジスタ2SA1015(PNP型)でスイッチングします。 7SEGの表示はPICダイレクトとしました。 マイコンを付けずにジャンパワイヤーで7SEGの動作確認をしまし点灯を確認しました。 以上をでプログラムを書き、電源を入れましたが全く動きませんでした。 マイコンピン配線のマズさなのか、プログラムの可能性なのかご教授、アドバイス宜しくお願い致します。

  • 現在AKI-H8(H8/3048)を付属のBasicソフトで動かしてい

    現在AKI-H8(H8/3048)を付属のBasicソフトで動かしています。 電源を切ると、内部のメモリが消えてしまうので 外部メモリにデータを読み書きしようと思っているのですが、 何処かのピンから入出力を行う方法はないのでしょうか。 モードは7を使用しており、言語は付属のBasicです。 もし、ピンからの入出力が出来ないようならシリアル経由で 読み書きする方法でも構いませんので、ご教授ください。

  • 現在AKI-H8(H8/3048)を付属のBasicソフトで動かしてい

    現在AKI-H8(H8/3048)を付属のBasicソフトで動かしています。 電源を切ると、内部のメモリが消えてしまうので 外部メモリにデータを読み書きしようと思っているのですが、 何処かのピンから入出力を行う方法はないのでしょうか。 モードは7を使用しており、言語は付属のBasicです。 もし、ピンからの入出力が出来ないようならシリアル経由で 読み書きする方法でも構いませんので、ご教授ください。

  • 16F873AにてLEDの点灯

    16F873AにてLEDの点灯 16F873AにてLEDの点灯をさせる回路とプログラムを作っています。 PORTBとPORTCからトランジスタアレイ経由のLEDを接続。 セラロックは10MHz。5V電源を使っています。 普通に点灯は出来ているのですが、RA0からRA3にに入力があったら 点灯パターンを変化させたいです。 MAINにてRA0をチェックして、入力があったらLOOPに移動するつもりですが、 起動後いきなりLOOPに移動してしまいます。 初心者で勉強しているつもりですが、ネットの寄せ集めのコピペで 16F84Aで同じ事は出来ました。16F873Aでは上記のような状態です。 どうか解決方法を教えて下さい。 宜しくお願い致します。 ------------------------------- LIST P=PIC16F873A INCLUDE P16F873A.INC __CONFIG _HS_OSC & _PWRTE_ON & _WDT_OFF & _LVP_OFF GPR_1 EQU 020h GPR_2 EQU 021h GPR_3 EQU 022h ORG 0 INIT BSF STATUS,RP0 MOVLW 007h MOVWF ADCON1 MOVLW 00Fh MOVWF TRISA CLRF TRISB CLRF TRISC BCF STATUS,RP0 MAIN1 BTFSC PORTA,0 GOTO MAIN1 GOTO LOOP LOOP MOVLW 01h MOVWF PORTB CALL T100mS MOVLW 02h MOVWF PORTB CALL T100mS MOVLW 04h MOVWF PORTB CALL T100mS CLRF PORTB CALL T100mS BTFSC PORTA,0 GOTO MAIN1 GOTO LOOP ; << 100mS待つサブルーチン >> T100mS MOVLW 002h MOVWF GPR_3 T100LP CALL T50mS DECFSZ GPR_3,F GOTO T100LP RETURN ; << 50mS待つサブルーチン >> T50mS MOVLW 07Dh MOVWF GPR_2 T50LP CALL T04mS DECFSZ GPR_2,F GOTO T50LP RETURN ; << 0.4mS待つサブルーチン >> T04mS MOVLW 0F9h MOVWF GPR_1 T04LP NOP DECFSZ GPR_1,F GOTO T04LP RETURN END

  • 16F873AにてLEDの点灯

    16F873AにてLEDの点灯 16F873AにてLEDの点灯をさせる回路とプログラムを作っています。 PORTBとPORTCからトランジスタアレイ経由のLEDを接続。 セラロックは10MHz。5V電源を使っています。 普通に点灯は出来ているのですが、RA0からRA3にに入力があったら 点灯パターンを変化させたいです。 MAINにてRA0をチェックして、入力があったらLOOPに移動するつもりですが、 起動後いきなりLOOPに移動してしまいます。 初心者で勉強しているつもりですが、ネットの寄せ集めのコピペで 16F84Aで同じ事は出来ました。16F873Aでは上記のような状態です。 どうか解決方法を教えて下さい。 宜しくお願い致します。 ------------------------------- LIST P=PIC16F873A INCLUDE P16F873A.INC __CONFIG _HS_OSC & _PWRTE_ON & _WDT_OFF & _LVP_OFF GPR_1 EQU 020h GPR_2 EQU 021h GPR_3 EQU 022h ORG 0 INIT BSF STATUS,RP0 MOVLW 007h MOVWF ADCON1 MOVLW 00Fh MOVWF TRISA CLRF TRISB CLRF TRISC BCF STATUS,RP0 MAIN1 BTFSC PORTA,0 GOTO MAIN1 GOTO LOOP LOOP MOVLW 01h MOVWF PORTB CALL T100mS MOVLW 02h MOVWF PORTB CALL T100mS MOVLW 04h MOVWF PORTB CALL T100mS CLRF PORTB CALL T100mS BTFSC PORTA,0 GOTO MAIN1 GOTO LOOP ; << 100mS待つサブルーチン >> T100mS MOVLW 002h MOVWF GPR_3 T100LP CALL T50mS DECFSZ GPR_3,F GOTO T100LP RETURN ; << 50mS待つサブルーチン >> T50mS MOVLW 07Dh MOVWF GPR_2 T50LP CALL T04mS DECFSZ GPR_2,F GOTO T50LP RETURN ; << 0.4mS待つサブルーチン >> T04mS MOVLW 0F9h MOVWF GPR_1 T04LP NOP DECFSZ GPR_1,F GOTO T04LP RETURN END

  • 16F873AにてLEDの点灯

    16F873AにてLEDの点灯 16F873AにてLEDの点灯をさせる回路とプログラムを作っています。 PORTBとPORTCからトランジスタアレイ経由のLEDを接続。 セラロックは10MHz。5V電源を使っています。 普通に点灯は出来ているのですが、RA0からRA3にに入力があったら 点灯パターンを変化させたいです。 MAINにてRA0をチェックして、入力があったらLOOPに移動するつもりですが、 起動後いきなりLOOPに移動してしまいます。 初心者で勉強しているつもりですが、ネットの寄せ集めのコピペで 16F84Aで同じ事は出来ました。16F873Aでは上記のような状態です。 どうか解決方法を教えて下さい。 宜しくお願い致します。 ------------------------------- LIST P=PIC16F873A INCLUDE P16F873A.INC __CONFIG _HS_OSC & _PWRTE_ON & _WDT_OFF & _LVP_OFF GPR_1 EQU 020h GPR_2 EQU 021h GPR_3 EQU 022h ORG 0 INIT BSF STATUS,RP0 MOVLW 007h MOVWF ADCON1 MOVLW 00Fh MOVWF TRISA CLRF TRISB CLRF TRISC BCF STATUS,RP0 MAIN1 BTFSC PORTA,0 GOTO MAIN1 GOTO LOOP LOOP MOVLW 01h MOVWF PORTB CALL T100mS MOVLW 02h MOVWF PORTB CALL T100mS MOVLW 04h MOVWF PORTB CALL T100mS CLRF PORTB CALL T100mS BTFSC PORTA,0 GOTO MAIN1 GOTO LOOP ; << 100mS待つサブルーチン >> T100mS MOVLW 002h MOVWF GPR_3 T100LP CALL T50mS DECFSZ GPR_3,F GOTO T100LP RETURN ; << 50mS待つサブルーチン >> T50mS MOVLW 07Dh MOVWF GPR_2 T50LP CALL T04mS DECFSZ GPR_2,F GOTO T50LP RETURN ; << 0.4mS待つサブルーチン >> T04mS MOVLW 0F9h MOVWF GPR_1 T04LP NOP DECFSZ GPR_1,F GOTO T04LP RETURN END