スライド 1

Similar documents
スライド 1

スライド 1

PowerPoint プレゼンテーション

スライド 1

PowerPoint プレゼンテーション

スライド 1

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

3 1EEPROMElectrically Erasable PROM PROMProgrammable ROM 2 EEPROM 3

untitled

スライド 1

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

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

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

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

前付(念).indd

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

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

untitled

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

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

3 4 PIC

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

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

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

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

Microsoft Word - 4章.doc

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

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

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

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

スライド 1

卒 業 研 究 報 告

PowerPoint プレゼンテーション

Microsoft Word - テキスト.docx

ex04_2012.ppt

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

スライド 1

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

C言語によるPIC(16F88)プログラミング実習テキスト

39733a.fm

PowerPoint プレゼンテーション

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

Microsoft PowerPoint - 7.Arithmetic.ppt

1 8 Z80 Z GBA ASIC 2 WINDOWS C 1

<4D F736F F D C835E838A EA993AE90A78CE CC8A4A94AD2E646F63>

アナログ・接点変換器

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

- VHDL 演習 ( 組み合せ論理回路 ) 回路 半加算器 (half adder,fig.-) 全加算器を構成する要素である半加算器を作成する i) リスト - のコードを理解してから, コンパイル, ダウンロードする ii) 実験基板上のスイッチ W, が, の入力,LED, が, の出力とな

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

#define HOUR 0x04 #define DAY 0x05 #define WEEKDAY 0x06 #define MONTH 0x07 #define YEAR 0x08 #define CKOUT 0x0D #define CTRLT 0x0E // CLKOUT // TIMER

第117期報告書

main.dvi

PowerPoint Presentation

Microsoft Word - 3new.doc

情報処理概論(第二日目)

Taro11-表紙と目次.PDF

セゾン保険_PDF用.indd

Microsoft Word J.^...O.|Word.i10...j.doc

TLCS-870/C1シリーズ CPU

< F31312D8CA48B8695F18D908F FF28F918CB48D F>

スライド 1

DVIOUT-soturon

Microsoft PowerPoint - ProcML-12-3.ppt

MW100 Modbusプロトコルによるデータ通信の設定について

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

DS30292A-J-page 2 Preliminary 2000 Microchip Technology Inc. PIC16F876/

3 SIMPLE ver 3.2: SIMPLE (SIxteen-bit MicroProcessor for Laboratory Experiment) 1 16 SIMPLE SIMPLE 2 SIMPLE 2.1 SIMPLE (main memo



Microsoft PowerPoint - NxLecture ppt [互換モード]

スライド 1

法人保険( )


h01


..0.._ e.qxp

1

4 5 4

4. 半角文字コード変換表 ここでは 半角文字のコード変換についての詳細な表を記載します の文字と文字コード (16 進数 ) には 表内で灰色の網掛けを設定しています 4.1 IBMカナ文字拡張からへの変換 16 進数 16 進数 16 進数 16 進数 16 進数 16 進数 SP 0x40 S

スライド 1

PICkit 3 Starter Kit User’s Guide

PIC12C5XX日本語データシート

序文

Microsoft Word - マイコン実験 doc

Microsoft PowerPoint - H2.ppt [互換モード]

2

帳票設計ツールの使用手引き_V1.PDF

授業のあとで 情報処理工学 : 第 3 回 10 進数を 16 進数に変換する方法と 16 進数を 10 進数に変換する方法は 標準的な方法でも良いですか? 履修申告は済みましたか? 割り算 方法 ) 54 余り 6 16 ) 3 余り 3 ) 0 第 4 回へ 201

1

Microsoft Word - 中間試験 その1_解答例.doc

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

割り込み 今までのプログラムは 順番にそって命令を実行していくのみ それはそれで良いが 不便な場合もある 例えば 時間のかかる周辺機器を使う場合 その周辺機器が動作を終了するまで CPU は待たなければいけない 方法 1( ポーリング ) 一定時間毎に 周辺機器の動作が終了したか調べる 終了していれ

#include "uart.h" // #define RTC8583 0xA0 // RTC address #define CTRL 0x00 // RTC register notation START/STOP #defin

