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

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

スライド 1

PowerPoint プレゼンテーション

untitled

Microsoft PowerPoint - 工学ゼミⅢLED1回_2018

スライド 1

前付(念).indd

スライド 1

スライド 1

,, ( ) 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 (

untitled

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

Microsoft Word - 4章.doc

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

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

スライド 1

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

スライド 1

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

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

3 1EEPROMElectrically Erasable PROM PROMProgrammable ROM 2 EEPROM 3

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

3 4 PIC

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

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

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

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

Microsoft Word - テキスト.docx

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

PowerPoint プレゼンテーション

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

卒 業 研 究 報 告

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

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

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

計算機アーキテクチャ

コンピュータ工学Ⅰ

コンピュータ工学Ⅰ

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

< F31312D8CA48B8695F18D908F FF28F918CB48D F>

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

-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

Microsoft Word - 実験4_FPGA実験2_2015

PowerPoint プレゼンテーション

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

ex04_2012.ppt

<4D F736F F D C835E838A EA993AE90A78CE CC8A4A94AD2E646F63>

PowerPoint プレゼンテーション

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

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

C に必要なコンピュータ知識 C はコンピュータの力を引き出せるように設計 コンピュータの知識が必要

スライド 1

スライド 1

CASL入門

命令セットの構成例 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

PIC12C5XX日本語データシート

PIC (, 2, 3 ) PIC ( 1, 2, 3 ) 1 2 (, 2 ) PIC ( 1, 2 ) 2.1 (p.34) define #define (define ) (p.61) 1 30 (RD 7 /P SP 7 ) 32 (V DD ) IC

出 アーキテクチャ 誰が 出 装置を制御するのか 1

本日の内容 導入 回路の作製 回路図から配線図へ ブレッドボードを使った試作回路の作製 マイコンへのプログラム書き込み GPIOの実験

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

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

スライド 1

PowerPoint プレゼンテーション

1. プログラム実行時の動作プログラムを実行すると以下のように動作します 1) NUCLEO-F401RE 上の LED LD2( 緑 ) が 200mSec 間隔で点滅します 2. プロジェクトの構成 2.1. プロジェクト F401N_BlinkLD2 の起動画面 TrueSTUDIO で作成し

