Microsoft Word - 組込みプログラミング2018テキスト

Similar documents
PowerPoint プレゼンテーション

Microsoft PowerPoint - 工学ゼミⅢLED1回_2018

Taro11-…e…L…X…g.jtd

スライド 1

Microsoft Word - 工学ゼミ3_テキスト

Microsoft Word - 4章.doc

untitled

前付(念).indd

PowerPoint プレゼンテーション

スライド 1

スライド 1

untitled

Microsoft Word - 工学ゼミ3_テキスト

スライド 1

余白 : 上下 25.4mm, 左右 19mm (Word2012 での やや狭い 設定 ) マイコンプログラミング演習 I レポート 1 実験日 提出日 回路構築 /LED を用いた I/O 制御 [16pt] 班員と担当責任者第 0 班レポート作成

1.1 ラベル ラベルはカラム 1 から始まらなければならない ラベルの後にはコロン スペース タブ 改行が続いてよい ラベルはアルファベットかアンダーバーで始まり 英数字 アンダーバー クエスチョンマークを含んでよい ラベルは 32 文字までである デフォルトではこれらは大文字と小文字を区別するが

正転時とは反対に回転する これが逆転である 図 2(d) の様に 4 つのスイッチ全てが OFF の場合 DC モータには電流が流れず 停止する ただし 元々 DC モータが回転していた場合は 惰性でしばらく回転を続ける 図 2(e) の様に SW2 と SW4 を ON SW1 と SW3 を O

,, ( ) 5 ma ( ) 5V V 5 6 A B C D E F G H I J , LED LED, LED, 7 LED,, 7 LED ( ) V LED VCC 5V 7 LED VCC f g f a g b a b c e d e d c dp dp VCC (

3 4 PIC

も 常に 2 つのコイルに電圧を印加する 2 層励磁方式や 1 つのコイルと 2 つのコイルに交互に電圧を印 2

また RLF 命令は 図 2 示す様に RRF 命令とは逆に 各ビットを一つずつ 左方向に回転 ( ローテイト ) する命令である 8 ビット変数のアドレスを A とし C フラグに 0 を代入してから RLF A,1 を実行すると 変数の内容が 左に 1 ビットシフトし 最下位ビット (LSB)

Microsoft Word - テキスト.docx

スライド 1

2. アーキテクチャ 概 要 PIC16F8x ファミリは 命 令 語 長 14bit の RISC[1]で 命 令 は35 種 類 である 1 命 令 は4クロックで 実 行 されるが 実 際 にはパイプライン 処 理 [2]されている ノイマン 型 コンピュータ[3]と 違 いプログラムとデータ

PIC18 Istructios PIC16, PIC x Microchip Techology Icorporated. All Rights Reserved. PICmicro PIC18 52

Microsoft Word - 実験4_FPGA実験2_2015

3 1EEPROMElectrically Erasable PROM PROMProgrammable ROM 2 EEPROM 3

64 松尾邦昭 2. 無線送受信装置 SANWA 製のラジコン送受信装置は, その機能性の豊富さと価格の安さを理由に多くのラジコン ファンに愛用されており, 今回使用した VG6000は, チャンネル数が6チャンネルあり, ヘリコプター制御用に設計 開発され使用されているものだが, 我々はこれをロボ

計算機アーキテクチャ

スライド 1

実習内容 PIC18C242 のポート B に接続した LED を点滅させます ( 他の実習と同じ内容です ) 8 個の LED に表示される値が +3 ずつインクリメントします MPLAB を使って MPASM アセンブラのソース ファイルをアセンブルします MPLAB とソース ファイルは配布し

-2 外からみたプロセッサ GND VCC CLK A0 A1 A2 A3 A4 A A6 A7 A8 A9 A10 A11 A12 A13 A14 A1 A16 A17 A18 A19 D0 D1 D2 D3 D4 D D6 D7 D8 D9 D10 D11 D12 D13 D14 D1 MEMR

卒 業 研 究 報 告

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

BSF PORTA BCF PORTA MOVLWB MOVLWB MOVLWB MOVLWB , E=1, E=0 8 ビット 行表示 ディスプレイ制御 表示クリア エントリーモード CALLDSP MAIN BCF PORTA,3 R

内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一

PIC24F Family Reference Manual Section 9 WDT

スライド 1

スライド 1

1. 購入物品リスト 電子部品名 用途 規格 単価 数量 合計 購入先 PIC16F84A-20/P PIC16F 秋月電子通商 カーボン抵抗 1/4W R0,R1 10kΩ 秋月電子通商 カーボン抵抗 1/4W R2,R2 追加分 300Ω 秋月

回路 : Vdd GND 回路図と呼べるようなものではありません オシレータは外部 ( セラミック発振子 ) なので GP4 と GP5 は使えません 四角の枠内はモジュールなので ここから VDD GND TX RX の4 本をつなぐだけです 測定端子 (GP0) は 1MΩの抵抗と 2MΩの半固

Microsoft Word - Ladder Tool 使çfl¨ã…žã…‰ã…¥ã‡¢ã…«ã…©ã…•ã…¼ã†ªã†Š_ docx

DS30430C-J2-page 2 : 1998 Microchip Technology Inc.

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

三菱電機マイコン機器ソフトウエア株式会社

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

回路 7 レジスタ ( 同期イネーブル及び非同期リセット付 ) 入力データを保持するのに用いる記憶素子 使用用途として, マイクロプロセッサ内部で演算や実行状態の保持に用いられる Fig4-2 のレジスタは, クロック信号の立ち上がり時かつ 信号が 1 のときに外部からの 1 ビットデータ R をレ

命令セットの構成例 a) 算術 演算命令 例 )ADD dest, source : dest dest + source SUB dest, source : dest dest - source AND dest, source : dest dest AND source SHR reg, c

PIC の書き込み解説 PICライターを使うときに間違った使い方を見受ける 書き込み失敗の原因は知識不足にある やってはいけないことをしている 単に失敗だけならまだしも部品を壊してしまう 正しい知識を身に着けよう 書き込みに必要なピンと意味 ICSPを意識した回路設計の必要性 ICSP:In Cir

1 はじめに このアプリケーションは 計算機ハードウェア論 のアセンブリ言語 ( 超簡単命令セット ) の理解を助けるために製作されました 便宜的に機能を追加 削除した箇所があるため このアプリケーション上での動き方が実際のCPUでの動き方と異なる場合があることに留意してください このアプリケーショ

から付与します さらに, ゼロプレッシャー ICソケットの空き部分を使って, タイマー ICである555の動作チェックができます ユニバーサル基板の一部に555 用の発振回路を構成しています 555をソケットに差し込んで電源スイッチを入れると,ICが良品の場合は LEDが点滅します LEDが点滅しな

Microsoft PowerPoint - 第8α章.ppt [互換モード]

BANK1 MOVLW b' ' PIC16F648A独自 MOVWF CMCON コンパレータ OFF BCF INTCON,PEIE 周辺割り込み OFF PIC16F648A独自 MOVLW B' ' RB2/TX, RB1/RX PIC16F648A独自 MOVW