割り込み 今までのプログラムは 順番にそって命令を実行していくのみ それはそれで良いが 不便な場合もある 例えば 時間のかかる周辺機器を使う場合 その周辺機器が動作を終了するまで CPU は待たなければいけない 方法 1( ポーリング ) 一定時間毎に 周辺機器の動作が終了したか調べる 終了していれ

PIC24F Family Reference Manual Section 9 WDT

RsMulti の取扱説明 「RS232C で直接接続する(LAN を使用しない場合)」

endo.PDF


Transcription:

4. 演算命令 ( つづき ) ( 足し算の桁上がり,Rotate, etc.) を学ぼう 本稿の Web ページ http://www.cmplx.cse.nagoya-u.ac.jp/~furuhashi/education/pic/index.html 1

本章では足し算の桁上がり情報の格納場所の確認をするプログラムを学びます. PIC16F マイコンではデータは 8 ビットで表されています. 最上位ビットは 7 ビット目, 最下位ビットは 0 ビット目と数えられます. 7 ビット目 0 ビット目 1 0 1 1 0 0 1 0 以下の足し算を実行すると,8 ビット目に桁上がりした 1 は 8 ビットのレジスタに収まらずオーバーフローします. この値は捨てられることなく,STATUS レジスタの 0 ビット目に格納されます. 11111111 +00000001 100000000 オーバーフロー 2

; ADD Carry Check このソースファイルを各自打ち込んで下さい. CONFIG _HS_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF MEM1 EQU 0x0C ;MEM1 at 0C BCF STATUS,0 MOVLW 0xFF ; Load 0xFF to W MOVWF MEM1 ; Move W to MEM1 MOVLW 0x01 ; Load 0x01 to W ADDWF MEM1, 0 ; W + MEM1 -> W END 3

Data Sheet の REGISTER FILE MAP よりファイルレジスタの 03h 番地と 83h 番地に STATUS レジスタがあります.STATUS レジスタは 1 つだけです. どちらの番地からでも同じレジスタにアクセスできます. TMR0 01h OPTION_REG 81h PCL 02h PCL 82h STATUS 03h STATUS 83h FSR 04h FSR 84h PORTA 05h TRISA 85h PORTB 06h TRISB 86h 07h 87h EEDATA 08h EECON1 88h EEADR 09h EECON2 89h PCLATH 0Ah PCLATH 8Ah INTCON 0Bh INTCON 8Bh 0Ch 8Ch General Purpose Register 68 バイト 4Fh Mapped in Bank 0 CFh 03h と H 03 と 0x03 はいずれも 16 進数の 3 を表します. Bank 0 Bank 1 4

STATUS レジスタは Special Function Registers と File Registers のどちらのウィンドウでも見ることができます. 5

; ADD Carry Check ;================================== CONFIG _HS_OSC & _WDT_OFF ;-----Bank0------------------ & _PWRTE_OFF & _C STATUS EQU H'0003 MEM1 EQU 0x0C ;MEM1 at 0C C: Program Files (x86) Microchip MPASM Suite の中に p16f84a.inc ファイルがあります. これをテキストエディタを使って開くと ;================================== ; Register Definitions という記述が見られます.0x03 も H 0003 もどちらも 16 進数の 3 を意味します. すなわち STATUS という言葉は 16 進数の 3 と同じ意味であることを宣言しています. ここでSTATUSを使っています. 既にincファイル内にて BCF STATUS,0 STATUSが3を表すことが宣言されています. 従って, こ れはファイルレジスタの3 番地, すなわちSTATUSレジス MOVLW 0xFF タに対して操作を行うことを意味します ; Load 0xFF to W. MOVWF MEM1 ; Move W to MEM1 MOVLW 0x01 ; Load 0x01 to W ADDWF MEM1, 0 ; W + MEM1 -> W END 6

; ADD Carry Check CONFIG _HS_OSC & _WDT_OFF & _PWRTE_OFF & _C MEM1 EQU 0x0C ;MEM1 at 0C STATUS レジスタ 7 6 5 4 3 2 1 0 BCF STATUS,0 MOVLW 0xFF ; Load 0xFF to W MOVWF MEM1 ; Move W to MEM1 MOVLW 0x01 ; Load 0x01 to W ADDWF MEM1, 0 ; W + MEM1 -> W END STATUS レジスタの第 0 ビット ( キャリーフラグという名前がつけられています.) を 0 にします. BCF f, b Bit Clear f の略. f レジスタの第 b ビットをクリア (0 に ) する命令です. 7

