スライド 1

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

スライド 1

PowerPoint プレゼンテーション

スライド 1

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

スライド 1

untitled

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

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

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

Microsoft Word - 電子回路工房MPLAB使い方 doc

計算機アーキテクチャ

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

Z...QXD (Page 1)

PowerPoint プレゼンテーション

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

Microsoft PowerPoint - 工学ゼミⅢLED1回_2018

WAGO PROFIBUS バスカプラ/コントローラと、QJ71PB92Dとのコンフィグレーションマニュアル

Studuino ライブラリ環境設定Windows編

-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

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

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

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

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

Welcome-Kit ~STM32L4-Nucleo~

AKI-PIC16F877A開発キット (Ver1

Studuinoライブラリ環境設定Mac編

コンピュータ工学Ⅰ

NJU72501 チャージポンプ内蔵 圧電用スイッチングドライバ 概要 NJU72501はチャージポンプ回路を内蔵し 最大で3V 入力から 18Vppで圧電サウンダを駆動することができます このチャージポンプ回路には1 倍 2 倍 3 倍昇圧切り替え機能を備えており 圧電サウンダの音量を変更すること

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

1 4 8 (DC) PWM.

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

A 既製のプロジェクトがある場合

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

MSP430 CCSv5 を使い Flash Memory 内容と version 情報を確認する方法 ( テクニック編 ) Rev: PIC Trout 今回は 下記の2 件について説明します 1) CCSv5 を使用して MSP430 の Flash Memory 内容を

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

コンピュータの仕組み(1)ハードウェア

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

, 1. x 2 1 = (x 1)(x + 1) x 3 1 = (x 1)(x 2 + x + 1). a 2 b 2 = (a b)(a + b) a 3 b 3 = (a b)(a 2 + ab + b 2 ) 2 2, 2.. x a b b 2. b {( 2 a } b )2 1 =

回路図 部品表 部品番号 型番 個数 U PIC6F823 I/ST (TSSOP 4pin) R 00Ω (/0W, 608) R2 - R9 360Ω (/0W, 608) 8 C μf (25V, 608) LED LN56RA CN ロープロファイルピンソケット CN2 ロープロファイルピン

3 ( 9 ) ( 13 ) ( ) 4 ( ) (3379 ) ( ) 2 ( ) 5 33 ( 3 ) ( ) 6 10 () 7 ( 4 ) ( ) ( ) 8 3() 2 ( ) 9 81

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

Microsoft Word - テキスト.docx

ReviveUSB(web)

PowerPoint Presentation

ZVH_VIEWER

ディジタル回路 第1回 ガイダンス、CMOSの基本回路

Microsoft Word - tool01.doc

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

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

EB-RL7023+SB/D2

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

ICS_Japan アプリケーションノート ISO メッセージ送受信基礎編 Rev File Name: アプリケーションノート _ISO15765_2_ メッセージ送受信 _ 基礎編 _A00.docx Intrepid Control Systems, Inc. アプリ

UID S307-NDEF

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

TWE-Lite R 取扱説明書

PowerPoint プレゼンテーション

10_Link3_manual


DWR-R02DN Updater 取扱説明書 発 :2015/10/30

改訂履歴 改訂日付 改訂内容 2014/11/01 初版発行 2017/01/16 Studuino web サイトリニューアルに伴う改訂 2017/04/14 Studuino web サイトリニューアルに伴う改訂 2018/01/22 ソフトウェア OS のバージョンアップに伴う改訂

MB-LCD1 アセンブラ・ライブラリによる制御

Nios II Flash Programmer ユーザ・ガイド

ターゲット項目の設定について

Microsoft Word - 実験4_FPGA実験2_2015

< 付録A: ソフトウェアアップデート >

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

TDK Equivalent Circuit Model Library

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

実習を行う上での心構えについて

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

Transcription:

2. 転送命令を学ぼう 2004 年 8 月に本講義ノートを Web にアップして以来, とても多くの方の訪問を受けてきました. 内容が一部古くなっていたので,2012 年 5 月時点の情報に書き改めました. 主な変更点は以下の通りです. 第 0 章に本講座の準備のための章を設け, 以下の更新をしました. 1. プログラム開発環境 (MPLAB IDE) を v8.84 に更新しました. 2012 年 5 月時点での最新バージョンは MPLAB X IDE v1.10 ですが, アセンブラの勉強のためには, 旧バージョンの v8.84 が良さそうです.( 筆者が X を使いこなしていないこともあります.) 2. ブレッドボード上に回路を製作し, その詳細を記しました. ハンダ付けをほとんど必要とせずにマイコン回路を製作できます. 3. 部品を全てネットで購入して, その仕様と入手先を記しました. 入手が容易な部品ばかりでマイコン回路を製作しました. 4.In-Circuit Debugger/Programmer に PICkit3 を用いました. ブレッドボード上のマイコンへのプログラミングに PICkit3 を使用した例を記しました. 1

