
■ BASCOM-AVR (DEMO) の使用方法 ■ |
入出力(I/O)ポートの使用方法 |
● BASCOM-AVRで、入出力(I/O)ポートを制御する方法です。
・AVRは、1つのポートごとに、3つのレジスターを持っています。
・下記の図は、ポートBを例にした概略図です。
CONFIG PORT命令で、入出力(I/O)
ポートのデータ方向を設定します。
( 0 = 入力 , 1 = 出力 )
PORTB = &Hxx
出力に設定したピンは、このレジスターに
書き込んだ内容がポートに出力されます。
入力に設定したピンは、このレジスターに
書き込んだ内容で、プルアップ抵抗が
制御されます。 (1でプルアップON)
Pt = PORTB (注意!)
この命令で読み込めるのは、上記で書き
込んだ出力ラッチの内容です。
※
入力ポートの内容(ポートピンの状態)を
読み込む場合は、PINxを使用します。
Pt = PINB
|
 |
|
● ポートの入出力方向を設定。
・CONFIG PORT命令の、リファレンス・マニュアルを参照して下さい。
● ポートへの出力。
・ポートへのバイト単位の出力は、変数の代入と同じ書式で行えます。
|
PORTX = Data |
Xはポート名。 ( A , B , C , D , E , F )
Dataは、変数または数値定数。 |
|
・ピン単位の出力。
|
SET PORTX.b
RESET PORTX.b |
出力=H
出力=L |
Xはポート名。 ( A , B , C , D , E , F )
bはピンの番号。 ( 0 〜 7 ) |
|
● ポートからの入力。 (ポートピンの状態)
・ポートからの入力は、変数の代入と同じ書式で行えます。
・PRINT命令やLCD命令で、直接表示装置へ出力することもできます。
|
Data = PINX
Print Bin(PINX) |
Xはポート名。 ( A , B , C , D , E , F )
Dataは変数。 |
|
● ポートBでの設定例。
・ポートBの、Pin0〜3を入力、Pin4〜7を出力に設定し、入力ピンを内部抵抗でプルアップします。
|
Config PORTB = &B1111_0000 |
' ポートBのPin0〜3を入力、Pin4〜7を出力に設定。 |
PORTB = &B0000_1111 |
' ポートBのPin0〜3を、内部抵抗でプルアップ。 |
PORTB = PORTB Or &B0000_1111 |
' (ポートBの出力状態を保持する場合はこちら) |
Print Bin(PINB) |
' ポートBの入力状態を表示装置へ出力。 |
|
● ポートのピン単位で設定する例。
・PB2を入力に設定し、PB2の内部プルアップを解除する。 (AVRがリセット時の状態)
・ポートはハイ・インピーダンス(浮遊状態)になるので、この状態でポートを開放のまま放置
してはいけない。
(未使用のポートは、内部プルアップをするか、出力ポートにしておく)
・トグルスイッチ等の接続は、必ず[H]Vddレベルか[L]GNDに接続されるように配線する。
|
Config PORTB.2 = Input
Reset PORTB.2 |
' ポートBのPin2を入力に設定する。
' ポートBのPin2の内部プルアップを解除する。 |
|
・PB2を入力に設定し、PB2をAVR内部で20〜50KΩの抵抗によりプルアップする。
・押しボタンスイッチなどの、OFFの時にオープンになる部品を接続する際に設定する。
(未使用のポートは、この状態にしておく)
|
Config PORTB.2 = Input Set PORTB.2 |
' ポートBのPin2を入力に設定する。
' ポートBのPin2の内部プルアップを有効にする。 |
|
・PB2を出力に設定し、PB2を[L]レベルにする。
・[L]レベルとは、外部からAVRにシンク電流が流れ込む状態。
|
Config PORTB.2 = Output Reset PORTB.2 |
' ポートBのPin2を出力に設定する。
' ポートBのPin2を[L]レベルにする。 |
|
・PB2を出力に設定し、PB2を[H]レベルにする。
・[H]レベルとは、AVRから外部にソース電流が流れ出す状態。
|
Config PORTB.2 = Output Set PORTB.2 |
' ポートBのPin2を出力に設定する。
' ポートBのPin2を[H]レベルにする。 |
|
● ポートピンの反転。
・ポートの入出力方向の設定に関わらず、PINX.bに[1]を出力した場合は、そのポートピンの
出力状態が反転します。
・プログラムでポートの状態を読み込んでからビットを反転させて出力する動作を、ハードウェアで
行ってくれます。
|
Set PINB.2 |
' ポートBのPin2の出力を反転する。 |
|
|
|