マイコン(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