' ' ********************************************** ' * * ' * AVR & BASCOM-AVR トレーニング・ボード * ' * 初期設定 Ver.1.01 * ' * * ' * AVR is using ATmega88P * ' * Basic Compiler is BASCOM-AVR * ' * Copyright By O-Family 2009. 7.25 * ' ********************************************** ' $regfile = "m88pdef.dat" '使用するAVRを設定。 $crystal = 16000000 'AVRクロックを設定。 ' $hwstack = 64 'ハードウェア・スタックの容量を設定。 $swstack = 8 'ソフトウェア・スタックの容量を設定。 $framesize = 24 'フレーム領域の容量を設定。 ' ' * ポート名の定義 * ' Sw_1 Alias Pind.0 'スイッチ[1]の接続ポート。 Sw_2 Alias Pind.1 'スイッチ[2]の接続ポート。 Sw_3 Alias Pind.2 'スイッチ[3]の接続ポート。 Sw_4 Alias Pind.3 'スイッチ[4]の接続ポート。 ' Led_1r Alias Portd.4 'LED1[赤]の接続ポート。 Led_2g Alias Portd.5 'LED2[緑]の接続ポート。 Led_3y Alias Portd.6 'LED3[黄]の接続ポート。 Led_4b Alias Portd.7 'LED4[青]の接続ポート。 Sp_out Alias Portc.5 'スピーカーの接続ポート。 ' Ad_photo Alias 0 '光センサーのA/Dコンバータ・チャネル番号。 Ad_thermo Alias 1 '温度センサーのA/Dコンバータ・チャネル番号。 Ad_ain1 Alias 2 '測定入力[1]のA/Dコンバータ・チャネル番号。 Ad_ain2 Alias 3 '測定入力[2]のA/Dコンバータ・チャネル番号。 Ad_ain3 Alias 4 '測定入力[3]のA/Dコンバータ・チャネル番号。 Ad_spin Alias 5 'スピーカー入力のA/Dコンバータ・チャネル番号。 ' ' * ポートの初期設定 * ' Config Led_1r = Output 'LED1の接続ポートを出力に設定する。 Config Led_2g = Output 'LED2の接続ポートを出力に設定する。 Config Led_3y = Output 'LED3の接続ポートを出力に設定する。 Config Led_4b = Output 'LED4の接続ポートを出力に設定する。 Config Sp_out = Output 'スピーカーの接続ポートを出力に設定する。 ' Set Portd.0 'スイッチ[1]の接続ポートをプルアップする。 Set Portd.1 'スイッチ[2]の接続ポートをプルアップする。 Set Portd.2 'スイッチ[3]の接続ポートをプルアップする。 Set Portd.3 'スイッチ[4]の接続ポートをプルアップする。 Didr0 = &B00111111 'デジタル入力禁止レジスタの設定。 ' ' * LCDの初期設定 * ' Config Lcdmode = Port 'LCDを4ビットのポートモードに設定。 Config Lcdbus = 4 'LCDデータバスを4bitに設定。 Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 'LCDのポート割り当て。 Config Lcdpin = Pin , Db6 = Portb.1 , Db7 = Portb.0 Config Lcdpin = Pin , E = Portb.4 , Rs = Portb.5 Config Lcd = 16 * 2 'LCD表示を16文字2行に設定。 Cls 'LCD表示をすべて消去。 ' ' * A/Dコンバータの初期設定 * ' Config Adc = Single , Prescaler = Auto , Reference = Avcc 'A/Dコンバータの設定。 Start Adc 'A/Dコンバータに電源を供給。 ' ' ↓********************************************↓ ' ↓ これ以降に各自のプログラムを作成して下さい ↓ ' ↓********************************************↓ ' Cursor Off 'LCDのカーソルをオフにする。 ' ' ************************************************ ' * 1-Wireバス デジタル温度計 DS18B20 * ' * デバイスのシリアル番号を調べる(1個接続) * ' * (Ver.1.01) * ' * Copyright By O-Family 2010. 4.16 * ' ************************************************ ' 1w_dq Alias Portd.0 '1-Wireバスのデータ線[DQ]を接続するポートピン。 ' ' Dim Rxbuff(8) As Byte '受信データを格納する配列。 Dim Temp1 As Byte '汎用テンポラリ変数 Byte型 No.1 ' ' Config 1wire = 1w_dq '1-Wireバスのデータ線を接続するポートピンを設定。 ' Do Cls 'LCD表示をすべて消去。 1wreset '1-Wireバスを初期化する。(リセットを送信) If Err = 0 Then 'If デバイスが接続されているか? Then 1wwrite &H33 '[READ ROM]コマンドを送信する。(シリアル番号の読み込み) Rxbuff(1) = 1wread(8) 'デバイスのシリアル番号(8byte)を受信する。 ' Temp1 = Crc8(rxbuff(1) , 8) 'シリアル番号の8バイトすべてでCRC8を計算する。 If Temp1 = 0 Then 'If CRCエラーが無いか? Then Locate 1 , 1 'LCDにシリアル番号を表示する。(16進表記) Lcd "ID: "; For Temp1 = 1 To 4 'LCD上段に前半の4桁を表示する。 Lcd Hex(rxbuff(temp1)) ; " "; Next Temp1 Locate 2 , 5 For Temp1 = 5 To 8 'LCD下段に後半の4桁を表示する。 Lcd Hex(rxbuff(temp1)) ; " "; Next Temp1 Else 'CRCにエラーが有る場合。(複数個の接続時など) Locate 1 , 1 Lcd "ID: CRC Error." End If Else 'デバイスが見つからない場合。 Locate 1 , 1 Lcd "ID: not found." End If Wait 1 '1秒の待ち時間。 Loop ' End