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