; Load of Literal to Working Register まず, このソースファイルを打ち込んで下さい. MPLAB IDE v8.84 の立ち上げ方,Project File の作り方, アセンブラのソースファイルの作り方, ビルドの仕方, シミュレーションの仕方は第 0 章を参照してください. 注意 CONFIG の前のアンダーバーは 2 つあります. これは W レジスタに Literarl( リテラル, 文字 ) を転送させるプログラムです. 最初に 2 進数の 10011010 を転送し, 次に 16 進数の AB を転送し, 最後に 10 進数の 255 を転送します. は Move Literal to Working register の略です. B'10011010' ; Binary number 0xAB ; Hexadecimal number D'255' ; Decimal number END 2

シミュレーションの仕方プログラムを打ち込み終わったら,Debugger Select Tool MPLAB SIM Project Make と選択すると, プログラムに文法上の間違いがなければ,BUILD SUCCEEDED というメッセージが出ます. 次に View Special Function Registers を選択して下さい. 下図のようにレジスタ群の内容を示すウィンドウが開かれます. 図示の位置にカーソルを持ってきて右クリックすると, レジスタ内容の表示型を Hex(16 進数 ),Binary(2 進数 ),Decimal(10 進数 ),Char( 文字型 ) の中から選択できます. カーソルをここに持ってきて右クリック 3

Decimal と Binary を表示 W レジスタ内の数字が表示されています. ファンクションキーの F7 を押して, プログラムを一行ずつ実行して, WREG (W レジスタ ) の中の数字がどう書き換えられていくかを確認してください. 4

8 データバスPIC16F84A の Data Sheet の BLOCK DIAGRAM の抜粋です. プログラムメモリ 13 プログラムカウンタ 14 命令レジスタ 8レベルスタック 13ビット 5 直接アドレス ファイルレジスタ 8 ビット 7 MUX 68 7 間接アドレス FSR レジスタ STATUS レジスタ 8 命令デコーダコントローラ 打ち込んだプログラムはプログラムメモリに格納されます. マイコンの電源を入れると, プログラムメモリから命令が順次読み出され, 実行されていきます. 制御信号RA4~RA0 RB7~RB0 MUX ALU W レジスタ 入出力ポート 8 5

8 データバスPIC16F84A の Data Sheet の BLOCK DIAGRAM の抜粋です. プログラムメモリ 13 プログラムカウンタ 14 命令レジスタ 8レベルスタック 13ビット 5 直接アドレス ファイルレジスタ 8 ビット 7 MUX 68 7 間接アドレス FSR レジスタ STATUS レジスタ 8 命令デコーダコントローラ マイコンの中には W レジスタ (Working Register) という 8 ビットの数字を記憶しておく場所があります. 様々な処理のための 作業用レジスタ という意味です. 制御信号RA4~RA0 RB7~RB0 MUX ALU W レジスタ 入出力ポート 8 6

8 データバス B 10011010 の実行 プログラムメモリ 13 プログラムカウンタ 14 命令レジスタ 8レベルスタック 13ビット 5 直接アドレス ファイルレジスタ 8 ビット 7 MUX 68 7 間接アドレス FSR レジスタ STATUS レジスタ 8 命令デコーダコントローラ プログラムがスタートすると最初に がプログラムメモリから命令デコーダに読み込まれ, ここで命令の解読, コントローラにより実行されま す. の次の 10011010 が W レジスタに転送されます. 制御信号RA4~RA0 RB7~RB0 MUX ALU W レジスタ 入出力ポート 8 7

