Данные получить получилось, вот код:
Code
Device = 16F628A
Xtal=4
Include "modedefs.bas"
PortB_Pullups = OFF
Declare All_Digital = On 'все порты цыфровые
Config BODEN_OFF, PWRTE_ON, WDT_OFF, LVP_OFF, MCLRE_OFF, INTRC_OSC_NOCLKOUT, CP_OFF, DATA_CP_OFF
Declare LCD_Type ALPHA ' Тип ЖКИ - буквенно -цифровой
Declare LCD_DTPin PORTA.0 ' Порт данных ЖКИ
Declare LCD_ENPin PORTA.7 ' Управление линией E
Declare LCD_RSPin PORTA.6 ' Управление линией RS
Declare LCD_Interface 4 ' Разрядность шины данных
Declare LCD_Lines 2
Declare LCD_CommandUs 2000
Declare LCD_DataUs 50
TRISA = %00010000
PORTA = %00000000
TRISB = %00000000
PORTB = %00000000
Symbol MAXData1=PORTA.4
Symbol MAXcs=PORTB.0
Symbol MAXClock=PORTB.1
Dim Res1 As Word 'пременная результата измерений
Print $FE,1
Main:
Res1=0
MAXcs=0 'начинаем получение данных
SHIn MAXData1,MAXClock,MsbPost,[Res1\16] 'считываем данные (16бит) в переменную Res1
MAXcs=1 'закончили получение данных
Res1=Res1>>3 'сдвигаем на 3 бита вправо (по даташиту)
Res1=Res1/4 'делим на 4, т.к шаг 0,25
Print $FE, 2, Dec Res1," " 'выводим на дисплей
DelayMS 20
GoTo Main
но результат получается завышенный. Получение данных из MAX6675 точно правильное, пробовал получать побитно в цикле, результат один и то тже. В других схемах в сети к плюсу термопары подают очень низкое напряжение для компенсации окружающей среды. Но ведь в MAX6675 уже встроен датчик для компенсации температуры концов термопары. Почему завышенные показания?
MAX6675
Во вложениях код моей программы, мой проект и проект из примера с компенсатором