スライド 1

Microsoft PowerPoint - kougi7.ppt

RL78開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行(統合開発環境編)(High-performance Embedded Workshop→CS+)

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

Microsoft Word - マイコンを用いた信号# doc

Microsoft PowerPoint - 【HB-1000】キーボードマウス操作マニュアル.ppt [互換モード]

Microsoft Word - PIC-USBマイコンボード_v1-02@WEB公開用資料.docx

初心者のための RL78 入門コース ( 第 3 回 : ポート出力例 2 とポート入力 ) 第 3 回の今回は, 前回作成したプログラムを RL78/G13 のハードウェアを用いて見直しをお こないます 今回の内容 8. コード生成を利用した実際のプログラム作成 ( その 2) P40 9. コー

PowerPoint プレゼンテーション

Microsoft Word A02

PowerPoint プレゼンテーション

スライド 1

USB モジュール

ソフトウェア基礎技術研修

ex04_2012.ppt

Microsoft Word - マイコン実験 doc

コンピュータ工学Ⅰ

2.RL78 での割り込み処理 ( 割り込み受け付け ) マスクが解除された (xxmk ビットが 0 の ) 割り込み要求信号は 2 つの用途で使用されます 一つ目は,CPU のスタンバイ状態の解除です この動作は, 割り込み優先順位とは全く無関係で, マスクされていない (xxmk=0 の )

ネットワーク設置で困ったときには

COMET II のプログラミング ここでは機械語レベルプログラミングを学びます 1

< 動作マトリクス > 停止 REQ 固定位置 REQ 往復 REQ 停止 () 現在位置と同じなら無視異なれば停止パルス中へ 停止パルス中へ 停止 ( 固定位置 ) 現在位置と同じなら無視異なれば停止パルス中へ 停止パルス中へ 停止パルス中 ( 停止パルス終了後 ) ( 停止パルス終了後動作 )