; Load of Literal to Working Register Configuration 設定です. マイコンのシステムクロックを設定します. END B'10011010' 0xAB D'255' Microchip の Web ページからダウンロードできる PIC16F84A の Data Sheet の 21 ページに Configuration の説明があります. OSC: Oscillator RC: Resistor/Capacitor 内蔵の発振回路,4MHz 程度まで発信周波数は不安定 HS: High Speed Crystal/Resonator 3.5MHz 以上で推奨本回路では 10MHz のセラミック発振子を外付けしてあるので,HS 設定とする. XT: Crystal/Resonator 4 MHz 以下 LP: Low Power Crystal 低消費電力, 200kHz 以下 WDT: Watch Dog Timer PWRTE: Power up Timer Enable CP: Code Protection 本資料の使い方の範囲内では全て 8 オフで差し支えない.

; Load of Literal to Working Register B'10011010' 0xAB D'255' 現実のマイコンでは電源を入れるとここから始まります. へジャンプする. END 9

; Load of Literal to Working Register w レジスタに 100110101 という数を転送せよという命令です. W レジスタ B'10011010' 10011010 0xAB END D'255' B 10011010 2 進数は = D 154 10 進数 = H 9A 16 進数です. 表現が違うだけでどれも同じ数字です. 10

; Load of Literal to Working Register w レジスタに AB という数を転送せよという命令です. W レジスタ B'10011010' 10101011 0xAB D'255' B 10101011 2 進表現 = D 171 10 進表現 = H AB 16 進表現 END 11

; Load of Literal to Working Register w レジスタに 255 という数を転送せよという命令です. W レジスタ B'10011010' 11111111 0xAB D'255' B 11111111 2 進表現 = D 255 10 進表現 = H FF 16 進表現 END 12

; Load of Literal to Working Register B'10011010' 0xAB D'255' W レジスタ 11111111 へジャンプする. END 13

次に, ワーキング (W) レジスタと ファイルレジスタ間でのデータの やりとりを体験してください. 14

8 データバス1024 14 ビット プログラムメモリ ( フラッシュメモリ ) 13 プログラムカウンタ (PC) 14 命令レジスタ 8レベルスタック 13ビット 5 直接アドレス ファイルレジスタ 8 ビット 7 MUX 68 7 間接アドレス FSR レジスタ STATUS レジスタ 8 命令デコーダコントローラ マイコンの中にはファイルレジスタ (File Register) という 8 ビットの数字を記憶できるレジスタが 68 個あります. 制御信号RA4~RA0 RB7~RB0 PIC16F84A の構成 MUX ALU Wレジスタ入出力ポート 8 15

0C~4F の番地を持つ 68 個の 8 ビットレジスタがある. 8 ビットの数字を 68 個までしまっておける 引き出し のようなもの. データの 一時保管所 のような意味です. 0x0C 0x4F ファイルレジスタ W レジスタはたった 1 個の 8 ビットレジスタからなる. w レジスタ 16

; Data from Working Register to File Register and vice versa このプログラムを打ち込んで下さい. MEM1 EQU 0x0C ;MEM1 at 0C MEM2 EQU 0x0C+1 ;MEM2 at 0D 0x9A ; '9A' to Working Register MOVWF MEM1 ; Move '9A' to MEM1 0x01 ; '01' to Working Register MOVWF MEM2 ; Move '01' to MEM2 MOVF MEM1,0 ; Load '9A' from MEM1 to W MOVF MEM2,0 ; Load '01' from MEM2 to W シミュレータでプログラムをステップ実行しながら,w, MEM1, MEM2 レジスタの中の数字がどう変わるか確認して下さい. END 17

MEM1, MEM2 の中の数字は,View File Registers により見ることができます. 0C 番地に MEM1 0D 番地に MEM2 18

; Data from Working Register to File Register and vice versa MEM1 EQU 0x0C ;MEM1 at 0C MEM2 EQU 0x0C+1 ;MEM2 at 0D 0x9A ; '9A' to Working Register 0C 番地のファイルレジスタに MEM1 という名前をつけ,0C+1 ( = 0D) 番地のファイルレジスタに MEM2 という名前を付けます. MOVWF MEM1 ; Move '9A' to MEM1 0x01 ; '01' to Working Register MOVWF MEM2 ; Move '01' to MEM2 MOVF MEM1,0 ; Load '9A' from MEM1 to W MOVF MEM2,0 ; Load '01' from MEM2 to W END 19

; Data from Working Register to File Register and vice versa MEM1 EQU 0x0C ;MEM1 at 0C MEM2 EQU 0x0C+1 ;MEM2 at 0D 電源を入れると の次から始まります. へジャンプする. 0x9A ; '9A' to Working Register MOVWF MEM1 ; Move '9A' to MEM1 0x01 ; '01' to Working Register MOVWF MEM2 ; Move '01' to MEM2 MOVF MEM1,0 ; Load '9A' from MEM1 to W MOVF MEM2,0 ; Load '01' from MEM2 to W END 20

