J2コネクタの”A0″ピンのアナログ電圧を読み取って、その値をディスプレイに表示し、同時にJ1コネクタの”D6″ピンにアナログ出力(PWM出力)します。
アナログ電圧は最小値0Vが値0、最大値5Vが値1023になって読み込まれます。読み取った値を途中で4で割り算しているのは、アナログ出力の上限が255だからです。
.list
;---
; A Sample Code of Analog I/O Manipulation
;---
dem_cseg
main:
0000 21 LDI.d 1
0001 39 18 OUT 18 ; AREF=AVCC=5V
loop:
0003 64 05 SYS sys_clear
0005 38 19 IN 19 ; AIN0
0007 64 02 SYS sys_putdec ; display AIN0 value
0009 10 STR R0
0010 24 LDI.d 4
0011 11 STR R1
0012 00 LDR R0
0013 76 41 DIV R1 ; A = A / 4
0015 39 27 OUT 27 ; AOUT6
0017 22 LDI.d 2 ; 2 x 0.1s
0018 64 20 SYS sys_pause
0020 61 19 JB loop
光センサ(照度計)
付属のCdSセルとLEDとを使って実験ができます。以下のようにつないでください。(付属のリード線の色は図の通りにはなっていないことがありますので、結線状態をよく見て判断してください。)
CdSセルにあたる光の照度に応じてLEDの輝度が変わり(照度が高ければLEDは明るくなり)ます。
温度センサ(温度計)
CdSセルをダイオードに変えると温度計になります。ダイオードの順方向効果電圧が温度により変化することを利用しています。最近のICチップ(特に一般CPU)内の温度センサはこの原理が応用されています。
プログラムは先頭の1命令を「22」に書き換えてください。A/Dコンバータのフルスケール電圧が1.1Vになります。
温度が上がると数値が下がっていきます。変化量が少ないのでLEDの輝度はあまり変わりません。
