34
マイコンプログラミング演習I 02-03回路構築/LEDを用いた出力制御 担当:植村

マイコンプログラミング演習I - 崇城大学t_uemura/mpe1/15mpe1_02-03.pdfライタによる書込みと実装、回路部品技術、センサー入 力技術などを学び、企業におけるマイコン制御設計の即

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

マイコンプログラミング演習I

第02-03回

回路構築/LEDを用いた出力制御

担当:植村

導入

3

講義内容

本講義では携帯電話や携帯オーディオプレイヤー、各種ロボットなどの電子機器・情報機器に用いられるマイコン制御技術を、実習を通して理解する。

PIC: Peripheral Interface Controller 直訳:周辺装置インタフェースコントローラー

マイクロコンピュータ

CPUやメモリをワンチップ化した小型のコンピュータ

パソコンのような汎用性はないが低コスト、小型、

省電力などのメリットがある。

4

講義内容

目的

マイコン制御システムの設計に必要なマイコンのI/Oポート制御技術、アセンブラ言語によるプログラミング、ROM

ライタによる書込みと実装、回路部品技術、センサー入力技術などを学び、企業におけるマイコン制御設計の即戦力となるべく技術の習得を目的とする。

開発環境

マイコンプログラミング演習 I ではアセンブラ言語を用いてプログラミングを行う。各自ノートPCを持参のこと

5

講義内容

本講義での規約事項

•忌引きや病欠などのやむない理由を除く欠席は原則として認めない。

欠席する場合は事前、または事後速やかに連絡を入れること。

•全てのレポートに於いて規定の評価基準を満たす必要がある。1つでも未提出、不合格のレポートがある場合は成績評点を不可とする。

ただし、レポートは採点後返却され、再提出が1度のみ認められる。

6

文字

画像

音声

印刷

再生

表示

情報の入力 情報の処理 情報の出力

数値

コンピュータの行うこと

7

入力装置 キーボード マウスなど

演算装置

制御装置

主記憶装置

出力装置 ディスプレー プリンターなど

中央制御装置

ノイマン型コンピュータの基本構成

8

① プログラム内蔵方式

– 処理手順であるプログラムはコンピュータ内部に記憶される

② 逐次処理

– プログラムで指定した順序で、逐次命令が実行される

③ 命令とデータの共存 – 同じメモリ(主記憶装置)上に命令とデータが共存する

ノイマン型コンピュータの特徴

9

入力装置 キーボード マウスなど

演算装置

制御装置

プログラム メモリ

出力装置 ディスプレー プリンターなど

ハーバード型コンピュータの基本構成

データ メモリ

10

① プログラム内蔵方式

– 処理手順であるプログラムはコンピュータ内部に記憶される

② 逐次処理

– プログラムで指定した順序で、逐次命令が実行される

③ 命令とデータのメモリ分離 – 命令(プログラム)とデータの記憶領域が別である

ハーバード型コンピュータの特徴

11

ハーバード型の利点

CPU

メモリ (プログラム・データ兼用)

CPU

プログラム メモリ

データ メモリ

ノイマン型 ハーバード型

1つのバスでプログラムとデータのやりとりを行うので、転送が混雑 →パフォーマンスの低下 (フォン・ノイマンのボトルネック)

プログラムとデータはそれぞれ別のバスが使われる

12

ハーバード型の利点

ハーバード型のコンピュータの特徴から、以下のような用途で使われることが多い

• プログラムを利用者が書き換える必要がない

• プログラムにアクセスさせたくない

• 高速にプログラムを処理したい

→リモコンやマウス、タイマー、コントローラーなどの 制御によく使われる

13

① 命令の取り出し(フェッチ)

② 命令の解読(デコード)

③ 命令の実行

命令の取出し

(

フェッチ)

命令の解読

(

デコード)

命令の実行

命令実行サイクル

命令実行サイクル

14

プログラム カウンター

命令 レジスタ

デコーダ

命令

