; Copyright 2005 Doi Shigeki ;list1006.asm h8/3052Fテスト・プログラム シリアル通信 ; .CPU 300HA ;アドバンス・モード  ;HEWならなくてもよい .SECTION sec0,DATA,LOCATE=H'0000 ;sec0という名のセクションを0x0000から展開 .DATA.L start ;リセット・ベクトル ;割り込みは使用しないのでほかのベクトルはなし .SECTION sec1,CODE,LOCATE=H'0100 ;sec1という名のセクションを0x0100から展開 start: MOV.L #H'FFF80,ER7 ;スタック・ポインタ設定 MOV.B #H'FF,R0L ;ポート1を出力に設定 MOV.B R0L,@H'FFFC0 ;ポート1 MOV.B #B'00000000,R0L ;割り込み不許可,送受信ディセーブル,内部クロック MOV.B R0L,@H'FFFBA MOV.B #B'00000000,R0L ;非同期,8ビット,パリティなし,一応偶数 MOV.B R0L,@H'FFFB8 ;stop1,mp=0,cks=00 MOV.B #D'80,R0L ;ボーレートを9600ボー/25MHzに設定 MOV.B R0L,@H'FFFB9 MOV.B #B'00110000,R0L ;割り込み不許可,送受信イネーブル,内部クロック MOV.B R0L,@H'FFFBA loop: ;データの受信 check: BTST #D'6,@H'FFFBC ;SSRの受信フラグのチェック BEQ check ;空きなら待つ MOV.B @H'FFFBD,R0L ;受信 BCLR #D'6,@H'FFFBC ;フラグのクリア MOV.B R0L,@H'FFFC2 ;P1経由でLEDに出力 ;データのエコー check2: BTST #D'7,@H'FFFBC ;SSRの送信フラグのチェック BEQ check2 ;空きでないなら待つ MOV.B R0L,@H'FFFBB ;送信 BCLR #D'7,@H'FFFBC ;フラグのクリア ;スイッチの状態を送信 MOV.B @H'FFFC6,R0L ;P3からスイッチの状態を入力 AND.B #H'0F,R0L ;数字コードに加工 OR.B #H'30,R0L; check3: BTST #D'7,@H'FFFBC ;SSRの送信フラグのチェック BEQ check3 ;空きでないなら待つ MOV.B R0L,@H'FFFBB ;送信 BCLR #D'7,@H'FFFBC ;フラグのクリア JMP @loop .END