• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PICアセンブラを出来る方、教えてください!)

PICアセンブラプログラムの問題と解説

このQ&Aのポイント
  • 大学の授業でライントレースロボットのアセンブラプログラムを実装する問題について説明します。
  • 問題のプログラムには、センサ入力とモータドライブのポート設定が必要であり、具体的なプログラムの内容と実行方法について解説します。
  • 質問者は、予想されるプログラムの一部を示し、問題を解くための助言を求めています。解答者を募集しています。

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

  • ベストアンサー
  • koujikuu
  • ベストアンサー率43% (429/993)
回答No.3

M_STOP EQU B'11000011' ORG 0 GOTO MAIN ORG 4 RETFIE MAIN BANKSEL PORTB MOVLW M_STOP ANDWF PORTB,F BANKSEL TRISA MOVLW B'11111111' MOVWF TRISA MOVLW B'11000011' MOVWF TRISB BANKSEL PORTA LINE BTFSC PORTA,LL GOTO MIGI BTFSC PORTA,LR GOTO HIDARI MAE MOVF PORTB,W ANDLW M_STOP IORLW FRONT MOVWF PORTB GOTO LINE MIGI MOVF PORTB,W ANDLW M_STOP IORLW RIGHT MOVWF PORTB GOTO LINE HIDARI MOVF PORTB,W ANDLW M_SIOP IORLW LEFT MOVWF PORTB GOTO LINE END 動くかわかりませんが、参考にして下さい。

doryokushiyou
質問者

お礼

なんども、ありがとうございました!

その他の回答 (2)

  • koujikuu
  • ベストアンサー率43% (429/993)
回答No.2

勘違いしてました IORWF PORTB,1 は IORWF PORTB,F のことですね、失礼しました。

  • koujikuu
  • ベストアンサー率43% (429/993)
回答No.1

センサー構成ビット モーター制御ビット がわかりません ORG文が無く RP1の初期設定は?  STATUS - TRISB までは、P16F628A.inc ファイルで設定されています IORW PORTB,1 の意味が不明です ビット0に何の意味がありますか?

doryokushiyou
質問者

補足

回答ありがとうございます。少し補足させていただきます。 0(左),7(右)ビット目がラインセンサで、1(左),6(右)ビット目がフォトセンサです。残りの2(左),3(左),4(右),5(右)ビットがモーターの制御となっています。 ;改造するプログラム ーーーLIST P=PIC16F628A ーーーinclude "P16F628A.inc" ーーー__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _LVP_OFF & _CP_OFF ; 各ステータスの宣言 STATUS ーEQU ー 3 ; ステータスレジスタのアドレス RP0 ー EQU ー 5 ; ページ(Bank)設定のアドレス PORTA ーEQU ー H'05' ; ポートAのアドレス(05H) PORTB ーEQU ー H'06' ; ポートBのアドレス(06H) TRISA ー EQU ー H'85' ; ポートAの入出力設定のアドレス(85H) TRISBー EQU ー H'86' ; ポートBの入出力設定のアドレス(86H) LR ー EQU ー D'7' ; LRの値 LL ー EQU ー D'0' ; LLの値 FRONT ーEQU ー B'00011000' ; FORNTの値 RIGHTー EQU ー B'00001000' ; RIGHTの値 LEFT ーEQU ー B'00010000' ; LEFTの値 ; ポートの設定 ーーBSF ー STATUS,RP0 ; STATUSレジスタのPR0ビットを1にして、 ; ページ1(Bank1)を選択 ーーCLRFー TRISA ; ポートAの設定を全て00H(出力)にする ーーMOVLWー B'11000011' ; ワーキングレジスタの値を書き込む ; 入力:0,1,6,7ビット目、出力:2,3,4,5ビット目 ーーMOVWFー TRISB ; TRISBレジスタに値を書き込む ーーBCF ー STATUS,RP0 ; STATUSレジスタのRP0ビットを0にして ; ページ0(Bank0)を選択 ーーCLRFー PORTA ; PORTAのデータを全てクリア(00H)する ーーCLRFー PORTB ; PORTBのデータを全てクリア(00H)する 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 見やすくなったか分かりませんが、ー増やしました。コメントも少し入れて分かりやすくしました。

関連するQ&A