演算回路

各種レジスタ

制御装置 命令メモリ

演算装置

命令

命令

命令

命令

データメモリ

データ

データ

データ

データ

データ

命令実行の流れ

15

PICマイコンの特徴

• 小型パッケージに全ての機能を内蔵

– CPU,メモリ,I/O(入出力)

• プログラムを内蔵するメモリがフラッシュメモリ

• 機能が豊富…パワーアップタイマ、ウォチドッグタイマ、

割込み、スリープモード、ADコンバータ等

• 命令数が少ない(35個)

• 低消費電力(2mA)

• 安価(100円程度)

16

PICマイコンの概要

ゲーム機のコントローラーに用いられる PICマイコン

その他リモコンやマウスなど

この実験で用いるPICマイコン 16F84A

17

PICの端子の構成

入出力ポートA クロック IN/OUT 電源(+) 入出力ポートB

入出力ポートA

リセット 電源(-)

入出力ポートB

入出力ポート数 ポート A 最大5個(5bit) ポート B 最大8個(8bit)

18

実習内容

20

配置図(P179)

21

配線図

PIC16F84A

22

プログラミング~PICへの書き込み

MPLABでソースコードを記述

アセンブル

○ ○ ○ ○.HEX

Picに書き込む

マシン語のファイル

23

アセンブラによるプログラム(P54)

LIST P=PIC16F84A INCLUDE P16F84A.INC

__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF

BSF STATUS, RP0 CLRF TRISA CLRF TRISB BCF STATUS, RP0

MOVLW B’00001111’ ;リテラル→Wレジスタ MOVWF PORTB ;Wレジスタ→ファイルレジスタ LOOP GOTO LOOP END ビルド時に

“Absolute”を選ぶ

24

プログラム(P54)

LIST P=PIC16F84A 使用するPICの記述 INCLUDE P16F84A.INC ファイルのインクルード

__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF

BSF STATUS, RP0 CLRF TRISA CLRF TRISB BCF STATUS, RP0

MOVLW B‘00001111’ ;リテラル→Wレジスタ MOVWF PORTB ;Wレジスタ→ファイルレジスタ LOOP GOTO LOOP END

PICの機能の設定。 順に

• 発振回路の周波数をHSモード(1MHz~20MHz)にする

• ウォッチドッグタイマ(暴走防止用のタイマ)をOFFにする

• パワーアップタイマ(安定起動させるためのタイマ)をONにする

• プログラムメモリのコードプロテクト(外部からのアクセスを禁止する)をOFFにする

25

プログラム(P54)

LIST P=PIC16F84A INCLUDE P16F84A.INC

__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF

BSF STATUS, RP0 CLRF TRISA CLRF TRISB BCF STATUS, RP0

MOVLW B‘00001111’ ;リテラル→Wレジスタ MOVWF PORTB ;Wレジスタ→ファイルレジスタ LOOP GOTO LOOP END

26

新しく使う命令

BSF fレジスタ 処理bit Bit Set File-register

ビット単位でファイルレジスタの値を1にセットする

CLRF fレジスタ Clear File-register

バイト単位でファイルレジスタの値を0にクリアする

BCF fレジスタ 処理bit Bit Clear File-register

ビット単位でファイルレジスタの値を0にクリアする

27

ワーキングレジスタとファイルレジスタ PICの命令文はデータを2つまでしか制御できない

ファイルレジスタに同時に2つ以上アクセスできない

ワーキングレジスタ:

一時的に値を入れておくことのできるメモリ

ファイルレジスタ:

設定やプログラムで予約することのできるメモリ領域

RAM

Fレジスタ

Wレジスタ

ALU 算術演算部

8bit 8bit × 68

8bitを2つまで制御

8bit

8bit

8bit

28

P16F84Aのファイルレジスタ Address BANK 0 BANK 1 Address

00h Indirect addr BANK0 にマップ 80h

01h TMR0 OPTION 81h

02h PCL BANK0 にマップ 82h

