• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PICの条件分岐について)

PICの条件分岐について

このQ&Aのポイント
  • PICについて質問があります。ボタンを押せば、PORTBのLEDに対する出力が変わるという物ですが、意図したようになりません。
  • 条件というのは、PORTAに入力があれば、25ms待機して再度PORTAを見に行きます。そのときにもPORTAに入力があれば、変数に格納した数値を一つずつ減らしていき、そのときに0であればPORTBを設定したとおりに出力するというものです。
  • ソースコードに問題があるかどうか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • paspas
  • ベストアンサー率52% (47/90)
回答No.1

もう解決しているかもしれませんが、一応回答させていただきます。 SWI equ 0x21 SWI2 equ 0x22 CNT1 EQU 0x20 CNT2 EQU 0x21 で SWI と CNT2 が同じファイルレジスタになっています。 RA1が入力されてSWI がカウントアップしても、DLY25で CNT2 が0になるので、 いっこうにSWIの数字がかわらず、思ったような動作をしないのではないでしょうか?

fumihara2258
質問者

お礼

回答有難うございました。お手数おかけして申し訳ありませんでした。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • PICのアセンブラからC言語へ変換のアドバイスです

    C言語ならわたしはわかるのですが、アセンブラは理解できるレベルにありません。機会があればいつか挑戦したいです。話は変わりますが、 以下のアセンブラのソースでLEDの点滅まで出来ましたが、これをC言語で理解したいと思っています。翻訳できる方がいらっしゃればご協力のほどよろしくお願いします。また、そこまでは無理でもわかる範囲でアドバイスを戴けたらと思います。よろしくお願いします。 asmソースです。 list p=16f628a #include<p16f628a.inc> __CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _LVP_OFF w_temp EQU 0x70 status_temp EQU 0x71 CNT1 EQU 0x20 CNT2 EQU 0x21 ORG 0x000 goto main ORG 0x004 movwf w_temp movf STATUS,w movwf status_temp ;ISR Codes movf status_temp,w movwf STATUS swapf w_temp,f swapf w_temp,w retfie main bcf STATUS,RP0 bcf STATUS,RP1 clrf INTCON clrf PORTA movlw 0x07 movwf CMCON bsf STATUS,RP0 bsf PCON,OSCF clrf TRISA clrf TRISB bcf STATUS,RP0 clrf PORTA clrf PORTB main_loop bsf PORTB,3 call DLY_250 bcf PORTB,3 call DLY_250 goto main_loop ;Delay Routine DLY_250 ; 250ms movlw d'250' movwf CNT1 DLP1;1ms movlw d'200' movwf CNT2 DLP2 nop nop decfsz CNT2,f goto DLP2 decfsz CNT1,f goto DLP1 return END

  • 初歩のPICプログラム

    最近PICはじめたばかりの全くの初心者です。9番ピンのLEDが点滅を繰り返すという16F628用のプログラムがあります。 これを16F84A用に書き換えたいんですが29行目に「Symbol not previously defined (CMCON)」というエラーがでます。どうやら16F84にはCMCONがないからのようです。これをなんとか回避する方法はないんでしょうか。うまく動かない書き換えたプログラムを下におきます。 list p=16f84a w_temp      EQU 0x70 status_temp    EQU 0x71 CNT1         EQU 0x20 CNT2        EQU 0x21       ORG   0x000     goto   main      ORG   0x004     movwf  w_temp     movf  STATUS,W     movwf   status_temp ;ISR Code    movf     status_temp,w    movwf     STATUS    swapf     w_temp,f    swapf     w_temp,w        retfie main    bcf   STATUS,RP0    bcf   STATUS,RP1    clrf   INTCON    clrf   PORTA    movlw   0x07    movwf   CMCON ;ここでエラーがでる    bsf   STATUS,RP0    clrf   TRISA    clrf   TRISB    bcf    STATUS,RP0    clrf    PORTA    clrf    PORTB main_loop    bsf  PORTB,3    call  DLY_250    bcf   PORTB,3    call   DLY_250    goto  main_loop ;Dalay Routine DLY_250   ;250mS 以下省略 空白が文字化けして見にくくてすみません。

  • PIC 初心者で行き詰まりました(汗、、、)

    PIC初心者です。よろしくお願いします。 PIC16F84Aを使って 「ポートA 0bIt 」 に入力があったとき(1になったとき) ラベルの「OPEN」に飛びポートBのLEDが一秒点灯。 「ポートA 1bit 」に入力があったとき ラベルの「CLOSE」に飛びポートBのLEDが一秒点灯。 これだけのプログラムなのですが MPLAB IDE v8.63で Debug all すると ;の記述のところで表記のエラーが出ます。 プログラムはこちらです。 list P=pic16f84a include "p16f84a.inc" __CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF CNT1     EQU   0CH CNT2    EQU   0DH CNT3     EQU  0EH       ORG    0      GOTO    MAIN           MAIN      BSF    STATUS,RP0      MOVWF    TRISA      CLRF    TRISB      BCF    STATUS,RP0      CLRF    PORTB      CLRW LOOP      BTFSC    PORTA,0      GOTO   OPEN      BTFSC   PORTA,1      GOTO    CLOSE     ;ここで「Symbol not previously defined (CLOSE)」 のエラー                        GOTO    LOOP OPEN      MOVLW    010H      MOVWF    PORTB      CALL   TIMER3    ;ここでSymbol not previously defined (TIMER3)エラー                             CLRF    PORTB      END CLOSE   MOVLW    020H      MOVWF    PORTB      CALL   TIMER3      CLRF   PORTB      END TIMER1     MOVLW    D'62'       MOVWF    CNT1 LOOP1     NOP       DECFSZ    CNT1,1       LOOP1       RETURN TIMER2     MOVLW    D'100'       MOVWF    CNT2 LOOP2     NOP       CALL    TIMER1       DECFSZ    CNT2,1       goto     LOOP2       RETURN TIMER3     MOVLW    D'100'       MOVWF    CNT3 LOOP3     NOP       CALL    TIMER2       DECFSZ    CNT3,1       goto     LOOP3       RETURN      END 何日も堂々巡りをしてまして埒があかないので質問させていただきました。 どこが間違えているのでしょうか???? よろしくお願いいたします。

  • PIC 簡単なプログラミングで行き詰まりました

    PIC初心者です。よろしくお願いします。 PIC16F84Aを使って 「ポートA 0bIt 」 に入力があったとき(1になったとき) ラベルの「OPEN」に飛びポートBのLEDが一秒点灯。 「ポートA 1bit 」に入力があったとき ラベルの「CLOSE」に飛びポートBのLEDが一秒点灯。 これだけのプログラムなのですが MPLAB IDE v8.63で Debug all すると ;の記述のところで表記のエラーが出ます。 プログラムはこちらです。 list P=pic16f84a include "p16f84a.inc" __CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF CNT1     EQU   0CH CNT2    EQU   0DH CNT3     EQU  0EH       ORG    0      GOTO    MAIN           MAIN      BSF    STATUS,RP0      MOVWF    TRISA      CLRF    TRISB      BCF    STATUS,RP0      CLRF    PORTB      CLRW LOOP      BTFSC    PORTA,0      GOTO   OPEN      BTFSC   PORTA,1      GOTO    CLOSE     ;ここで「Symbol not previously defined (CLOSE)」 のエラー                        GOTO    LOOP OPEN      MOVLW    010H      MOVWF    PORTB      CALL   TIMER3    ;ここでSymbol not previously defined (TIMER3)エラー                             CLRF    PORTB      END CLOSE   MOVLW    020H      MOVWF    PORTB      CALL   TIMER3      CLRF   PORTB      END TIMER1     MOVLW    D'62'       MOVWF    CNT1 LOOP1     NOP       DECFSZ    CNT1,1       LOOP1       RETURN TIMER2     MOVLW    D'100'       MOVWF    CNT2 LOOP2     NOP       CALL    TIMER1       DECFSZ    CNT2,1       goto     LOOP2       RETURN TIMER3     MOVLW    D'100'       MOVWF    CNT3 LOOP3     NOP       CALL    TIMER2       DECFSZ    CNT3,1       goto     LOOP3       RETURN      END 何日も堂々巡りをしてまして埒があかないので質問させていただきました。 どこが間違えているのでしょうか???? よろしくお願いいたします。

  • PICのスイッチのプログラムについて

    基本的な事なのですが、よろしくお願いします。 以下のアセンブラのソースでPICを作ってみました。プログラムを変えてみたり、回路を変えてみたりしましたが、改善されませんでした。回路の構成は、LED(仮に、A・Bとします)2個、スイッチ1個、PIC、抵抗器など・・・これを交互にスイッチのオンオフで切り替える。としています。現状の問題点は、スイッチ入力で、LEDAは光るときは綺麗に光りますし、消えるときは綺麗に消えます。問題は、LEDBのほうで、光るときに高速で点滅します。理由と対策が解りません。どなたか教えてください。よろしくお願いします。 list p=16f628a #include<p16f628a.inc> __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _LVP_OFF 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 main_loop btfsc PORTA,0;この辺りがよくわかりません。 goto loop2 bsf PORTB,0 bcf PORTB,1 goto main_loop loop2 bcf PORTB,0 bsf PORTB,1 goto main_loop END

  • PIC16F84Aで入力があるとスタートするプログラム

    PIC16F84Aで、アセンブリ言語でプログラムをしています。 RA4を入力端子とし、入力があればプログラムがスタートするということをしたいんですけどうまくいきません。 私の作ったプログラムはこのようになっています。  listp=16f84A   include <p16f84A.inc>  __CONFIG _HS_OSC & _PWRTE_ON & _WDT_OFF tim1   EQU  0x20      org  0x00      NOP      GOTO start start      BSF  STATUS,RP0      MOVLW B'00010000'      MOVWF TRISA      CLRF TRISB      BCF  STATUS,RP0      MOVLW B'00010000'      MOVWF PORTA      CLRF  PORTB main      MOVLW  001h      MOVWF  tim1 timlp1  BTFSC  PORTA,5      CALL   playball      GOTO   main playball      MOVLW  B'00001111'      MOVWF  PORTA      MOVLW  B'11111111'      MOVWF  PORTB      RETURN 修正点などありましたら教えて下さい。

  • PIC16F84Aで出力が反転してしまう

    PIC16F84Aを用いて、矩形波を出そうとしています。 下記のようなプログラムを動かそうとしているのですが、 PORTA,1をONした時、出力がすべて反転してしまいます。 原因はどのような事が考えられますでしょうか? PORTA,0:矩形波の波長 PORTA,1:入力トリガが立ち上がりか立ち下がりか? PORTA,2:矩形波を立ち上がりにするか、立ち下がりにするか? PORTA,3:LED用出力 PORTA,4:手動トリガスイッチ PORTB,4~7:出力 で行っています。 ラベルL_Hの所で、出力はBCFで0になっているはずですが、 すべて1出力になります。 トリガを入れた時の出力も反転された状態になります。 ----------------------- LIST P=PIC16F84A ; LIST宣言で使用するPICを16F84Aと定義する。 INCLUDE P16F84A.INC ; 設定ファイルp16f84a.incを読み込む。 __CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF ; ;変数の設定(タイマ用カウンタ)********************* CNT1 EQU 0CH CNT2 EQU 0DH CNT3 EQU 0EH CNT4 EQU 0FH CNT5 EQU 10H CNT6 EQU 11H ;リセット************** ORG 0 ;リセット ;初期設定************* CLRF PORTB ;PORT-Bをオール0 BSF STATUS,RP0 ;バンク1へ MOVLW B'00001111' ;00001111 MOVWF TRISB ;PORT Bを0-3を入力、4-7を出力として設定 MOVLW B'10111' ;00010111 MOVWF TRISA ;PORT Aを0-3を入力、4を出力として設定 NOP BCF PORTB,4 ;PORTB,4~7をオール0 BCF PORTB,5 ;PORTB,4~7をオール0 BCF PORTB,6 ;PORTB,4~7をオール0 BCF PORTB,7 ;PORTB,4~7をオール0 BSF PORTA,3 ;PORTA,3を1 CLRF CNT1 CLRF CNT2 CLRF CNT3 CLRF CNT4 CLRF CNT5 CLRF CNT6 ;入力が1か0か?************************ Trig_Direc NOP BTFSS PORTA,1 ;入力判定が立ち上がりの時 GOTO Diec_Hight GOTO Direc_Low ;入力立ち上がり、出力判定******************* Diec_Hight BTFSS PORTB,2 ;連続波出力の時 GOTO H_Comti BTFSS PORTA,2 ;出力判定が立ち上がりの時 GOTO H_H ;入力立ち上がり、出力立ち上がり GOTO H_L ;入力立ち上がり、出力立ち下がり ;入力立ち下がり、出力判定***************************************** Direc_Low BTFSS PORTB,2 ;連続波出力の時 GOTO L_Comti BTFSS PORTA,2 ;出力判定が立ち上がりの時 GOTO L_H ;入力立ち下がり、出力立ち上がり GOTO L_L ;入力立ち下がり、出力立ち下がり ;入力立ち上下がり、出力立ち上がり トリガ入力判定と出力************ H_H BCF PORTB,4 ;Trig出力1 OFF BCF PORTB,5 ;Trig出力2 OFF BCF PORTB,6 ;Trig出力3 OFF BCF PORTB,7 ;Trig出力4 OFF BSF PORTA,4 ;LED点灯 off ~正常出力 ・ ・ ・ ;入力立ち上下がり、出力立ち上がり トリガ入力判定と出力*************** L_H BCF PORTB,4 ;Trig出力1 OFF BCF PORTB,5 ;Trig出力2 OFF BCF PORTB,6 ;Trig出力3 OFF BCF PORTB,7 ;Trig出力4 OFF BSF PORTA,3 ;LED点灯 off L_H_ON BTFSS PORTB,0 ;トリガ入力1に入力があった場合 GOTO L_H_Time BTFSS PORTB,1 ;トリガ入力2に入力があった場合 GOTO L_H_Time BTFSS PORTA,4 ;手動トリガ入力に入力があった場合 GOTO L_H_Time GOTO Trig_Direc ;トリガ入力がなかった場合、初期判定に戻る L_H_Time BCF PORTA,3 ;トリガ判定LED点灯 BTFSS PORTA,0 ;パルス幅が50ms指定の場合」 GOTO L_H_50 GOTO L_H_200 L_H_50 BSF PORTB,4 ;Trig出力1 ON BSF PORTB,5 ;Trig出力2 ON BSF PORTB,6 ;Trig出力3 ON BSF PORTB,7 ;Trig出力4 ON CALL Timer_50ms BCF PORTB,4 ;Trig出力1 OFF BCF PORTB,5 ;Trig出力2 OFF BCF PORTB,6 ;Trig出力3 OFF BCF PORTB,7 ;Trig出力4 OFF CALL Timer_50ms GOTO L_H_Loop L_H_200 BSF PORTB,4 ;Trig出力1 ON BSF PORTB,5 ;Trig出力2 ON BSF PORTB,6 ;Trig出力3 ON BSF PORTB,7 ;Trig出力4 ON CALL Timer_200ms BCF PORTB,4 ;Trig出力1 OFF BCF PORTB,5 ;Trig出力2 OFF BCF PORTB,6 ;Trig出力3 OFF BCF PORTB,7 ;Trig出力4 OFF CALL Timer_200ms GOTO L_H_Loop L_H_Loop BTFSC PORTB,0 ;トリガ入力1が出力状態だった場合 GOTO L_H_Loop BTFSC PORTB,1 ;トリガ入力2が出力状態だった場合 GOTO L_H_Loop BTFSS PORTA,4 ;手動トリガ入力に入力があった場合 GOTO L_H_Loop BSF PORTA,3 ;トリガ判定LED消灯 GOTO Trig_Direc ;初期へ戻る ・ ・ ・ 以下略

  • PIC、USART USART送信ができません

    下記のプログラムでUSART接続してPICマイコンからPCに送信しようとしています。 PICマイコンはP16F877 アプリにはTera Term というアプリケーションを使用しています。 このプログラムはUSARTの送信とステッピングモータを交互に動作させるプログラムです。 このプログラムを実行したところ、ステッピングモータが微小に動作したままとまってしまいました。 Tera Termにも文字は出力されませんでした。 そのため、1周目だけTXREGレジスタにデータを格納するところまでは出来ていると思います。 しかし、データ送信が行われないため、2週目以降はTSRレジスタがBUSY状態となりプログラムが進行しないのだと考えています。 以下のサイトを参考に模索しましたが、原因が分かりませんでした。 http://www.kimurass.co.jp/pic/0625p.htm http://www.picfun.com/pic19.html どのように対処したらよろしいでしょうか? 原因やアドバイスなど教えていただけたら幸いです。 ~~プログラム~~ list p=16F877 #include <p16F877.inc> __CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF& _LVP_OFF w_temp EQU 0x0C status_temp EQU 0x0D ;変数 cblock 020h CNT15mS ;15mSカウンタ CNT5mS ;5mSカウンタ CNT1mS ;1mSカウンタ CNT50uS ;50μSカウンタ USART_TEMP ;USARTのワークレジスタ POINT ;point of table BUFFER ;buffer endc ;*************************割り込み退避************************** ORG 0x000 goto MAIN ORG 0x004 movwf w_temp movf STATUS,w movwf status_temp movf status_temp,w movwf STATUS swapf w_temp,f swapf w_temp,w retfie ;************************************************************* MAIN ;-----------------------------設定---------------------------- ;BANK1 Setting bsf STATUS,RP0 clrf TRISA movlw B'11110000' clrf TRISB movlw B'01000000' movwf TRISC ;RXピンを入力に設定 movlw B'00100000' movwf TXSTA ;SET TX MODE movlw 0FH ;Set Baud Rate 19Kbps movwf SPBRG ;Set BRG ;BANK0 Setting bcf STATUS,RP0 clrf INTCON movlw 07H movwf ADCON1 ;------------------------------------------------------------ ;----------------------------初期化--------------------------- clrf PORTA clrf PORTB bcf STATUS,C bcf STATUS,Z ;------------------------------------------------------------ ;===========================MAIN_LOOP======================== MAIN_LOOP bsf STATUS,RP0 READY_CHECK btfss TXSTA,TRMT goto READY_CHECK bcf STATUS,RP0 movlw 'A' movwf TXREG call STEPPING_MOTTER goto MAIN_LOOP ;============================================================ ;================= STEPPING MOTORE ========================== STEPPING_MOTTER call wait1ms call wait1ms movlw B'00000001' movwf PORTB call wait1ms call wait1ms movlw B'00000010' movwf PORTB call wait1ms call wait1ms movlw B'00000100' movwf PORTB call wait1ms call wait1ms movlw B'00001000' movwf PORTB RETURN ;================= 15mS WAIT ================================ wait15ms MOVLW d'3' MOVWF CNT15mS wait15ms_loop CALL wait5ms DECFSZ CNT15mS,F GOTO wait15ms_loop RETURN ;================= 5mS WAIT ================================= wait5ms MOVLW d'100' MOVWF CNT5mS wait5ms_loop CALL wait50us DECFSZ CNT5mS,F GOTO wait5ms_loop RETURN ;================= 1mS WAIT ================================= wait1ms MOVLW d'20' MOVWF CNT1mS wait1ms_loop CALL wait50us DECFSZ CNT1mS,F GOTO wait1ms_loop RETURN ;================= 50μS WAIT ================================ wait50us ; 1サイクル(4クロック):0.2μS ; 50μS=0.2μS×250サイクル MOVLW d'82' ;1 MOVWF CNT50uS ;1 wait50us_loop DECFSZ CNT50uS,F ;1 GOTO wait50us_loop ;2 RETURN ;2+1 ;============================================================ ;------------------------------------------------------------ END

  • PIC16F819とMAX232Cについて困っています。

    まだ駆け出しでわからないことだらけで、以下のプログラムをふまえてPIC16F819とMAX232C(RS232C?)を接続したいのですが、どうプログラム(アセンブラ)を追加したら、また回路的にどうしたらいいのかわからないので教えてください。以下のプログラム(コメント省略)は、電圧変化により出力(LEDの点灯数の変化)を行ったものです。 LIST p=PIC16F819 #include <P16F819.inc> __CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF & _LVP_OFF AD_DATA_H EQU 20h AD_DATA_L EQU 21h WAITCOUNT EQU 22h ORG H'00' GOTO START ORG H'04' GOTO START ;------------------------------ ; 初期設定 ;------------------------------ START BSF STATUS, RP0 BCF ADCON1, ADFM BCF ADCON1, ADCS2 BSF ADCON1, PCFG3 BSF ADCON1, PCFG2 BSF ADCON1, PCFG1 BCF ADCON1, PCFG0 MOVLW B'00000001' MOVWF TRISA MOVLW B'00000000' MOVWF TRISB BCF STATUS, RP0 CLRF ADCON0 CLRF PORTA CLRF PORTB ;------------------------------- ; メインルーチン ;------------------------------- MAIN CALL AD_CONVERT MOVLW b'10000000' SUBWF AD_DATA_H, W BTFSC STATUS, C GOTO V_UPPER_HALF GOTO V_LOWER_HALF V_UPPER_HALF MOVLW b'11000000' SUBWF AD_DATA_H, W BTFSC STATUS, C GOTO V_3_4 GOTO V_1_2 V_LOWER_HALF MOVLW b'01000000' SUBWF AD_DATA_H, W BTFSC STATUS, C GOTO V_1_4 GOTO V_ZERO V_3_4 MOVLW b'00000111' MOVWF PORTB GOTO MAIN V_1_2 MOVLW b'00000011' MOVWF PORTB GOTO MAIN V_1_4 MOVLW b'00000001' MOVWF PORTB GOTO MAIN V_ZERO MOVLW b'00000000' MOVWF PORTB GOTO MAIN ;--------------------------------- ; A/D 変換サブルーチン ;--------------------------------- AD_CONVERT MOVLW B'10000001' MOVWF ADCON0 CALL WAIT_100U BSF ADCON0, GO BTFSC ADCON0, GO GOTO ADLOOP MOVF ADRESH, W MOVWF AD_DATA_H MOVF ADRESL, W MOVWF AD_DATA_L RETURN ;------------------------------------------------------------ ; 100usec ( 100usec = 0.2u/Cycle at 20MHz x 500 ) ;------------------------------------------------------------ WAIT_100U MOVLW D'165' MOVWF WAITCOUNT WAIT_100UL DECFSZ WAITCOUNT,F GOTO WAIT_100UL RETURN END 長くなりましたがご教授どうかお願いします。

  • PICアセンブラを出来る方、教えてください!

    初めに、カテゴリー間違ってたら、ごめんなさい。 大学の授業でライントレースロボットのアセンブラプログラムをやっています。 「以下のプログラムをセンサ入力をPORTA、モータドライブをPORTBとしプログラムを完成させよ(本講義で用いる装置はそのような回路になっていないので実行できない)。」 という問題なんですが分かる方居ますでしょうか? ;改造するプログラム ーーーーLIST P=PIC16F628A ーーーーinclude "P16F628A.inc" ーーーー__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _LVP_OFF & _CP_OFF STATUS EQU 3 RP0 EQU 5 PORTA EQU H'05' PORTB EQU H'06' TRISA EQU H'85' TRISB EQU H'86' LR EQU D'7' LL EQU D'0' FRONT EQU B'00011000' RIGHT EQU B'00001000' LEFT EQU B'00010000' ーーBSF STATUS,RP0 ーーCLRF TRISA ーーMOVLW B'11000011' ーーMOVWF TRISB ーーBCF STATUS,RP0 ーーCLRF PORTA ーーCLRF PORTB LINE BTFSC PORTB,LL ーーGOTO MIGI ーーBTFSC PORTB,LR ーーGOTO HIDARI ーーGOTO MAE MAE MOVLW FRONT ーーIORWF PORTB,1 ーーMOVLW B'11011011' ーーANDWF PORTB,1 ーーGOTO LINE MIGI MOVLW RIGHT ーーIORWF PORTB,1 ーーMOVLW B'11001011' ーーANDWF PORTB,1 ーーGOTO LINE HIDARI MOVLW LEFT ーーIORWF PORTB,1 ーーMOVLW B'11010011' ーーANDWF PORTB,1 ーーGOTO LINE ーーEND 私が今、予想しているのは MOVLW B'11111111' MOVWF TRISA CLRF TRISB とするのではないかな、くらいです。(合ってるか分かりませんが) この問題を解ける方、いましたらお願いします。 (注)プログラムがスペースが分かりにくくなっていますが、本当のプログラムはちゃんとスペースが空いて、列も揃っています。行の先頭に付いているーは強制的に左寄せになるのを、すこしでも見やすくするための物で、意味はありません。

このQ&Aのポイント
  • 東京水道の2ヶ月の水道料金は、基本料が2340円(税込)、下水道料金が1120円(税込)です。
  • 従量料は0円であるため、使用した水量によって料金が増減することはありません。
  • 一人暮らしの場合、東京水道の料金は高いと感じるかもしれませんが、比較的一般的な水道料金です。
回答を見る

専門家に質問してみよう