AKI-PIC16F877A開発キット (Ver1

UNIX 初級講習会 (第一日目)

ネットワーク設置で困ったときには

PowerPoint Presentation

PowerPoint プレゼンテーション

プログラミング実習I

VelilogHDL 回路を「言語」で記述する

コンピュータ工学Ⅰ

1. UART について UART は Universal Asynchronous Receiver Transmitter の頭文字をとったもので 非同期シリアル通信と呼ばれます シリアル通信とは 一本の信号線でデータをやりとりするために 1bit ずつデータを送出することをいいます データを受

Microsoft PowerPoint - RL78G14_動画マニュアル_タイマRD.ppt [互換モード]

まず,13 行目の HardwareTimer Timer(1); は,HardwareTimer というクラスを利用するという宣言である. この宣言によって Timer というインスタンスが生成される.Timer(1) の 1 は,OpenCM に 4 個用意されているタイマのうち,1 番のタイマ

マウス操作だけで本格プログラミングを - 世界のナベアツをコンピュータで - プログラムというと普通は英語みたいな言葉で作ることになりますが 今回はマウスの操作だけで作ってみます Baltie, SGP System 操作説明ビデオなどは 高校 情

Jan/25/2019 errata_c17m11_10 S1C17 マニュアル正誤表 項目 リセット保持時間 対象マニュアル発行 No. 項目ページ S1C17M10 テクニカルマニュアル システムリセットコントローラ (SRC) 特性 19-3 S1C17M20/M

コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n

Microsoft PowerPoint pptx

スライド 1

2. オプション設定画面で, 必要事項を記入 選択します. 少なくとも, タイトル に課題の見出しとなる文章を入力する他, 種別 を アンケート( 無記名式 ) に設定する必要があります. また, アクセス制限はここでは コースメニューで非表示にする に設定します. その他設定は必要に応じて行って下

内容 MD00Manager とは?... MD00Manager をインストールする.... ソフトのインストール... MD00Manager の使い方.... 起動をする... 機能説明...7 機能説明 ( メニューバー )...8 機能説明 ( ステータスバー )...8 機能説明 ( コ

今回の内容 マイクロコンピュータにおけるプログラミング 機器の中に組み込まれる ロボット 自動車 家電 などいろいろな分野で利用 プログラムを用いて外部の装置を動作させる マイコンから の出力 発光ダイオード Light Emitting Diode 液晶ディスプレイ Liquid Crystal

QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは?

Microsoft PowerPoint - RL78G1E_スタータキットデモ手順_2012_1119修正版.pptx

HDLトレーナーサンプルプログラム説明書

初めてのプログラミング

AI1608AYUSB手順V3

Transcription:

ロボティクスコース実験 Ⅰ 組込みプログラミング Ⅰ, Ⅱ 平成 30 年度版 1. スケジュール 日付内容 4/16 - コンピュータの機械語 ( ニーモニック ) と MPLAB( プログラム開発環境 ) の使い方 - 実験 1の予備実験 4/23 - 実験 1の予備実験のまとめ - 実験 1の計画書の作成とチェック 5/2 - 実験 1の実施とレポート作成 月曜授業 5/7 - 実験 1のレポートのチェック 提出 1 - 実験 2の予備実験 5/14 - 実験 2の予備実験のまとめ - 実験 2の計画書の作成とチェック 5/21 - 実験 2の実施とレポート作成 ( 5/28 提出 2) 実験 2を終えた方は4.5の追加課題を行って下さい 2. 目的 (1) コンピュータの基礎的な構成と各部の働きを理解する. (2) コンピュータの機械語 ( ニューモニック ) と, コンピュータがプログラムを実行する仕組みを理解する. (3) データ転送命令と演算命令の働きを理解し, 使い方を修得する. (4) 分岐命令の働きを理解し, 使い方を修得する. 3.PIC マイコンの構成 3.1 概要 PICマイコン ( 以降 PICと呼ぶ ) の中にはコンピュータに必要な演算回路と制御回路 (CPU), メモリ (RAM, ROM), 入出力 (I/O) などが全て収められており,ROM に書き込まれたプログラムによって動作する.PIC は命令の長さが一定である RISC 構造のコンピュータであり, プログラムを格納するメモリとデータを格納するメモリが分離されたハーバード アーキテクチャに基づいて構成されている. PIC のプログラムを開発するためには種々の方法があるが, 代表的なツールとして, 開発に必要な全ての機能をまとめた統合開発環境ソフトウエア MPLAB がメーカーから無償で提供されている. 1

3.2 アーキテクチャとピン配置 (1) PIC の内部構成 PIC の内部構成を図 1に示す. この図はコンピュータアーキテクチャのテキストで用いられているモデルコンピュータの構成と基本的に同じであるが, 入出力ポート, マルチプレクサ,Status レジスタ等が追加されているので注意すること. 図 1 PIC の内部構成 (2) ピン配置実験で使用する PIC16F876A は図 2に示すように28 本のピンを持っている. なお, 実験ではこれらの中から表 1に示すピンを使用する. 表 1 実験で使用するピン 図 2 PIC16F876A のピン配置 ピン名 ピン番号 働き 接続先 VDD 20 電源 3V VSS 8,19 グランド 0V MCLR 1 リセット 押しボタンスイッチ OSC1 9 OSC2 10 RB0 21 RB1 22 RB2 23 RB3 24 RB4 25 RB5 26 RB6 27 RB7 28 RC0 11 RC1 12 RC2 13 RC3 14 RC4 15 RC5 16 RC6 17 RC7 18 外部振動子 入力ポート 出力ポート セラロック DIP スイッチ または押しボタンスイッチ LED または圧電スピーカー 2

3.3 PIC の仕様 仕様の主な項目を表 2 に示す. 動作周波数 表 2 PIC16F876A の仕様 DC~20MHz プログラムメモリ ( ワード (14bit)) 8K データメモリ ( バイト ) 368 割り込み 13 入出力ポート PORTA,PORTB,PORTC タイマー 3 10bit A/D モジュール 命令セット 5 入力チャンネル 35 命令 4. 実験 4.1 実験の手順次の手順で実験を進める. (S1) 準備 ( 実現方法の基本的な考え方をまとめる ) (S2) アルゴリズムとフローチャートの作成 (S3) プログラムの作成 ( コーディングとシミュレーション及びデバグ ) (S4) 回路図の作成 (S5) 配線 (S6) プログラムをダウンロードし, 実験項目及び結果のまとめに示された内容を実施して結果をレポートにまとめる. 3

4.2 使用部品とブレッドボードの使い方 (1) 使用部品 表 3 部品表 使用部品 個数 外形 備考 番号 PIC16F876A 1 セラロック 1 中央の端子を GND に接続 CSTLS4M00G53-B0 DIP スイッチ 1 KSD82 LED モジュール 1 文字側がアノード ( 陽極 ) OSX10201-R 押しボタンスイッチ ( タクトスイッチ ) 2 押した時に導通する端子をテスターで確 認すること 集合抵抗 1kΩ 1 印字面を手前に向けて左側が共通端子 RKC8BD102J ブレッドボード 1 BB-102 ワイヤー 必要数 電池ボックス 1 アルカリ電池 2 抵抗器 4.7kΩ 2 圧電スピーカ 1 PKM13EPYH4000-A0 (2) ブレッドボードの使い方ブレッドボードの左端の 2 列と右端の 2 列は, 図 3 中の縦線で示すように各列の穴同士が接続されている. これらの列は赤を電源 (+3 V), 青をGND(0V) に使用する. 横に並んでいる5 個の穴同士 ( 横線で示す ) は互いに接続されている. 右側の横に並んだ5 個の穴も同様である. ICは中央をまたぐように片側を図のeの列, 反対側をfの列に挿入する. 残りの部品は配線がし易いようによく考えて適宜配置すること. 図 3 ブレッドボード 4

4.3 実験 1 ( 注 ) 予備実験はレポートに書かなくてもよい.. 4.3.1 予備実験 (1) 内容 PORTB(06h) から入力したデータに定数 k(=5) を足した結果を PORTC(07h) に出力するプログラムを作成し, シミュレータでその動作を確認する. (2) 手順 実験の手順に従って作業を進める. 但し,(S4) と (S5) は省略する.MPLAB の使い方については, 本実 験のサポート HP(http://esato.net/ex/robo/) の資料を参考にする. (S1) 準備 ( 実現方法の基本的な考え方をまとめる ) データ転送命令を使用して, データメモリの一部である入力ポートからデータを入力する. 次に算術 演算 ( 加算 ) 命令を使用して,W レジスタに格納したデータに定数 (05h) を足す. (S2) アルゴリズムとフローチャートの作成 図 4 予備実験のフローチャート (S3) プログラムの作成 ( コーディングとシミュレーション及びデバグ ) リスト 1 実験 1 予備実験のソースリスト ; 実験 1 予備実験のプログラム INCLUDE P16F876A.INC LIST P=PIC16F876A CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF & _DEBUG_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF ; ラベルの定義と初期設定 PORTB EQU 06H PORTC EQU 07H 5

ORG 00H ; パワーオンリセット GOTO MAIN ORG 04H ; 割り込みベクタ GOTO MAIN ; メインルーチン MAIN BSF STATUS,RP0 ;BANK1 にする MOVLW 0FFH ; 入力モード MOVWF TRISB ;PORTB を設定 MOVLW 00H ; 出力モード MOVWF TRISC ;PORTC を設定 BCF OPTION_REG,7 ;RB PULL UP 有効 BCF STATUS,RP0 ;BANK0 にする MOVF PORTB,0 ;PORTB から Wレジスタに入力 ADDLW 05H ;W レジスタに05Hを足す MOVWF PORTC ;W レジスタの値をRORTCに出力 SLEEP ; 停止 END (S6) 動作の確認表 4 シミュレータ ( ウォッチダイアログ ) における動作確認結果 (ⅰ)PORTBに53h(01010011b) を設定した場合実行前の値実行後の値 PORTB 53h PORTC Wレジスタ Status レジスタ (ⅱ)PORTBに0FEh(11111110b) を設定した場合実行前の値 PORTB 0FEh PORTC Wレジスタ Status レジスタ 実行後の値 6

(ⅲ)PORTBに00h を設定した場合実行前の値 PORTB 00h PORTC Wレジスタ Status レジスタ 実行後の値 (ⅳ)PORTBに0FFh(11111111b) を設定した場合実行前の値 PORTB 0FFh PORTC Wレジスタ Status レジスタ 実行後の値 4.3.2 本実験 (1) 内容 PORTB(06h) から入力したデータに定数 k(=5) を足した結果を PORTC(07h) に出力するプログラムを作成し, 実験回路 ( 図 5) においてその動作を確認する. 図 5 実験 1 の回路 7

(2) 手順 実験の手順に従って作業を進める.(S6) のプログラムのダウンロードについては, 本実験のサポート HP(http://esato.net/ex/) の資料 (PIC ライターの使い方 ) を参考にする. (3) 実験の項目及び結果のまとめ次の4 通りの場合について実験を行い, 予備実験で行ったシミュレーションの結果と比較する. (ⅰ)PORTBに53h(01010011b) を設定した場合 (ⅱ)PORTBに0FEh(11111110b) を設定した場合 (ⅲ)PORTBに00h を設定した場合 (ⅳ)PORTBに0FFh(11111111b) を設定した場合 (4) 考察 4 通りの値を入力した時の Z フラグと C フラグの値が, シミュレーション結果のようになる理由を考 察せよ. 4.4 実験 2 4.4.1 予備実験 (1) 内容 PORTC のビット 0に接続した圧電スピーカーから 1kHz の音を出すプログラムを作成する. (2) 手順 (S1) 準備図 5に示すように,1kHz の信号を出力するためには,PORTC のビット 0を1kHz の波形の半周期ごとに 1と0を変化させればよい. 図 5 PORTC の波形 このために PORTC のビット 0 に1を出力した後カウンタ用のデータメモリ (COUNT) に繰り返し回数 (N: 後で求める ) を設定し, 条件分岐命令と無条件分岐命令を使ってカウンタ用のデータメモリが0になるまで1ずつ減らして行く.0になったら再びカウンタ用のデータメモリに繰り返し回数を設定し, 今度は PORTCのビット0に0を出力した後, 同様に分岐命令を使ってカウンタ用のデータメモリが0になるまで 1ずつ減らして行く. この動作を繰り返す. 8

(S2) アルゴリズムとフローチャートの作成 準備に示した基本的な考え方に基づいてアルゴリズムを作成し, フローチャートで表す. 図 6 予備実験のフローチャート 次に繰り返し回数を求める. < 繰り返し回数の計算 > 命令の実行時間のもとになるクロックの周期を求める. クロックは 4MHzであるから, 周期は次のように求まる. クロック周波数 (fc):4mhz クロック周期 (Tc):1/4MHz=0.25μsec 繰り返しは条件分岐命令と無条件分岐命令を組み合わせる. 条件分岐 ( ゼロ分岐 ) 命令 (DECFSZ) と無条件分岐命令 (GOTO) の実行時間は次のように求まる. 各命令の実行には 4クロック ( サイクル数 ) の時間が必要であり, そのサイクル数については 23 ページの表 A.1を参考にすること. 条件分岐命令 (DECFSZ) の実行時間 :0.25μsec 4 クロック 1サイクル =1μsec 無条件分岐命令 (GOTO) の実行時間 :0.25μsec 4クロック 2 サイクル =2μsec 従って, 繰り返し 1 回分の命令の実行時間は次のようになる. 2 命令の実行時間の合計 :1μsec+2μsec=3μsec 1kHz 波形の周期の半分 (0.5msec) の間 PORTCのビット 0を 1にし, 残りの半分を 0にするために必要な繰り返し回数は次のように求まる. 1kHzの波形の周期 :1/1kHz=1msec 2 個の命令を繰り返す回数 :N=(1msec/2)/3μsec 167=A7h (S3) プログラムの作成 ( コーディングとシミュレーション及びデバク ) フローチャートに基づいてプログラムを作成する. 9

リスト 2 実験 2 予備実験のソースリスト ; 予備実験のプログラム ;-------------- PIC の設定 -------------------- INCLUDE P16F876A.INC LIST P=PIC16F876A CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF & _DEBUG_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF ;------------- ラベルの定義と初期設定 -------- PORTC EQU 07h COUNT EQU 20h ORG 00h ; パワーオンリセット GOTO MAIN ORG 04h ; 割り込みベクタ GOTO MAIN ;-------------- メインルーチン--------------- MAIN BSF STATUS,RP0 ;BANK1 にする MOVLW 00h ; 出力モード MOVWF TRISC ;PORTC を設定 BCF STATUS,RP0 ;BANK0 にする LOOP1 MOVLW 0A7h ;COUNT に初期値を設定 MOVWF COUNT BSF PORTC,0 ;PORTC のビット 0をセット (1) LOOP2 DECFSZ COUNT,1 ;COUNT を1 減らした結果が 0 なら次の命令をスキップ GOTO LOOP2 ;LOOP2 に戻る MOVLW 0A7h ;COUNT に初期値を設定 MOVWF COUNT BCF PORTC,0 ;PORTC のビット 0をクリア (0) LOOP3 DECFSZ COUNT,1 ;COUNT を1 減らした結果が 0 なら次の命令をスキップ GOTO LOOP3 ;LOOP3 に戻る GOTO LOOP1 ;LOOP1 に戻る END 10

(S4) 回路図の作成 図 7 予備実験の回路図 回路図が完成したら,(S5) と (S6) を適宜進める. (3) 実験項目及び結果のまとめ (ⅰ) 出力波形をオシロスコープで観測し, 波形を記録する. (ⅱ) 波形の周期から周波数を求める. 小数点以下 2 桁まで求めること. 4.4.2 本実験 (1) 内容予備実験を参考にして,PORTBのビット 0に接続した DIPスイッチを ON にした時に PORTC のビット 0 に接続したスピーカーから 3kHzの音を出し,DIP スイッチを OFFにした時に2kHz の音を出すプログラムを作成せよ. (2) 手順先ず実験の手順 (S1) から (S4) までの実験計画書を作成して指導教員に確認して貰うこと. 確認後許可を得てから実験計画書に基づいて (S5) と (S6) を実行する. ( 注 ) 回路図は図 7 を参考にすること (3) 実験項目及び結果のまとめ (ⅰ)2kHzと3kHzの出力波形をオシロスコープで観測し, 記録する. (ⅱ) 各々の波形の周期から周波数を求める. なお, 周波数は小数点以下 2 桁まで求めること. 11

(4) 考察 2kHz と 3kHz の各々の出力波形から求めた周波数と目標の周波数 (2kHz または 3kHz) との差を 求め, 差が生じる理由を考察せよ. 4.5 追加課題 実験 2を終えた方は行って下さい 4.5.1 目的 命令の実行時間を理解し, プログラムの実行に要する時間を計算できる コンピュータが割り込みを処理する仕組みを理解し, 割り込みの使い方を修得する 4.5.2 予備実験 (1) 内容 PORTBのビット0 に接続された押しボタンスイッチを押すと ( 押したときに 1, 押さないときに 0とする ),8 個の LED の表示が 00h にクリアされるプログラムを次の Aと B の2 通りの方法で作成せよ. 但し, 表示は 3 秒間に1ずつカウントアップすること. また,8 個のLEDはPORTC に接続すること. < 方法 A 割り込みを用いない方法 > プログラム中でスイッチが押されているか否かを判定し, 押されている時に表示をクリアする. なお表示は,0FFh から更に 1 だけカウントアップすると自動的に 00h に戻る. < 方法 B 割り込みを用いる方法 > スイッチが押されたときに割り込みが発生し, 割り込み処理の中で表示をクリアする. なお表示は, 0FFh から更に 1 だけカウントアップすると自動的に 00h に戻る. (2) 方法 Aの手順 (S1) 準備 ( 実現方法の基本的な考え方をまとめる ) プログラムの先頭で PORTB のビット0の値が0 なら PORTCを00h 戻し ( クリアするという ), そうでないならそのままにして次に進む. ついで3 秒間待った後,PORTCの内容を1だけ増加してから元に戻るようにすればよい. (S2) アルゴリズムとフローチャートの作成 準備に示した基本的な考え方に基づいてアルゴリズムを作成しフローチャートで表す. 12

図 8 押しボタンスイッチを押すと表示がクリアされるカウンタプログラムのフローチャート (S3) プログラムの作成 ( コーディングとシミュレーション及びデバグ ) フローチャートに基づいて, 判断をビット判定分岐命令に置き換え,PORTCに1を加算する処理を定数設定命令とレジスタにデータメモリの内容を加算する命令の組み合わせに, そして元に戻る動作を無条件分岐命令に置き換えるとプログラムは次のようになる. リスト3 追加課題予備実験方法 Aのソースリスト ; 予備実験のプログラム ( 割り込みを用いない方法 ) ;----------------- PIC の設定 ---------------------- INCLUDE P16F876A.INC LIST P=PIC16F876A CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF & _DEBUG_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF ;-----------------ラベルの定義と初期設定---------- PORTB EQU 06h PORTC EQU 07h COUNT1 EQU 20h ; タイマー用カウンタ COUNT2 EQU 21h ; COUNT3 EQU 22h ; ORG 00h ; パワーオンリセット GOTO MAIN ORG 04h ; 割り込みベクタ GOTO MAIN ; ---------メインルーチン------------------ 13

MAIN BSF STATUS,RP0 ;BANK1 にする MOVLW 00h ; 出力モード MOVWF TRISC ;PORTC を設定 MOVLW 0FFh ; 入力モード MOVWF TRISB ;PORTB を設定 BSF OPTION_REG,7 ;RB PULLUP 無効 BCF STATUS,RP0 ;BANK0 にする CLRF PORTC ;PORTC クリア LOOP BTFSC PORTB,0 ; 押しボタンスイッチチェック CLRF PORTC ; 押されているならPORTC をクリア ;---------3 秒タイマープログラム------------ MOVLW 0Eh ;COUNT1 に初期値設定 MOVWF COUNT1 LOOP1 MOVLW 0FFh ;COUNT2 に初期値を設定 MOVWF COUNT2 LOOP2 MOVLW 0FFh ;COUNT3 に初期値設定 MOVWF COUNT3 LOOP3 DECFSZ COUNT3,1 GOTO LOOP3 DECFSZ COUNT2,1 GOTO LOOP2 DECFSZ COUNT1,1 GOTO LOOP1 ;---------カウントアッププログラム---------- MOVLW 01h ;PORTC を1だけカウントアップ ADDWF PORTC,1 GOTO LOOP ; 先頭に戻る END (S4) 回路図の作成 図 9 に示すように部品を接続する. このとき LED モジュールの極性に注意すること ( 部品表参照 ). 14

図 9 予備実験の回路図 回路図が完成したら (S5) と (S6) を適宜進める. (3) 方法 Aの実験項目及び結果のまとめ 次の5 通りの場合について, 表示が正しくクリアされた回数を求めてグラフを作成する. (ⅰ) 押しボタンを 1 秒間押した後 10 秒間離す操作を10 回繰り返した時にクリアされた回数 (ⅱ) 2 秒間 (ⅲ) 3 秒間 (ⅳ) 4 秒間 (ⅴ) 5 秒間 (4) 方法 Bの手順 (S1) 準備 ( 実現方法の基本的な考え方をまとめる ) 割り込み処理はメインプログラムと独立しているため, メインプログラムでは3 秒間待った後に1だけカウントアップする動作だけを繰り返す. 一方割り込み処理プログラムでは PORTC をクリアする (0 にする ) 処理のみを実行する. (S2) アルゴリズムとフローチャートの作成準備に示した基本的な考え方に基づいてアルゴリズムを作成しフローチャートで表す. プログラムのフローチャートは次のようになる. 15

開始 割り込み 3 秒タイマープログラム PORTC 00h PORTC PORTC+1 戻り (a) メインプログラム (b) 割り込み処理プログラム 図 10 割り込み処理を用いたプログラムのフローチャート (S3) プログラムの作成 ( コーディングとシミュレーション及びデバグ ) 先ず図 10(a) のフローチャートに基づいてメインプログラムを作成する. メインプログラムでは各種の設定を行った後,PORTCを0にクリアする. 次に3 秒経ってから W レジスタに1を格納し,W レジスタと PORTCで加算した結果をPORTCに戻す. これによって PORTC の内容が1 増加する. 最後に無条件分岐命令を使用してメインプログラム中のタイマープログラム部分に戻る. 次に図 10(b) のフローチャートに基づいて割り込み処理プログラムを作成する. 割り込み処理プログラムでは, 先ず指定したビットを0にする命令を用いて, 割り込みが発生したことを示す割り込みフラグ ( アドレス 0Bh のデータメモリのビット1) を0にする. これは割り込みが発生すると割り込みフラグが1になり, そのまま実行を続けると割り込み処理プログラムから戻った時に, 再び割り込み処理プログラムが呼び出されてしまうことを防ぐためである. この後で PORTC の内容を0にする. その後割り込み処理から戻る命令を使ってメインプログラムに戻る. プログラムは次のようになる. リスト4 追加実験方法 B 予備実験のソースリスト ; 予備実験のプログラム ( 割り込みを用いる方法 ) ;----------- PICの設定 -------------------------- INCLUDE P16F876A.INC LIST P=PIC16F876A CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF & _DEBUG_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF ;----------- ラベルの定義と初期設定 ------------- PORTB EQU 06h PORTC EQU 07h COUNT1 EQU 20h COUNT2 EQU 21h COUNT3 EQU 22h 16

ORG 00h ; パワーオンリセット GOTO MAIN ;------------- 割り込み処理プログラム-------------- ORG 04h ; 割り込みベクタ BCF 0Bh,1 ; 割り込みフラグをクリア CLRF PORTC ;PORTC をクリア MOVLW 01H MOVWF COUNT1 ;3 秒タイマー用カウンタリセット MOVWF COUNT2 ; MOVWF COUNT3 ; RETFIE ; --------------メインルーチン--------------------- MAIN BSF STATUS,RP0 ;BANK1 にする MOVLW 00h ; 出力モード MOVWF TRISC ;PORTC を設定 MOVLW 0FFh ; 入力モード MOVWF TRISB ;PORTB を設定 BSF OPTION_REG,7 ;RB PULLUP 無効 BSF OPTION_REG,6 ; 割り込みの設定 ( 立ち上がりエッジ ) BCF STATUS,RP0 ;BANK0 にする MOVLW 90h ; 割り込み設定 MOVWF 0Bh CLRF PORTC ;PORTC をクリア ;---------3 秒タイマープログラム------------ LOOP MOVLW 0Eh ;COUNT1 に初期値設定 MOVWF COUNT1 LOOP1 MOVLW 0FFh ;COUNT2 に初期値を設定 MOVWF COUNT2 LOOP2 MOVLW 0FFh ;COUNT3 に初期値設定 MOVWF COUNT3 LOOP3 DECFSZ COUNT3,1 GOTO LOOP3 DECFSZ COUNT2,1 GOTO LOOP2 DECFSZ COUNT1,1 GOTO LOOP1 ;---------カウントアッププログラム------------ 17

MOVLW 01h ADDWF PORTC,1 GOTO LOOP END ;PORTC を 1 だけカウントアップ ; 先頭に戻る 次いで (S5) と (S6) を適宜進める. なお, 回路図は割り込みを用いない場合と同様である. (5) 実験項目及び結果のまとめ 次の5 通りの場合について, 表示が正しくクリアされた回数を求めてグラフを作成する. (ⅰ) 押しボタンを 1 秒間押した後 10 秒間離す操作を10 回繰り返した時にクリアされた回数 (ⅱ) 2 秒間 (ⅲ) 3 秒間 (ⅳ) 4 秒間 (ⅴ) 5 秒間 4.5.3 本実験 (1) 内容 PORTB のビット 0 に接続された押しボタンスイッチを押すたびに ( 押したときに 1, 押さないときに 0 とする ),8 個の LED の表示がカウントアップからカウントダウンへまたはカウントダウンからカウントアップへ切り替わるプログラムを次の 2 通りの方法で作成せよ. 但し, カウントは 3 秒間に1 回ずつ行うこと. また 8 個の LED は PORTC に接続すること. < 方法 A 割り込みを用いない方法 > プログラム中でスイッチが押されているか否かを判定し, 押されている時にカウントの向きを切り替える. < 方法 B 割り込みを用いる方法 > スイッチが押された時に割り込みが発生し, 割り込み処理の中でカウントの向きを切り替える. なお表示は,0FFh から更に1だけカウントアップすると自動的に 00h に戻る. また3 秒のタイマーは予備 (2) 手順 先ず実験の手順 (S1) から (S4) までの実験計画書を作成して指導教員に確認して貰うこと. 確認後許可 を得てから実験計画書に基づいて (S5) と (S6) を実行する. 18

(3) 実験項目及び結果のまとめ 割り込みを用いた場合と用いない場合について, 下記の 5 通りの場合について実験を行なった結果を グラフにまとめる. (ⅰ) 押しボタンを 1 秒間押した後 10 秒間離す操作を10 回繰り返した時, 加算と減算が切り替え られた回数 (ⅱ) 2 秒間 (ⅲ) 3 秒間 (ⅳ) 4 秒間 (ⅴ) 5 秒間 (4) 考察 (ⅰ) 割り込みを用いない方法 の実験結果に基づいて, 押しボタンを押す時間を変えたときに加算と減算が切り替えられる回数が変化する理由について考察せよ. (ⅱ) 割り込みを用いる方法 について,(ⅰ) と同様に変化する理由を考察せよ. 参考文献 [1] 角山正博, 佐藤栄一 : コンピュータの基礎, 青山社,2013. [2] 後閑哲也 :PIC マイコンではじめる作って遊べるロボット工作, 技術評論社,2004. [3]PIC16F87X データシート, マイクロチップ テクノロジ ジャパン ( 株 ). http://ww1.microchip.com/downloads/jp/devicedoc/30292a_jp.pdf [4]MPLAB ICD 2 インサーキットデバッガユーザーズガイド, マイクロチップ テクノロジ ジャパン ( 株 ). http://www.microchip.jp/docs/ds51331a_jp.pdf [5] 福本聡, 岩崎一彦, コンピュータアーキテクチャ, 昭晃堂,2005. 19

付録 付録 1 PIC のメモリマップとレジスタ (1) メモリマッププログラムメモリとデータメモリには予め用途が割り当てられているアドレスがある. アドレスと用途の関係を図 A.1 のメモリマップに示す. プログラムメモリはアドレス0000hから 1FFFh(hは16 進数であることを示す ) までの8kワードある. このうちの 0000h にはリセットが発生した時に実行される命令が格納される. これをリセットベクタという. また 0004h には割り込みが発生した時に実行される命令が格納され, これを割り込みベクタという. ユーザプログラムはアドレス 0005h 以降に格納する. データメモリはバンクと呼ばれる 3 つの部分に分かれており,128バイトのバンクが 2 個と 112バイトのバンクが 1 個ある. データメモリは, アドレスの先頭部分をシステムで使用するため, バンク 0は20h から, バンク 1はA0h から, またバンク 2は110hからユーザが使用できる. プログラムメモリ データメモリ 0000h リセットベクタ 00h INDF 80h INDF 100h INDF 01h 81h OPTION 02h 0004h 割込みベクタ 03h STATUS 83h STATUS 103h STATUS 0005h 04h 84h 05h PORTA 85h TRISA 06h PORTB 86h TRISB 07h PORTC 87h TRISC 03FFh 0Bh INTCON 8Bh INTCON 10Bh INTCON ユーザプログラム 20h ユーザ A0h ユーザ 110h ユーザ エリア エリア エリア 07FFh 16Fh 7Fh FFh 1FFFh バンク 0 バンク 1 バンク 2 図 A.1 プログラムメモリとデータメモリのメモリマップ (2) 特殊機能レジスタ (SFR) PIC には特殊機能レジスタ (Special Function Register) と呼ばれるいくつかのレジスタがあり, これらはデータメモリの先頭部分に置かれている. この実験では, 次の 3 個の特殊機能レジスタを使用する. (ⅰ)STATUS レジスタ下の表に示すように, どのバンクからも同じ STATUS レジスタにアクセスできる. 20

バンク 0 バンク 1 バンク 2 名称 STATUS STATUS STATUS アドレス 03h 83h 103h STATUS レジスタの各ビットの機能を次の表に示す. Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 IRP RP1 RP0 ^TO ^PD Z DC C ここでは,STATUS レジスタの Bit6,Bit5, 及び Bit2 と Bit0 を使用する. Bit6と Bit5 はバンクを切り替える時に使用し, 下の表に示す値に設定してバンクを切り替える. Bit6 Bit5 バンク 0 0 バンク 0 0 1 バンク1 1 0 バンク2 Bit2 と Bit0 はフラグレジスタである. 詳細はコンピュータアークテクチャのテキスト中のフラグレジスタを 参照すること. なお,Bit1 の DC フラグは使用しない. Bit2 Z ゼロフラグ Bit0 C キャリフラグ (ⅱ)PORTB 及びPORTCレジスタ PORTB とPORTC は入力または出力に使用するデータメモリである. 下の表に示すように,2 つのポート レジスタはバンク0に割り当てられている. バンク 0 名称 PORTB PORTC アドレス 06h 07h 各ポートレジスタ ( ポートと呼ぶ ) のビットはそれぞれ RB0~RB7 及び RC0~RC7の各ピンに対応している. 入力モードの場合には, ポートから入力することによって該当するピンの状態 (1か0) を知る事ができる. 出力モードの場合には, ポートのビットを1または0にすることによって該当するピンの出力を1または0に設定することができる. なお, 入力モードにするか出力モードにするかは, 次に説明するTRISB 及びTRISCレジスタで指定する. 21

(ⅲ)TRISB 及びTRISCレジスタ各レジスタはバンク1に割り当てられている. バンク 1 名称 TRISB TRISC アドレス 86h 87h 各ビットはそれぞれのポートに対応する IC ピンの入出力モードを設定する. 各ビットの値とピンのモー ド ( 入出力 ) の対応は以下のようになっている. ビットの値 モード 0 出力モード 1 入力モード なお, 使わないポートは安全のために 1 をセットしておくこと. (ⅳ)INTCON レジスタ どのバンクからも同じ INTCONレジスタにアクセスできる. このレジスタは8ビットで構成され 割 込み制御のために使用する. 各ビットは以下のようになっている. Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 GIE EEIE TOIE INTE RBIE TOIF INTF RBIF この実験で使用する INTCON レジスタの各ビットの機能を次の表に示す. ビット 名称 機能 Bit7 Bit4 Bit1 GIE INTE INTF グローバル割込みイネーブルビット 1= 全てのマスクされていない割込み発生を許可する 0= 全ての割込み発生を禁止する RB0/INT 割込みイネーブルビット 1=RB0/INT 割込みを許可する 0=RB0/INT 割込みを禁止する RB0/INT 割込みフラグビット 1=RB0/INT 割込みが発生した ( ソフトウェアでクリア要 ) 0=RB0/INT 割込みが発生していない 付録 2 PIC の命令 8 ビット PIC マイコンは 35 個の命令を持っている. ここでは, コンピュータアーキテクチャの授業で 説明する 32 個の命令を使ってプログラムを作成する. 命令の一覧を次の表に示す. 22

表 A.1 PIC の命令 グループデ タ転送命令演算命令分岐命令 サブグループニューモニック 働き フラグサイクル数 MOVLW k 定数 k W 1 CLRW 0 W Z 1 CLRF f 0 f Z 1 なし BCF f,b fのbビット目を0にクリアする 1 BSF f,b fのbビット目を1にセットする 1 MOVF f,d d=0 ならf W,d=1ならf f Z 1 MOVWF f W f 1 ADDLW k 定数 k+w W C,DC,Z 1 ADDWF f,d d=0 なら W+f W,d=1 なら W+ f f C,DC,Z 1 算術演算命令論理演算命令ローテイト演算命令無条件分岐命令条件分岐命令 INCF f,d SUBLW k SUBWF f,d DECF f,d d=0 なら f+1 W,d=1 なら f+1 f 定数 k-w W d=0 なら f-w W,d=1 ならf-W f d=0 なら f-1 W,d=1 なら f-1 f Z C,DC,Z C,DC,Z Z 1 1 1 1 ANDLW k 定数 k AND W W Z 1 ANDWF f,d d=0 なら W AND f W,d=1 ならW AND f f Z 1 IORLW k 定数 k OR W W Z 1 IORWF f,d d=0 なら W OR f W,d=1 ならW OR f f Z 1 COMF f,d d=0 なら f W,d=1 なら f f Z 1 XORLW k 定数 k W W Z 1 XORWF f,d d=0なら W f W,d=1なら W f W Z 1 RLF f,d d=0ならfの1ビット左シフト W, C 1 d=1ならfの1ビット左シフト f RRF f,d d=0ならfの1ビット右シフト W, C 1 d=1ならfの1ビット右シフト f GOTO k 定数 k 番地へ分岐 2 INCFSZ f,d INCFと同じ処理, 結果が0 なら次の命令をスキップ DECFSZ f,d DECFと同じ処理, 結果が0なら次の命令をスキップ 1(2) 2(2) BTFSC f,b BTFSS f,b f のbビット目が 0なら次の命令をスキップ f のbビット目が1なら次の命令をスキップ 1(2) 1(2) 23

サブルーチ ン命令 CALL k アドレス kのサブルーチンに分岐 2 RETURN サブルーチンから元のプログラムに戻る. 2 割り込み命 令 RETURNFIE 割り込みを許可して戻る. 2 制 NOP 何も処理しない. 1 御命 なし SLEEP CPU が動作を停止し, 低電力モードに入る. 令 ( 注 1) オペランドのfはデータメモリのアドレス,d は格納先の指定 (0:W レジスタ,1: データメモリ ),b はビット位置 (0~7),k はリテラル ( 定数データ ) を表す. ( 注 2) フラグ欄にC, DC, Zなどの記載があるものは, その命令の実行によって,STATUS レジスタ内の対応するフラグが影響を受けることを示す. 詳しくはコンピュータアーキテクチャのテキストを参照すること. なお, ここでは DC フラグを使用しない. ( 注 3) サイクル数は命令の実行時間を表す.1サイクルは 4クロック周期である. PIC には, この表の命令の他に次の 3 個の命令がある. (ⅰ)RETURNLW (ⅱ)SWAP (ⅲ)CLRWDT ここで用いた命令のグループはコンピュータアーキテクチャのテキストに従っており, マイクロチッ プ テクノロジ ジャパン ( 株 ) のグループの分け方と異なっているので注意すること. 付録 3 アセンブリプログラムの作り方 アセンブリプログラムは擬似命令, ニューモニック, ラベル, 及びコメントを用いて記述する. 擬似命令には次の表に示す 6 種類があり,PIC の設定やアセンブラに対する指示を行う. 表 A.2 擬似命令 擬似命令 CONFIG INCLUDE LIST ORG EQU END 内容コンフィギュレーションビットの設定他のソースファイルの読み込み使用するPICの型名を指定プログラム開始番地の指定アドレスに名前をつけるソースコードの終わりの宣言 CONFIG の先頭に _( アンダーバー ) を 2 個続け ること ( 間にスペースを入れない. 全角では ないので注意 ) 24

ニューモニックは表 A.1 に示す PIC の命令である. ラベルはデータメモリやプログラムメモリのアドレスにつける名前であり, ラベルを設定することによって, 直接アドレスを指定する代わりに名前を使うことが出来る. ラベルの書き方を次に示す. ラベルは行の先頭からはじめる.1 個以上の空白またはTABを記入してからニューモニックを書く. コメントは, 人間がプログラムを理解し易くするための情報であり, アセンブラでは無視される. コメントの書き方を次に示す. コメントは ; で始める. 行のどこから始まっても良い. アセンブリプログラムの例を示す. リスト A.1 は入力ポートのデータを出力ポートに出す PIC のアセ ンブリプログラムである. リスト A.1 入力ポートのデータを出力ポートに出力するプログラム ;PIC の設定 INCLUDE P16F876A.INC (1) LIST P=PIC16F876A CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF & _DEBUG_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF ; ラベルの定義と初期設定 PORTB EQU 06h (2) ORG 00h GOTO MAIN ORG 04h GOTO MAIN ; パワーオンリセット ; 割り込みベクタ ; メインルーチン MAIN BSF STATUS,RP0 ;BANK1 にする (3) MOVLW 0FFh MOVWF TRISB MOVLW 00h MOVWF TRISC BCF OPTION_REG,7 BCF STATUS,RP0 MOVF PORTB,0 MOVWF (07h) SLEEP END ; 入力モード ;PORTB を設定 ; 出力モード ;PORTC を設定 ;RB PULL UP 有効 ;BANK0 にする ; 入力ポートの値を Wレジスタに格納 ;Wレジスタの値をアドレス 07h( 出力ポート C) に出力 ; 停止 ; プログラムの終了 25

プログラムは大きく分けて,(1)PIC の設定,(2) ラベルの定義と初期設定, 及び (3) メインルーチンの3つの部分からなっている. (1)PICの設定 ;PIC の設定 と書かれた部分はコメントであり, 人間がプログラムを理解しやすくするための情報である. アセンブラでは無視される. 次の 3 行は擬似命令を使って, 使用する PIC の型名と PIC の詳しい設定を行っている. なお, この部分は, 当面リスト1の値をそのまま使用し, 使い方に慣れたら, マニュアルを見て詳細な設定をすればよい. (2) ラベルの定義と初期設定この部分では擬似命令を使用してデータメモリのアドレスに名前を設定し, ついで擬似命令 ORG を用いてリセットベクタと割り込みベクタの設定を行う. 先ず擬似命令 EQU を用いて入力ポートのアドレスに名前 (PORTB) をつける. またリスト1では, 常にメインプログラムが実行されるため, 両方のベクタともメインルーチンに分岐する命令が入っている. (3) メインルーチンメインルーチンではラベル, ニューモニック, 及びコメントを用いて,1 行毎に下の囲みのようにプログラムを記述する. 例は, リスト A.1 のメインルーチンの 1 行目を取り出したものである. なお, 各欄は 1 個以上の空白で区切る. ラベルは, この行に書かれた命令が格納されるプログラムメモリのアドレスに付けられた名前であり, 分岐命令の分岐先として使用する. なお, ラベルがない場合は 1 個以上の空白をあけてニューモニックを記述する. ラベルニューモニックオペランドコメント MAIN BSF STATUS, RP0 ;BANK1 にするメインルーチンでは, 先ずデータメモリをバンク1にして入出力ポートの各ビットのモードを設定する. 次にデータメモリをバンク0に変えて, 入力ポートのデータを W レジスタに格納した後出力ポートに出す. 入力ポートにはラベル PORTB を使い, 出力ポートはアドレス (07h) を直接指定している. ついで SLEEP 命令を実行して PIC は動作を停止する. 最後に擬似命令 END でソースコードの記述を終わる. なお, 各行の働きは右側のコメントを参照すること. アセンブリプログラムを書くときのその他の注意を次に示す. ( その他の注意 ) (1) コメントを用いて, プログラムの名前や働きを記述する. わかりやすいプログラムを作るためには, 上手にコメントを使うことが重要である. ( 注 3) ( 注 4) 1 行は255 文字以下 (2) 括弧で囲んだ 16 進数は, この 16 進数をアドレスとするデータメモリの内容を表す. ( 注 5) それぞれの項は1 個以上のスペースで分離する (3) プログラム中の大文字と小文字は区別されない. 26

ロボティクスコース実験 Ⅰ 組込みプログラミング Ⅰ, Ⅱ の成績評価 評価方法実験態度と実験レポートを評価する 1 実験態度 (10 点 ) 2 実験レポート (90 点 ) 実験態度のルーブリック A (10 点 ) B (7 点 ) C (4 点 ) D (0 点 ) 実験態度 整然と実験を進行し 周囲への気配りを怠らなかった 安全にも配慮し 後片付けや清掃をしっかり行った 概ね整然と実験を進行した 十分で学生は雑然と実験を行い 周囲へないにせよ 周囲への気配りや安の気配りや安全への配慮がなかっ実験を最後まで行わなかった 全への配慮があった 指摘を受けるた 後片付けや清掃は指摘されてもと 後片付けや清掃を行った 十分に行わなかった 加点要素 減点要素 事前の情報収集や学習を十分に行い それを実験に活かした (+2) 授業準備 片付けなどを常に自主的に行った (+2) 学生間の教え 学びを誘発するなどのリーダーシップが顕著にみられ教員の指示をほとんど聞いていなかった (-2) 他の学生の作業を妨害した (-2) 教員や他の学生に敬意を払わない行動が顕著であった (-2) 実験レポートのルーブリック各レポートを30 点満点で評価する ( 実験 1と実験 2は必須 ) A ( 配分 :10) B ( 配分 :7) C ( 配分 :5) D ( 配分 :0) 体裁表紙があり, 題目, 氏名, 実験日が全表紙があるが, 題目, 氏名, 実験日表紙があるが, 題目, 氏名, 実験日表紙があるが, 題目, 氏名, 実験日 (3 点 ) て記述されている. のうち1つが記述されていない. のうち2つが記述されていない. が記述されていない. 序論 実験方法 結果 考察 参考文構成序論 実験方法 結果 考察 参考文序論 実験方法 結果 考察 参考文序論 実験方法 結果 考察 参考文献のうち3つ以上が記述されていな (3 点 ) 献の全て記述されている. 献のうち1つが記述されていない. 献のうち2つが記述されていない. い. 文章誤字脱字がなく, 文章も正しく書かれ誤字脱字や, 文章が正しく書かれて誤字脱字や, 文章が正しく書かれて誤字脱字や, 文章が正しく書かれて (3 点 ) ている. いないところが数ヶ所ある. いない箇所が多くある. いない箇所がかなり多くある. 実験の目的と実験の背景が記述され実験の目的と実験の背景が記述され序論実験の目的とそれを意識した実験の実験の目的と実験の背景のうち, 記ているが, その間に関連性に不適切ているが, 不適切なところがかなりあ (3 点 ) 背景が適切に記述されている述されていないものがある. なところが少しある. る. 実験方法 (3 点 ) 結果 (7.5 点 ) 考察 (7.5 点 ) 実験方法 ( 実験計画書 ) が正しく記述されている. 実験器具の名称やメーカーがきちんと記述されてる. 実験結果が正しい書式でグラフや表にまとめられている. 実験結果の要点を文章で正しく記述している. 実験誤差を考慮し, 複数回の実験結果を記述している 目的を意識ながら実験結果について科学的な根拠 分析を行い, 論理的に考察している. 問題点がある場合には, 改善策が具体的に記述されている. 課題に対する正しい回答が記述されている. 実験方法や実験器具について正しく記述されていないところが数ヶ所ある. 実験結果をまとめたグラフや表や要点の記述, 実験誤差が全て記述されているが, 不適切なところが数ヶ所見られる. 目的を意識ながら実験結果を考察しているが, 論理的な考察が不十分である. 問題点がある場合の改善策が適切に記述されていない. 課題に対して回答が記述されているが, 不適切なところが数ヶ所見られる. 実験方法や実験器具について正しく記述されていないところが多くある. 実験結果をまとめたグラフや表や要点の記述, 実験誤差が全て記述されているが, 不適切なところが多く見られる. 実験結果を考察しているが, 論理的な考察がないか, 間違っている. 問題点がある場合の改善策が間違っている. 課題に対して回答が記述されているが, 不適切なところが多く見られる. 実験方法や実験器具のうち, 記述されていないものがある. 実験結果をまとめたグラフや表や要点の記述, 実験誤差のうち記述されていないものがある. 実験結果を考察していない. 問題点がある場合の改善策が記述されていない. 課題に対して回答が記述されていない.