; ADD Carry Check CONFIG _HS_OSC & _WDT_OFF & _PWRTE_OFF & _CP MEM1 EQU 0x0C ;MEM1 at 0C STATUS レジスタ 7 6 5 4 3 2 1 0 1 BCF 足し算の結果に桁上がりがあるとキャリーフラ STATUS,0 グが1になります. MOVLW 0xFF ; Load 0xFF to W MOVWF MEM1 ; Move W to MEM1 MOVLW 0x01 ; Load 0x01 to W ADDWF MEM1, 0 ; W + MEM1 -> W END 11111111 + 00000001 100000000 8

; Rotate このソースファイルを各自打ち込んで下さい. CONFIG _HS_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF MEM1 EQU 0x0C ;MEM1 at 0C Rotate 命令を学んで下さい. MOVLW B'00110000' ; Load 0x30 to W MOVWF MEM1 ; Move W to MEM1 BCF STATUS,0 ;Clear the 0-th bit of STATUS register ; Rotate MEM1 Left ; Rotate MEM1 Left ; Rotate MEM1 Left ; Rotate MEM1 Left ; Rotate MEM1 Left ; Rotate MEM1 Right ; Rotate MEM1 Right ; Rotate MEM1 Right ; Rotate MEM1 Right ; Rotate MEM1 Right END 9

; Rotate CONFIG _HS_OSC & _WDT_OFF & _PWRTE_OFF & _C MEM1 EQU 0x0C ;MEM1 at 0C STATUS レジスタ 7 6 5 4 3 2 1 0 * * * * * * * 0 MOVLW B'00110000' ; Load 0x30 to W MOVWF MEM1 ; Move W to MEM1 BCF STATUS,0 ;Clear the 0-th bit of STATUS register ; Rotate MEM1 Left ; Rotate MEM1 Left ; Rotate MEM1 Left ; Rotate MEM1 Left ; Rotate MEM1 Left ; Rotate MEM1 Right ; Rotate MEM1 Right ; Rotate MEM1 Right ; Rotate MEM1 Right ; Rotate MEM1 Right STATUS レジスタの第 0 ビット ( キャリーフラグ ) を 0 にします. END 10

; Rotate CONFIG _HS_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF MEM1 EQU 0x0C STATUS レジスタ 7 6 5 4 3 2 1 0 * * * * * * * 0 MOVLW MOVWF BCF B'00110000 MEM1 STATUS,0 MEM1 7 6 5 4 3 2 1 0 0 0 1 1 0 0 0 0 MEM1 の中身を 1 ビット左に移動させます. 一番左の第 7 ビット目の中身は外に出てしまうので, これをキャリーフラグに入れます. 一番右の第 0 ビット目にはキャリーフラグの中身を転送します. その結果を MEM1 に転送します. f, d Rotate Left f の略 END d = 1のとき転送先は f レジスタ,d = 0 のときはwレジスタ 11 です.

; Rotate CONFIG _HS_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF MEM1 EQU 0x0C STATUS レジスタ 7 6 5 4 3 2 1 0 * * * * * * * 0 MOVLW MOVWF BCF B'00110000 MEM1 STATUS,0 MEM1 7 6 5 4 3 2 1 0 0 1 1 0 0 0 0 0 最初の 実行後の MEM1 の中身です. 以降の を順次 STEP 実行し,MEM1 および STATUS レジスタの中身の変化を確認してください. END 12

; Rotate CONFIG _HS_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF MEM1 EQU 0x0C STATUS レジスタ 7 6 5 4 3 2 1 0 * * * * * * * 0 MOVLW MOVWF BCF B'00110000 MEM1 STATUS,0 MEM1 の中身を 1 ビット右に移動させます. 一番右の第 0 ビット目の中身は外に出てしまうので, これをキャリーフラグに入れます. 一番左の第 7 ビット目にはキャリーフラグの中身を転送します. f, d MEM1 7 6 5 4 3 2 1 0 0 0 1 1 0 0 0 0 Rotate Right f の略 d = 1のとき転送先は f レジスタ,d = 0 のときは wレジスタです. END 13

