ADC работает, проверил канал 0, 10 и 11
НО. Ощущение, что какая-то подтяжка внутри, на любом входе. Порты настроены согласно документации и примеру.
Вычитываю 8 старшие биты (из 10)
Соединяю вход ADC с минусом питания - 34, соединяю с +5в - 245
Попробовал вычитать данные канала 15 (опорное напряжение) - или я неверно считаю, или - но разница колоссальная!
Установил тактовую не 8, а 11 МГц - без разницы.
$regfile = "STC_8H.DAT" ' STC registers list $crystal = 11059200 ' CPU clock frequence $ramsize = 512 $romstart = &H0 ' code starting address Dim Dat_w As Word , Temp As Byte My_led Alias P1.2 '----------------------------------------- P1ie = &B1111_1111 ' 1: Enable digital pins P1pu = &B0000_0000 ' 1: pull-up resistor P1m0 = &B_1010_0110 : P1m1 = &B_0000_0000 ' output mode P3ie = &B1111_1011 ' 1: Enable digital pins P3pu = &B0000_0000 ' 1: pull-up resistor P3m0 = &B_0000_0000 : P3m1 = &B0000_1000 ' output mode '----------------------------------------- 'UART1 P_sw1 = &H00 'RXD/P3.0, TXD/P3.1 'P_sw1 = &H40 'RXD_2/P3.6, TXD_2/P3.7 'P_sw1 = &H80 'RXD_3/P1.6, TXD_3/P1.7 Scon = &H52 ' 8-Bits And Variable Baudrate Auxr = &H54 'Timer is 1T mode, use Timer1 as baudrate generator Tmod = 2 'Set timer work mode Tl1 = &HE8 : Th1 = &HFF 'Initial timer - 115200 / 11059200 'Tl1 = &HE0 : Th1 = &HFE 'Initial timer - 9600 / 11059200 'Tl1 = &HF3 : Th1 = &HFF 'Initial timer - 19200 / 1MHz 'Tl1 = &HF3 : Th1 = &HFF 'Initial timer - 38400 / 2MHz 'Tl1 = &HCC : Th1 = &HFF 'Initial timer - 38400 / 8MHz Et1 = 0 'Disable Timer interrupt Tr1 = 1 'Timer1 start run Sbuf = 0 ' Magic ... '----------------------------------------- 'ADC Adccfg = &B0000_1111 '/2/16 Adc_contr = &B1000_1011 ' ADC_Power, Channel=11 P3.3 'P_sw2.7 = 1 'Adctim = &H3F ' 0011_1111 'P_sw2.7 = 0 '----------------------------------------------------------------------------- Do Adc_contr.6 = 1 ' ADC start 1=On While Adc_contr.5 = 0 : Wend ' ADC Flag Temp = Adc_res Temp = Temp - 33 Print "ADC: " ; Temp Adc_contr.5 = 0 Waitms 200 Loop