問 2. タイミングチャート以下に示す VHDL コードで記述されている回路に関するタイミングチャートを完成させよ ) レジスタの動作 use IEEE.std_logic_64.all; entity RegN is generic (N : integer := 8 port ( CLK, EN

PowerPoint プレゼンテーション

1. LCD LS027B4DH01 について LS027B4DH01 は 400dot x 240dot のグラフィック LCD です 秋月電子通商で購入できます 外形サイズ : 62.8 x x 1.53mm LCD のフレキシブルケーブルの根元の部分はちょっと力を加えただけで表示が

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

ETCB Manual

2ALU 以下はデータ幅 4ビットの ALU の例 加算, 減算,AND,OR の4つの演算を実行する 実際のプロセッサの ALU は, もっと多種類の演算が可能 リスト 7-2 ALU の VHDL 記述 M use IEEE.STD_LOGIC_1164.ALL; 00 : 加算 use IEE

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

AKI-PIC16F877A開発キット (Ver1

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

PowerPoint プレゼンテーション

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

USB モジュール

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

スライド 1

本日の内容 導入 回路の作製 回路図から配線図へ ブレッドボードを使った試作回路の作製 マイコンへのプログラム書き込み GPIOの実験

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

CMOS リニアイメージセンサ用駆動回路 C CMOS リニアイメージセンサ S 等用 C は当社製 CMOSリニアイメージセンサ S 等用に開発された駆動回路です USB 2.0インターフェースを用いて C と PCを接続

Microsoft PowerPoint - 11Web.pptx

計算機アーキテクチャ

PowerPoint プレゼンテーション

Microsoft Word - マイコン実験 doc

スライド 1

DS41239C_JP

PIC24F Family Reference Manual Section 9 WDT

1. USB の VCP( 仮想 COM ポート ) について USB の VCP( 仮想 COM ポート ) は USB を非同期シリアル通信として使用するための USB のドライバです PC には VCP ドライバをインストールする必要があります USB の VCP( 仮想 COM ポート )

ex05_2012.pptx

ヒダピオ学習回路について

Microsoft Word - TC74HCT245AP_AF_J_P8_060201_.doc

ComputerArchitecture.ppt

主記憶の使われ方 システム領域 SP スタックポインタ システム用 スタック用 プログラム起動時に OS によって確 保される (SP が決められる ) プログラム用 メインルーチン プログラム領域 命令コードの列定数 変数用領域サブルーチン命令コードの列 先頭番地は リンク時に OS によって決め

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

プログラミング基礎

Microsoft PowerPoint pptx

CoIDE 用 F4D_VCP の説明 V /07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです Free の開発ツール CoIDE で作成した STM32F4 Discovery 用のプロジェクトです プログラムの開始番地は 0x

Transcription:

PIC アセンブラの基礎 年組番氏名 群馬県立利根実業高等学校 工業技術科情報技術コース

1.PICとは? PIC( ピック ) とは Peripheral Interface Controllerの頭文字から名付けられ 周辺インターフェイス コントローラを意味する 米国のMicrochip Technology 社により開発されたワンチップマイコン ( マイクロコントローラ ) 製品のシリーズ名称である 用途により数多くの種類が用意されている 今回使用するPIC16F84Aは 外形がDIP 型 18ピンのICである この中には 演算装置やプログラムを実装するメモリ タイマなどの周辺装置もすべて内蔵されており 数個の部品や電源を接続すれば 立派なワンチップマイコンとして動作する優れものである V d d O S C 1 O S C 2 M C L R ウクォロッッチクド発ッ振グタイマ プログラムメモリ 演算処理ユニット 入出力制御 データメモリ タイマ カウンタ V s s RB0 ~ R B 7 R A 0 ~ R A 4 PICシリーズは次の3つに大きく分類できる 1 命令長 12ビット : アーキテクチャのロー レンジ 2 命令長 14ビット : アーキテクチャのミッド レンジ 3 命令長 16ビット : アーキテクチャのハイエンド 今回使用する PIC16F84A は中位のミッド レンジシリーズに属する 特徴 1 低価格 (1 個 250 円 ~500 円程度 ) 2 低消費電力 ( 動作電圧 :2.5~5.5V 電流:30μA~2mA) 3 命令数が少ない (35 個の命令のみ ) 4 開発環境ソフト (MPLAB) がフリーソフトとして無料提供 5 PICライタ (5000 円 ~7000 円程度 ) 6 フラッシュプログラムメモリ搭載で何度もプログラムの書き換えが可能 (1000 回程度 ) 7 RISC( 縮小セット命令コンピュータ ) 設計 1 命令を1マシン サイクルで高速処理 8 1 命令の実行時間は 使用するOSC10MHzで 0.4μs - 1 -

2.PIC16F84Aの概要 2-1. 外観とピン配置 RA2 RA3 RA4/T0CKI MCLR VSS RB0/INT RB1 RB2 RB3 1 18 2 17 3 16 4 15 5 14 6 13 7 12 8 11 9 10 RA1 RA0 OSC1/CLKIN OSC2/CLKOUT VDD RB7 RB6 RB5 RB4 2-2. 内部の基本構成 Flash/ROM プログラムメモリ 1K 14 ビット 13 14 プログラムバス プログラムカウンタ 8 レベルスタック 13 ビット データバス 8 RA M ファイルレジスタ 68K 8 ビット 7 RA M アドレス データ EPPROM データメモリ 64K 8 ビット アドレス 5 直接アドレス MUX 8 7 間接アドレス SFRレジスタ データバス タイマ RA4/T0CKI 8 データバス ST ATUS レジスタ TMR0 命令解読 制御 タイミング生成 タイマ回路 ALU W レジスタ MUX データバス 8 I/O ポート RA0~RA3 RB1~RB7 RB0/INT OSC2/CLKOUT OSC1/CLKIN MCLR V DD V SS - 2 -

2-3プログラムメモリとスタック配置 1プログラムメモリプログラムメモリは プログラムを格納する専用メモリで フラッシュメモリで構成される フラッシュメモリは 電源を切ってもデータが消失しない不揮発性のメモリであり プログラムライタを使用して何度 (1000 回程度といわれている ) でも電気的にデータを書きかえることができる PIC16F84Aの場合 1 命令 14ビット幅で アドレス000h~3FFh 番地までの1kワードが格納できる CALL RETURN RETFIE,RETLW スタックメモリ (8レベルスタック ) ( ユーザーメモリ領域 ) プログラムカウンタ プログラムメモリ アドレス 000h 004h 3FFh PC<12:0> 13 スタックレベル 1 スタックレベル 8 リッセトベクタ 外部割り込みベクタ 14 ビット 2スタックメモリ (8レベルスタック) サブルーチンや割り込み発生時の戻り番地を記憶しておくメモリで レベル1~レベル8まである このため8 回のサブルーチンのネスティングが可能となる CALL 命実行時や割り込み発生時のPC 値に+ 1した値をスタックメモリに記憶しておき RETURN 命令やRETFIE 命令 RETLW 命令が実行されたときに その値をプログラムカウンタに呼び戻し サブルーチンや割り込み処理から抜け出す 3プログラムカウンタ (PC) プログラムの実行順序を管理するカウンタで プログラムメモリのアドレスを順次生成する プログラムカウンタが示すアドレスの順にプログラムは実行される 通常はプログラムがアドレス000h 番地 ( リセットベクタ ) からスタートするので PC=0の状態からスタートし PC+1 PCとすることによ順次プログラムメモリのアドレスを生成する スキップ時にはPC+2 Pとすることにより 1 命令ジャンプしたプログラムメモリのアドレスを生成する 割り込み時はプログラムがアドレス004h 番地 ( 外部割り込みベクタ ) からスタートするので PC=4の状態からスタートし PC+1 PCとすることにより順次プ - 3 -

ログラムメモリのアドレスを生成する 2-4. ファイルレジスタ ( データメモリ ) アドレス 00h 01h 02h 03h 04h 05h 06h 07h 08h 09h 0Ah 0Bh 0Ch 4Fh バンク0 INDF TMR0 PCL STATUS FSR PORTA PORTB EEDATA EEADR PCLATH INTCON 68 個の SRAM バンク 1 INDF OPTION PCL STATUS FSR TRISA TRISB EECON1 EECON2 PCLATH INTCON バンク 0 と同じ アドレス 80h 81h 82h 83h 84h 85h 86h 87h 88h 89h 8Ah 8Bh 8Ch CFh : 特殊機能レジスタ : 未使用 : 汎用レジスタ 8 ビット 8 ビット アドレス指定して使用するレジスタである PIC16F84A ではアドレス 00h~ 4Fh 番地までの80バイトまでアクセスできる ( ただし 07h 番地は未使用 ) また バンクを切り替えることによりアドレス80h~ 8Bh 番地にもアクセスできる ( た だし 87h 番地は未使用 ) アドレス 8Ch~ CFh 番地はバンク 0 にマップされているため アクセスできない 1 特殊機能レジスタ ( アドレス00h~0Bh 番地および80h~ 8Bh 番地 ) PICの動作を指定するための特別な役割を持つレジスタである よく使う特殊機能レジスタについては 後で説明する 2 汎用レジスタ ( アドレス0Ch~ 4Fh 番地 ) 変数データを扱う汎用データメモリ (SRAM) であり ユーザーが自由に使用で きるレジスタある 3バンクの切り替えについてバンク0 アドレス00h~4Fh 番地とアクセス可能 ( ただし アドレス07h 番地を除く ) バンク1 アドレス80h~8Bh 番地とアクセス可能 ( ただし アドレス87h 番地を除く ) - 4 -

バンク0 バンク1の切り替えはアドレス03h 番地のSTATUSレジスタのビット5(RP 0) に1を書き込むことにより行う バンク1 バンク0の切り替えはアドレス83h 番地のSTATUSレジスタのビット5(RP 0) に0を書き込むことにより行う パワーオンリセット後は STATUSレジスタのビット5( RP0) に0が書き込まれており バンク0となっている 2-5. 特殊機能レジスタよく使う特殊機能レジスタのみを説明する 2-5- 1.STATUS レジスタ STATUS レジスタの内容 ビット7 ビット6 ビット5 ビット4 ビット3 ビット2 ビット1 ビット0 IR P RP1 RP0 TO PD Z DC C 0 0 0 1 1 x x x x: 0 か 1 か不定 パワーオンリセット後の内容 よく使うビットについてのみ説明する RP1: バンク0とバンク1を切り替える時 0 RP0:RP1ビットが0であることを前提に RP0ビットを0にした時 バンク0を選択 RP0ビットを1にした時 バンク1を選択となり バンク0とバンク1を切り替えることができる 通常はバンク0が選択されている z:alu とW レジスタにより 演算を行った際 演算の結果が00000000の時 1 演算の結果が00000000 以外の時 0 になる DC:ALU とW レジスタにより 演算を行った際 演算の結果 4ビット目 ( ビット3) から桁上げがあった時 1 そうでないとき 0 演算の結果 4ビット目 ( ビット3) にボローがあった時 0 そうでないとき 1 になる C:ALU とW レジスタにより 演算を行った際 演算の結果 最上位ビット ( ビット7) から桁上げがあった時 1 そうでないとき 0 演算の結果 最上位ビット ( ビット7) にボローがあった時 0 そうでないとき 1 になる - 5 -

2-5- 2.TRIS A レジスタ TRISA レジスタの内容 ビット7 ビット6 ビット5 ビット4 ビット3 ビット2 ビット1 ビット0 - - - TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 - - - 1 1 1 1 1 -: メモリがないビット ( 読み出すと 0) パワーオンリセット後の内容 ポートRA0~ RA4を入力端子として使うのか出力端子としてつかうのかによって各ビットに1 0を書き込む TRISA0~ TRISA4はポートRA0~ RA4に対応している 入力端子として使う 1 出力端子として使う 0 たとえば TRISAレジスタに00000011を書き込めばポートRA0 RA1は入力端子 ポート RA2 RA3 RA4は出力端子として使うことになる ちなみにパワーオンリセット後は ポートRA0~RA4をすべて入力端子として使う設定となっている 2-5- 3.TRIS A レジスタ TRISB レジスタの内容 ビット7 ビット6 ビット5 ビット4 ビット3 ビット2 ビット1 ビット0 TRISB7 TRISB 6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 1 1 1 1 1 1 1 1 パワーオンリセット後の内容 ポートRB0~ RB7を入力端子として使うのか出力端子としてつかうのかによって各ビットに1 0を書き込む TRISB0~ TRISB7はポートRB0~ RB7に対応している 入力端子として使う 1 出力端子として使う 0 たとえば TRISBレジスタに11110000を書き込めばポートRB0 RB1 RB2 RB3は出力端子 ポートRB4 RB5 RB6 RB7は出力端子として使うことになる ちなみにパワーオンリセット後は ポートRB0~RB7をすべて入力端子として使う設定となっている 2-5- 4.PORTA レジスタ PORTA レジスタの内容 ビット7 ビット6 ビット5 ビット4 ビット3 ビット2 ビット1 ビット0 - - - RA4 RA3 RA2 RA1 RA0 - - - x x x x x -: メモリがないビット ( 読み出すと 0) x:0 か 1 か不定 パワーオンリセット後の内容 ポート RA0~ RA4 を入力端子として使っている時は 各ポートからの入力信号の有無に - 6 -

より1 0が各ビットに書き込まれる 入力信号あり 1 入力信号なし 0 ポートRA0~ RA4を出力端子として使っている時は 各ビットに書き込んだ1 0により 出力信号が各ポートから送り出される 1 出力信号あり 0 出力信号なし 2-5- 5.PORTB レジスタ PORTB レジスタの内容 ビット7 ビット6 ビット5 ビット4 ビット3 ビット2 ビット1 ビット0 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 x x x x x x x x x:0 か 1 か不定 パワーオンリセット後の内容 ポート RB0~ RB7 を入力端子として使っている時は 各ポートからの入力信号の有無に より 1 0 が各ビットに書き込まれる 入力信号あり 1 入力信号なし 0 ポートRB0~ RB7を出力端子として使っている時は 各ビットに書き込んだ1 0により 出力信号が各ポートから送り出される 1 出力信号あり 0 出力信号なし 2-6.ALU と W レジスタ 定数 ( リテラル ) またはファイルレジスタの内容 ALU ファイルレジスタ W レジスタ 1ALU( Arithmetic Logic Unit) 算術論理演算装置である 各命令の指示に従って 各種レジスタやWレジスタの内 容との演算が行われる W レジスタと協調動作する - 7 -

2W レジスタ ( ワーキングレジスタ ) 演算結果などを一時的に格納する演算用レジスタである 各種レジスタやALU W レジスタはデータが取り出された後も別のデータが格納されるまで前のデータを保持している 3.PIC16F84A のアセンブラ命令 3-1. 命令の種類 PIC16F84Aは次の35 個の命令を持つ ( 詳細は一覧表参照 ) 転送命令 MOVF MOVWF MOVLW 演算命令 算術演算 ADDWF ADDLW SUBWF SUBLW INCF DECF 論理演算 COMF ANDWF ANDLW IORWF IORLW XORWF XORLW ローテイト演算 RLF RRF ビット演算 BCF BSF その他 CLRF CLRW SWAPF 分岐命令 条件分岐 INCFSZ DECFSZ BTFSC BTFSS 無条件分岐 GOTO サブルーチン命令 CALL RETFIE RETLW RETURN その他 NOP CLRWDT SLEEP 3-2. 擬似命令 アセンブラに対する制御命令で アセンブル時に機械語に変換されない LIST 命令 : 使用するマイコンの種類を指定する INCLUDE 命令 : 指定したファイルとソースプログラムを取り込む CONFIG 命令 : マイコンで使用する特殊機能を設定する EQU 命令 : 数値やアドレス値をラベルに割り当てる ORG 命令 : 機械語を格納するプログラムメモリの先頭番地を指定す END 命令 : ソースプログラムの終了を示す 3-2. 命令の形式アセンブラ命令は ラベル ニーモニック オペランド コメントで構成される ラベルニーモニックオペランドコメント 1 ラベル : ユーザーが必要に応じてファイルレジスタやプログラムメモリに対する アドレス ( 番地 ) の代わりとなるラベルを記述する - 8 -

記述ルール 行の先頭より記述する 英文字またはアンダーバー (_) で始まる半角 32 文字以内の英数文字で記述する 2 ニーモニック : 命令を記述する 記述ルール ラベルとの間に1 文字以上のスペースかコロン (:) を記述する ラベルを省略した場合は 行の先頭から1 文字以上のスペースを記述する 3 オペランド : 命令の対象となるファイルレジスタのアドレス (f) 結果格納先指定子 (d) 8ビットファイルレジスタ内のビット番号 (b) 定数 (k) を記述する 命令によっては必要ない場合もある 記述ルール f: ファイルレジスタのアドレス00h~ 4Fhおよび80h~ 8Bhまたはレジスタ名を記述する d: 結果の格納先がWレジスタの場合 0を記述 ファイルレジスタの場合は 1を記述する b:8ビットファイルレジスタ内のビット番号 0~ 7を記述する k:8ビットで表現できる定数 ( リテラル )0~255を記述する 4 コメント ( 注釈 ): 必要に応じてコメント ( 注釈 ) を記述する 記述ルール セミコロン(;) を記述すると それ以降の記述はすべて命令とは無関係となり アセンブル時は無視される 命令の説明などを記述するときに使う 3-4. 数値の記述プログラムレジスタやファイルレジスタのアドレス値 定数をプログラム中で記述す る時には 次に示す書式のいずれかとする 通常 16 進数で記述されることが多い 記述形式 書式 記述例 (10 進数の10を記述する場合 ) 10 進数 D' 値 ' D'10' 2 進数 B' 値 ' B'00001010' 8 進数 O' 値 ' O'12' 16 進数 H' 値 ' H'0A' 値 H 0AH 0x 値 0x0A 今回は アドレス値と定数を区別するため アドレス値には値 H 定 数にはH' 値 ' を用いる - 9 -

- 10-3. 制作した LED 点滅制御ボード 1 2 3 4 5 6 7 8 9 18 17 16 15 13 12 11 10 14 RA2 RA3 RA4/ T0CKI MCLR VSS RB0 RB1 RB3 RB2 RB4 RB5 RB6 RB7 VDD OSC2/ CLKOUT OSC1/ CLKIN RA0 RA1 PIC16F84A IN OUT GND 78MO5 006P 9[V] S 0 S1 S2 47μF 16V 100μF 16V 330Ω 330Ω 330Ω 330Ω 330Ω 330Ω 330Ω 330Ω 330Ω 330Ω 330Ω 10kΩ 10kΩ LED1 LED2 LED3 LED4 LED5 LED6 LED7 LED8 LED9 LED10 OSC 10MHz (HS) LED0

5. 簡単なプログラムの理解 L E D を右図のように点灯させるプログラム RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 を作ろう 5-1. フローチャートを作ろう - 11 -

5-2. プログラムを書いてみよう ラベルニーモニックオペランドコメント - 12 -

5-3. 各命令を理解しよう 1 LIST P=PIC16F84A 2 INCLUDE "P16F84A.INC" 3 CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF 4 ORG 0 5 BSF STATUS,RP0 6 CLRF TRISB 7 BCF STATUS,RP0 8 CLRF PORTB 9 MOVLW H'55' 10 MOVWF PORTB 11 END - 13 -

5-4. タイマルーチンってなんだ? 先に作ったプログラムをもとにタイマルー RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 チンを使って右の 2 つの点灯状態を 1 秒間 隔で繰り返すプログラムを作ろう RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 タイマルーチンってなんだ? CNT1 EQU 0CH CNT2 EOU 0DH CNT3 EQU 0EH TIMER1 MOVLW H'3E' 0.1ms(0.0001s) タイマ MOVWF CNT1 LOOP1 NOP DECFSZ CNT1,1 GOTO LOOP1 RETURN TIMER2 MOVLW H'64' MOVWF CNT2 LOOP2 CALL TIMER1 DECFSZ CNT2,1 GOTO LOOP2 RETURN 10ms(0.01s) タイマ TIMER3 MOVLW H'64' MOVWF CNT3 LOOP3 CALL TIMER2 DECFSZ CNT3,1 GOTO LOOP3 RETURN 1s タイマ - 14 -

フローチャート - 15 -

プログラム LIST P=PIC16F84A INCLUDE "P16F84A.INC" CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF ラベルニーモニックオペランドコメント - 16 -

6. プログラミングに挑戦 6-1. 下図のように LE D を点灯させるプログラムを作ろう RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 フローチャート - 17 -

プログラム LIST P=PIC16F84A INCLUDE "P16F84A.INC" CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF ラベルニーモニックオペランドコメント - 18 -

6-2. ポートRA0と RA1も出力ポートに設定し 下図のようにLEDを点灯させるプロ グラムを作ろう RA1 RA0 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 ポートRA0と RA1を出力端子として使うにはどうしたらいいのかな? 考えてみよう フローチャート - 19 -

プログラム LIST P=PIC16F84A INCLUDE "P16F84A.INC" CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF ラベルニーモニックオペランドコメント - 20 -

6-3. 下図のように LE D を点灯させるプログラムを作ろう RA1 RA0 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 フローチャート - 21 -

プログラム LIST P=PIC16F84A INCLUDE "P16F84A.INC" CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF ラベルニーモニックオペランドコメント - 22 -

6-4. 全部点灯と全部消灯を 1 秒間隔で繰り返すプログラムを作ろう RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 フローチャート - 23 -

プログラム LIST P=PIC16F84A INCLUDE "P16F84A.INC" CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF ラベルニーモニックオペランドコメント - 24 -

6-5. 自分でどのように点灯や点滅させたいかを決め それを実現するプログラムを作ろう どのように点灯や点滅させたいかを考えてみよう フローチャート - 25 -

プログラム LIST P=PIC16F84A INCLUDE "P16F84A.INC" CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF ラベルニーモニックオペランドコメント - 26 -