Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
3
講義内容
本講義では携帯電話や携帯オーディオプレイヤー、各種ロボットなどの電子機器・情報機器に用いられるマイコン制御技術を、実習を通して理解する。
PIC: Peripheral Interface Controller 直訳:周辺装置インタフェースコントローラー
マイクロコンピュータ
CPUやメモリをワンチップ化した小型のコンピュータ
パソコンのような汎用性はないが低コスト、小型、
省電力などのメリットがある。
4
講義内容
目的
マイコン制御システムの設計に必要なマイコンのI/Oポート制御技術、アセンブラ言語によるプログラミング、ROM
ライタによる書込みと実装、回路部品技術、センサー入力技術などを学び、企業におけるマイコン制御設計の即戦力となるべく技術の習得を目的とする。
開発環境
マイコンプログラミング演習 I ではアセンブラ言語を用いてプログラミングを行う。各自ノートPCを持参のこと
5
講義内容
本講義での規約事項
•忌引きや病欠などのやむない理由を除く欠席は原則として認めない。
欠席する場合は事前、または事後速やかに連絡を入れること。
•全てのレポートに於いて規定の評価基準を満たす必要がある。1つでも未提出、不合格のレポートがある場合は成績評点を不可とする。
ただし、レポートは採点後返却され、再提出が1度のみ認められる。
8
① プログラム内蔵方式
– 処理手順であるプログラムはコンピュータ内部に記憶される
② 逐次処理
– プログラムで指定した順序で、逐次命令が実行される
③ 命令とデータの共存 – 同じメモリ(主記憶装置)上に命令とデータが共存する
ノイマン型コンピュータの特徴
10
① プログラム内蔵方式
– 処理手順であるプログラムはコンピュータ内部に記憶される
② 逐次処理
– プログラムで指定した順序で、逐次命令が実行される
③ 命令とデータのメモリ分離 – 命令(プログラム)とデータの記憶領域が別である
ハーバード型コンピュータの特徴
11
ハーバード型の利点
CPU
メモリ (プログラム・データ兼用)
CPU
プログラム メモリ
データ メモリ
ノイマン型 ハーバード型
1つのバスでプログラムとデータのやりとりを行うので、転送が混雑 →パフォーマンスの低下 (フォン・ノイマンのボトルネック)
プログラムとデータはそれぞれ別のバスが使われる
12
ハーバード型の利点
ハーバード型のコンピュータの特徴から、以下のような用途で使われることが多い
• プログラムを利用者が書き換える必要がない
• プログラムにアクセスさせたくない
• 高速にプログラムを処理したい
→リモコンやマウス、タイマー、コントローラーなどの 制御によく使われる
14
プログラム カウンター
命令 レジスタ
デコーダ
命令
演算回路
各種レジスタ
制御装置 命令メモリ
演算装置
命令
命令
命令
命令
データメモリ
データ
データ
データ
データ
データ
命令実行の流れ
15
PICマイコンの特徴
• 小型パッケージに全ての機能を内蔵
– CPU,メモリ,I/O(入出力)
• プログラムを内蔵するメモリがフラッシュメモリ
• 機能が豊富…パワーアップタイマ、ウォチドッグタイマ、
割込み、スリープモード、ADコンバータ等
• 命令数が少ない(35個)
• 低消費電力(2mA)
• 安価(100円程度)
17
PICの端子の構成
入出力ポートA クロック IN/OUT 電源(+) 入出力ポートB
入出力ポートA
リセット 電源(-)
入出力ポートB
入出力ポート数 ポート A 最大5個(5bit) ポート B 最大8個(8bit)
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
ワーキングレジスタ内の値を指定されたファイルレジスタに格納する