仕事を頑張る人のおしりトラブル対策

初めに、カテゴリー間違ってたら、ごめんなさい。
大学の授業でライントレースロボットのアセンブラプログラムをやっています。
「以下のプログラムをセンサ入力をPORTA、モータドライブをPORTBとしプログラムを完成させよ(本講義で用いる装置はそのような回路になっていないので実行できない)。」
という問題なんですが分かる方居ますでしょうか?

;改造するプログラム
ーーーーLIST P=PIC16F628A
ーーーーinclude "P16F628A.inc"
ーーーー__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _LVP_OFF & _CP_OFF


STATUS EQU3
RP0EQU5
PORTA EQUH'05'
PORTBEQUH'06'
TRISA EQUH'85'
TRISBEQUH'86'
LREQUD'7'
LLEQUD'0'
FRONTEQUB'00011000'
RIGHTEQUB'00001000'
LEFTEQUB'00010000'

ーーBSFSTATUS,RP0
ーーCLRFTRISA
ーーMOVLWB'11000011'
ーーMOVWFTRISB
ーーBCFSTATUS,RP0
ーーCLRFPORTA
ーーCLRFPORTB

LINEBTFSCPORTB,LL
ーーGOTOMIGI
ーーBTFSCPORTB,LR
ーーGOTOHIDARI
ーーGOTOMAE

MAEMOVLWFRONT
ーーIORWFPORTB,1
ーーMOVLWB'11011011'
ーーANDWFPORTB,1
ーーGOTOLINE

MIGIMOVLWRIGHT
ーーIORWFPORTB,1
ーーMOVLWB'11001011'
ーーANDWFPORTB,1
ーーGOTOLINE

HIDARIMOVLWLEFT
ーーIORWFPORTB,1
ーーMOVLWB'11010011'
ーーANDWFPORTB,1
ーーGOTOLINE
ーーEND

私が今、予想しているのは
MOVLWB'11111111'
MOVWFTRISA
CLRFTRISB
とするのではないかな、くらいです。(合ってるか分かりませんが)
この問題を解ける方、いましたらお願いします。

(注)プログラムがスペースが分かりにくくなっていますが、本当のプログラムはちゃんとスペースが空いて、列も揃っています。行の先頭に付いているーは強制的に左寄せになるのを、すこしでも見やすくするための物で、意味はありません。

このQ&Aに関連する最新のQ&A

A 回答 (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
動くかわかりませんが、参考にして下さい。
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/05/28 08:24

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

    • good
    • 0

センサー構成ビット モーター制御ビット がわかりません


ORG文が無く RP1の初期設定は? 
STATUS - TRISB までは、P16F628A.inc ファイルで設定されています
IORW PORTB,1 の意味が不明です ビット0に何の意味がありますか?

この回答への補足

回答ありがとうございます。少し補足させていただきます。 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
ーーIORWFPORTB,1
ーーMOVLWB'11001011'
ーーANDWFPORTB,1
ーーGOTOLINE

HIDARIーMOVLWーLEFT
ーーIORWFーPORTB,1
ーーMOVLWーB'11010011'
ーーANDWFーPORTB,1
ーーGOTOーLINE
ーーEND
見やすくなったか分かりませんが、ー増やしました。コメントも少し入れて分かりやすくしました。

補足日時:2012/05/27 09:41
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qバス衝突で素子が破損する理由について質問です。

今、大学の授業でライントレースについて勉強しています。

0,1,6,7ビット目は、センサ入力となっているのでPICから出力すると両方の信号(0と1)が不一致(バス衝突)となり、素子が破損する場合がある。 バス衝突について素子が破損する理由を詳しく説明せよ。

と言う問題なのですが、参考書、教科書、goo検索しても見当たりませんでした。 どなたかバス衝突で素子が破損する理由が分かる方がいましたら、教えてください。 お願いします。

Aベストアンサー

ソフトの世界では1と0の二つ

ソフトはハードを制御します

ハード回路の構成で0は吸い込み  1は吐き出しです

衝突と言ってるのは1と0がぶつかった時だと思います

1は電源電圧(5Vとか3.3V等)

0はグランドライン  

1と0がぶつかる事をイメージする方法として、乾電池の+とマイナスをショートする感じです

電源の容量が許す限りの電流が流れるので、1または0のどちから弱い素子が電流モードで破壊して壊れます。

定格オーバの電流が流れる為です

ハードのついて詳しい人が身近にいませんか? 近くにマイコンショップなどあれば教えてくれますよ


 


人気Q&Aランキング

おすすめ情報