問題PIC16F84コードの変換データに行動するように

1

100

Guest
こんにちは..
現在、私は..コンバータの午前とデータ並列にPIC16F84のシリアルに行動するように
私は..ここに私のソ¥ースコードをよ囲む
問題が表¥面コードを私のiしてください。
8LEDsは(それに応じていない点灯を開く表¥す)ビットパラレル8。時には習慣も正しい出力を、なる展望だ。時間のほとんどは、それが出力されます間違っている。

<img src=¥"http://www.edaboard.com/images/smiles/icon_sad.gif¥" alt=¥"悲しい¥" border=¥"0¥" />
リストのp = 16F84
"を含む"P16F84.incを

;------------------------------------------------- -----------------

CBLOCKは0x20、一般的なレジスタの開始アドレス

BIT_COUNTER
NEXT_BIT
DELAY_COUNT
TEMP_STORE

ENDC

;------------------------------------------------- -----------------

BSFはステータスは、RP0;入力としてRA0を初期化する
MOVLW 0x01に
MOVWF TRISA
BCF社はステータス、RP0
CLRFポートA

BSFはステータス、RP0;として出力ポートB初期化する
MOVLW 0x00の
MOVWF TRISB
BCF社はステータス、RP0
CLRFポートB

後藤STARTは、プログラムのメイン移動する

;------------------------------------------------- -----------------START_DELAYはMOVLWは0x0Cは、サブルーチンが52usを遅らせる
MOVWF DELAY_COUNT
START_WAIT NOP命令
DECFSZのDELAY_COUNT、1
後藤START_WAIT
返り

;------------------------------------------------- ------------------

BIT_DELAYはMOVLWは0x18が、サブルーチンは104usを遅らせる
MOVWF DELAY_COUNT
BIT_WAIT NOP命令
DECFSZのDELAY_COUNT、1
後藤BIT_WAIT
返り

;------------------------------------------------- ------------------

スタートBTFSC PORTAは、0、ビットを検出開始
後藤スタート
のCALL START_DELAYは、そこにいることを確認スタートまだ少しは
BTFSCポータ、0
後藤スタート

メインのCLRFのポートB

のCALL BIT_DELAY
BTFSCポータ、0
BSFのTEMP_STORE、0

のCALL BIT_DELAY
BTFSCポータ、0
BSFのTEMP_STORE、1

のCALL BIT_DELAY
BTFSCポータ、0
BSFのTEMP_STORE、2

のCALL BIT_DELAY
BTFSCポータ、0
BSFのTEMP_STORE、3

のCALL BIT_DELAY
BTFSCポータ、0
BSFのTEMP_STORE、4

のCALL BIT_DELAY
BTFSCポータ、0
BSFのTEMP_STORE、5

のCALL BIT_DELAY
BTFSCポータ、0
BSFのTEMP_STORE、6

のCALL BIT_DELAY
BTFSCポータ、0
BSFのTEMP_STORE、7

のCALL BIT_DELAY
MOVFのTEMP_STORE、0
MOVWFポートB

後藤スタート

END

 
私は発振器水晶午前使用して9600 bpsのと4MHzの。

 
100ポンドは、書き込み:

時には、時には習慣正しい出力を取得します。
時間のほとんどは、それは間違って出力されます。
<img src=¥"http://www.edaboard.com/images/smiles/icon_sad.gif¥" alt=¥"悲しい¥" border=¥"0¥" />
 
再手段を同期させるか?時間を遅延してするように変更?

 
私は数険しい得た99usを51usと(ルーチンのために2の遅延を除く)CALL命令。親切に再度ご確認ください。

 
どんな用RS232見回路を、入力ですか?

MAX232とか、トランジスタや直接接続?

どのように構¥成されますあなたの16C84融合か?

宜しく

 
私はMAX232とを使用しています。
私の遅延ルーチンが間違っている?

 
される[OK]をしないそれは本当に問題の遅延する場合がありますあなたのルーチンは、遅延49または51(または102の代わりに104の)米

<img src=¥"http://www.edaboard.com/images/smiles/icon_smile.gif¥" alt=¥"笑顔¥" border=¥"0¥" />お持ちのデータビットを8受け取ったしかしTemp_Storeをチェックする私は後にそれをクリア忘れて...

のCALL BIT_DELAY
MOVFのTEMP_STORE、0
MOVWFポートB;<-- insert this here

CLRF TEMP_STORE;
< -挿入このここ

後藤スタート宜しく

 

Welcome to EDABoard.com

Sponsor

Back
Top