演習問題 7.W レジスタに 0xFF をロードし, これと 0x03 の AND 演算した結果を W レジスタに転送するプログラムを作成せよ. ANDLW B 01010011 AND Literal and W の略 B 01010011 と W レジスタの中身の AND をとって, その結果を W レジスタに転送させる命令です. 今,W レジスタに B 11011001 が入っていたとして, 上の命令を実行すると W レジスタには B 01010001 が得られます. W レジスタ プログラムメモリより 11011001 AND 01010011 01010001 W レジスタへ転送 14

演習問題 7. 解答 W レジスタに 0xFF をロードし, これと 0x03 の AND 演算 (p.60) した結果を W レジスタに転送するプログラムを作成せよ. ;Problem 7 CONFIG _HS_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF MOVLW 0xFF ; Load 0xFF to W ANDLW 0x03 ; W AND 0x03 -> W END 15

演習問題 8.MEM1 に 0xAA,W レジスタに 0x0B をロードし, これらの AND 演算した結果を W レジスタに転送するプログラムを作成せよ. ANDWF f, d AND W and f の略 例えば, ANDWF MEM1, 0 は, W レジスタに B 11011001,MEM1 に B 01010011 が入っていたとすると, W レジスタと MEM1 レジスタの中身の AND をとって, その結果を W レジスタに転送させる命令です.W レジスタには B 01010001 が得られます. W レジスタ MEM1 レジスタ 11011001 AND 01010001 01010011 W レジスタへ転送 16

演習問題 8. 解答 MEM1 に 0xAA,W レジスタに 0x0B をロードし, これらの AND 演算した結果を W レジスタに転送するプログラムを作成せよ. ;Problem 8 CONFIG _HS_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF MEM1 EQU 0x0C MOVLW 0xAA ; Load 0xAA to W MOVWF MEM1 ; W -> MEM1 MOVLW 0x0B ; Load 0x0B to W ANDWF MEM1,0 ; W AND MEM1 -> W END 17

演習問題 9.W レジスタに 0x30 をロードし, これと 0x03 の OR 演算した結果を W レジスタに転送するプログラムを作成せよ. IORLW B 00000011 Inclusive OR Literal and W の略 ( 通常の OR 演算です.Exclusive OR 演算との区別をはっきりさせるために, Inclusive と明記しています.) 演習問題 10.MEM1 に 0x4A,W レジスタに 0xAB をロードし, これらの OR 演算した結果を W レジスタに転送するプログラムを作成せよ. IORWF f, d Inclusive OR W and f の略 演習問題 11.MEM1 に F0 を転送し, 上位 4 ビットと下位 4 ビットを交換 (SWAPF 命令 ) した結果を W レジスタに転送するプログラムを作成せよ. SWAPF f, d Swap halves f の略 18

演習問題 9. 解答 W レジスタに 0x30 をロードし, これと 0x03 の OR 演算した結果を W レジスタに転送するプログラムを作成せよ. ;Problem 9 CONFIG _HS_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF MOVLW 0x30 ; Load 0x30 to W IORLW 0x03 ; W OR 0x03 -> W END 19

演習問題 10. 解答 MEM1 に 0x4A,W レジスタに 0xAB をロードし, これらの OR 演算した結果を W レジスタに転送するプログラムを作成せよ. ;Problem 10 CONFIG _HS_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF MEM1 EQU 0x0C MOVLW 0x4A ; Load 0x4A to W MOVWF MEM1 ; W -> MEM1 MOVLW 0xAB ; Load 0xAB to W IORWF MEM1,0 ; W OR MEM1 -> W END 20

演習問題 11.MEM1 に F0 を転送し, 上位 4 ビットと下位 4 ビットを交換 (SWAPF 命令 ) した結果を W レジスタに転送するプログラムを作成せよ. ;Problem 11 CONFIG _HS_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF MEM1 EQU 0x0C MOVLW 0xF0 ; Load 0xF0 to W MOVWF MEM1 SWAPF MEM1,0 ; SWAP MEM1 -> W END 21

2004 年 8 月 22