マイコン(PIC18F2550)に書き込んでいるブログラムです。
8ビットPIC用BASICコンパイラで作成しています。
下記コードは掲示した回路全体をコントロールする元のプログラムです。
今回測定デモ(2022.03.30)では、回路図内の破線部分を使用していないので、下記記述の大半は不要です。
●参考書 → PICマイコンとBASICで広がる電子工作
'POWER_TOOL.PBP '2015.10.09 Include "cdc_desc.bas" DEFINE OSC 20 ' Define ADCIN parameters Define ADC_BITS 10 ' Set 8-bit A/D conversion Define ADC_CLOCK 3 ' Set clock source (3=rc) Define ADC_SAMPLEUS 50 ' Set sampling time in uS adval var byte ' Create adval to store result TRISA = %00000011 ' Set PORTA bit0-1:input TRISB = 0 ' ALL OUTPUT ADCON1 =%00001101 ' Set PORTA AN0-AN1 | Vref+:Vdd Vref-:0 ADCON2 =%10000000 ' ...and right justify result buffer var byte[11] cnt var byte port var byte ' port"C" degit var byte ' "0,1,2" set var byte ' "L,H" RA0_VAL var word 'RA0 A/D RA0_VAL = 0 RA1_VAL var word 'RA1 A/D RA1_VAL = 0 '---PORTC.x RESET-- low PORTC.0 low PORTC.1 low PORTC.2 low PORTC.6 low PORTC.7 '---START-------------------- high PORTB.0 'ON low PORTB.1 'OFF PAUSE 1000 low PORTB.0 'OFF PAUSE 1000 high PORTB.0 'ON PAUSE 1000 USBInIT loop1: 'USB DUMMY RECEIVE usbService cnt=3 '3 byte usbin 3, buffer,cnt,loop1' ENDPOINT 3, cnt byte input loop2: 'USB DUMMY SEND USBService usbout 3,buffer,11,loop2 '11 byte '---- PC PROGRAM RUNNING ---------------------------------------- loop3: 'RECEIVE COMMAND usbService cnt=3 ' byte usbin 3, buffer,cnt,loop3 'ENDPOINT 3, cnt byte input HIGH PORTB.1 'ON '---RECEIVE COMMAND -------------------------------------------- port = buffer[0] ' "C" degit = buffer[1] ' "0,1,2" set = buffer[2] ' ex "L,H" '---------------------------------------------------------------- if port = "C" then select case degit case "0" if set = "H" then high PORTC.0 'ON endif if set = "L" then low PORTC.0 'ON endif case "1" if set = "H" then high PORTC.1 'ON endif if set = "L" then low PORTC.1 'ON endif case "2" if set = "H" then high PORTC.2 'ON endif if set = "L" then low PORTC.2 'ON endif end select endif 'GET A/D DATA RA0_VAL = 0 ADCIN 0, RA0_VAL ' Read channel 0 to RA0_VAL RA1_VAL = 0 ADCIN 1, RA1_VAL ' Read channel 1 to RA1_VAL '----- RA0_VAL -> buffer[i]------- buffer[0]= RA0_VAL ' LOW 8bit buffer[1]= RA0_VAL/256 ' HIGH 8bit buffer[2]= RA1_VAL ' LOW 8bit buffer[3]= RA1_VAL/256 ' HIGH 8bit loop4: 'ADVAL SEND USBService usbout 3,buffer,4,loop4 '4 byte PAUSE 1000 low PORTB.1 'OFF PAUSE 500 goto loop3