03h STATUS BANK0 にマップ 83h

04h FSR BANK0 にマップ 84h

05h PORTA TRISA 85h

06h PORTB TRISB 86h

07h 使用不可 BANK0 にマップ 87h

08h EEDATA EECON1 88h

09h EEADR EECON2 89h

0Ah PCLATH BANK0 にマップ 8Ah

0Bh INTCON BANK0 にマップ 8Bh

0Ch

68 SRAM 汎用レジスタ BANK0 にマップ

8CH

: :

: : 4Fh CFh

50h

使用不可 使用不可

D0h

: :

: : 7Fh FFh

設定用の メモリ領域

プログラムが自由に使用できるメモリ

29

P16F84Aのファイルレジスタ Address BANK 0 Address BANK 1

00h 000000002 80h 000000002

01h 000000002 81h 000000002

02h 000000002 82h 000000002

03h 000000002 83h 000000002

04h 000000002 84h 000000002

05h 000000002 85h 000000002

06h 000000002 86h 000000002

07h 000000002 87h 000000002

08h 000000002 88h 000000002

09h 000000002 89h 000000002

0Ah 000000002 8Ah 000000002

0Bh 000000002 8Bh 000000002

0Ch 000000002 : :

000000002

8CH 000000002 : :

000000002

: :

: : 4Fh CFh

50h

使用不可

D0h

使用不可 : :

: : 7Fh FFh

30

STATUSレジスタの各bitの意味 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

IRP RP1 RP0 ^TO ^PD Z DC C

IRP PIC16F84では未使用

RP1 PIC16F84では未使用

RP0 バンク選択ビット 0=バンク0 1=バンク1

^TO タイムアウトビット 1=電源ON後,CLRWDT命令またはSLEEP命令実行後 0=WDTタイムアウト発生

^PD パワーダウンビット(SLEEP命令実行有無判定用) 1=電源ON後またはCLRWDT命令実行により1になる 0=SLEEP命令により0になる

Z ゼロビット 1=計算結果またはロジック演算結果がゼロ 0=計算結果またはロジック演算結果がゼロでない

DC デジットキャリービット 1=結果により下位4ビット目からキャリーが発生した 0=結果により下位4ビット目からキャリーが発生しなかった

C キャリービット 1=結果により最上位ビットからキャリーが発生した 0=結果により最上位ビットからキャリーが発生しなかった

31

TRISA, TRISB レジスタ

• 各ビットは PORTA の RA0~RA4 ピンおよび PORTB のRB0~RB7ピンの入出力モードを設定する

0=出力 1=入力

※使わないポートは通常1をセットする

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

- - - TRISA4 TRISA3 TRISA2 TRISA1 TRISA0

TRISAレジスタ

TRISBレジスタ

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0

32

前回のプログラム(P54)

LIST P=PIC16F84A INCLUDE P16F84A.INC

__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF

BSF STATUS, RP0 CLRF TRISA CLRF TRISB BCF STATUS, RP0

MOVLW B’00001111’ ;リテラル→Wレジスタ MOVWF PORTB ;Wレジスタ→ファイルレジスタ LOOP GOTO LOOP END

33

新しく使う命令

MOVLW 指定値 MOVe Literal to Working-register

リテラルの値(こちらが表記で指示した値)をワーキングレジスタへ格納

B’00001111’ … バイナリ(B)の数字列の意味

MOVWF fレジスタ MOVe Working-register to File-register

ワーキングレジスタ内の値を指定されたファイルレジスタに格納する

34

課題 (1) MOVLW B'00001111' を次のように書き替えると,動作はどう変化するか?

MOVLW B'00001010‘

(2) LEDをPICのRA0~RA3のポートに接続しなおすならば,プログラムは "MOVWF PORTB" をどのように書き替えればよいか?

・PICを抜き差しするときは電源をOFFにすること。

・PICの向きに注意すること

・PICを抜くときはピンが折れないように慎重に