; Data from Working Register to File Register and vice versa MEM1 EQU 0x0C MEM2 EQU 0x0C+1 MOVWF 0x9A MEM1 w レジスタに 100110101 という数を転送せよという命令 W レジスタ MOVWF MOVF MOVF 0x01 MEM2 MEM1,0 MEM2,0 10011010 END 21

; Data from Working Register to File Register and vice versa MEM1 EQU 0x0C MEM2 EQU 0x0C+1 MEM1 ファイルレジスタ 10011010 MOVWF MOVWF MOVF MOVF 0x9A MEM1 0x01 MEM2 MEM1,0 MEM2,0 w レジスタの内容をファイルレジスタの MEM1 に転送せよという命令です. MOVE W to F の略です. W レジスタ 10011010 END 22

; Data from Working Register to File Register and vice versa MEM1 EQU 0x0C MEM2 EQU 0x0C+1 MOVWF 0x9A MEM1 w レジスタに 00000001 という数を転送せよという命令 MEM1 ファイルレジスタ 10011010 W レジスタ MOVWF MOVF MOVF 0x01 MEM2 MEM1,0 MEM2,0 00000001 END 23

; Data from Working Register to File Register and vice versa CONFIG _HS_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF MEM1 EQU 0x0C MEM2 EQU 0x0C+1 MEM1 MEM2 ファイルレジスタ 10011010 00000001 MOVWF 0x9A MEM1 W レジスタ 0x01 MOVWF MOVF MOVF MEM2 MEM1,0 MEM2,0 w レジスタの内容をファイルレジスタの MEM2 に転送せよという命令 00000001 END 24

; Data from Working Register to File Register and vice versa MEM1 EQU 0x0C MEM2 EQU 0x0C+1 MEM1 MEM2 ファイルレジスタ 10011010 00000001 MOVWF 0x9A MEM1 W レジスタ 0x01 MOVWF MOVF MOVF MEM2 MEM1,0 MEM2,0 MEM1 の内容を w レジスタに転送せよという命令 10011010 MOVF f, d レジスタfの中身をdへ転送せよと言う命令 d = 0はWレジスタ END 25

; Data from Working Register to File Register and vice versa MEM1 EQU 0x0C MEM2 EQU 0x0C+1 MEM1 MEM2 ファイルレジスタ 10011010 00000001 MOVWF 0x9A MEM1 W レジスタ 0x01 MOVWF MEM2 00000001 MOVF MEM1,0 MOVF MEM2,0 MEM2の内容をw レジスタに転送せよという命令 END 26

; Data from Working Register to File Register and vice versa MEM1 EQU 0x0C MEM2 EQU 0x0C+1 MEM1 MEM2 ファイルレジスタ 10011010 00000001 MOVWF 0x9A MEM1 0x01 へジャンプする. W レジスタ MOVWF MEM2 00000001 MOVF MEM1,0 MOVF MEM2,0 END 27

演習問題 1.MEM1 に 0xAA,MEM2 に 0xBB を転送し, これらを交換するプログラムを作成せよ. 28

演習問題 1.MEM1 に 0xAA,MEM2 に 0xBB を転送し, これらを交換するプログラムを作成せよ. ; Problem 1 MEM1 EQU 0x0C ;MEM1 at 0C MEM2 EQU 0x0C+1 ;MEM2 at 0D MEM3 EQU 0x0C+2 ;MEM3 at 0E 0xAA ; AA' to Working Register MOVWF MEM1 ; Move AA' to MEM1 0xBB ; BB' to Working Register MOVWF MEM2 ; Move BB' to MEM2 MEM1 に 0xAA, MEM2 に 0xBB を転送 MOVF MEM1, 0 ;Load MEM1 to W MOVWF MEM3 ;Move W to MEM3 MOVF MEM2,0 ;Load MEM2 to W MOVWF MEM1 ;Move W to MEM1 MOVF MEM3,0 ;Load MEM3 to W MOVWF MEM2 ;Move W to MEM2 END MEM1の内容を一端 MEM3に転送し,MEM2 の内容をMEM1に移した後に,MEM3の内容を MEM2に転送 29

2004 年 8 月 30