Broka |
Дата: Пт, 01.07.2011, 22:15 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
253
Замечания:
±
На сайте с 30.09.2009
Статус:
Offline
|
Решил попробовать сделать терморегулятор, взял примеры , написал программу! В протеусе работает.. Только вот не пойму, при включении (симуляции) при выводе максимальной и минимальной температуры. Минимальная температура показывает правильно, а вот максимальная считывается из EEPROM не правильно, - 33*С, в чём дело то? Хотя в EEPROM записываю те значения которые мне нужны. Странно..........
'-------------------------- Опции компилятора --------------------------------
Declare SHOW_SYSTEM_VARIABLES = OFF ' При симуляции в Proteus не показывать внутренние переменные Declare FSR_CONTEXT_SAVE = OFF ' Не заботиться о сохранении содержимого регистра FSR Declare Reminders = OFF ' Выключить напоминания компилятора Declare Warnings = OFF ' Выключить предупреждения компилятора Declare Optimiser_Level 1 ' Включить оптимизацию программы
;-------------------------- Общие настройки------------------------------------
Device = 16F628A ' Используемый микроконтроллер Xtal = 4 ' Частота осциллятора 4 МГц
'-------------------------- Конфигурация программирования --------------------
Config BODEN_OFF, BOREN_OFF, CP_OFF, DATA_CP_OFF, PWRTE_ON, WDT_OFF, LVP_OFF, MCLRE_ON, XT_OSC
'-------------------------- Настройки подключения ЖКИ ------------------------ TRISA = %11111111 TRISB = %00000000 PORTB.1 = 0 Declare LCD_Type ALPHA ' Тип ЖКИ - буквенно -цифровой Declare LCD_DTPin PORTB.4 ' Порт данных ЖКИ Declare LCD_ENPin PORTB.3 ' Управление линией E Declare LCD_RSPin PORTB.2 ' Управление линией RS Declare LCD_Interface 4 ' Разрядность шины данных Declare LCD_CommandUs 2000 ' Задержка перед посылкой команды Declare LCD_DataUs 50 ' Задержка перед посылкой данных Declare LCD_Lines 2 ' Количество строк ЖКИ
'-------------------------- Настройки портов ---------------------------------
PortB_Pullups = OFF ' Выключить подтягивающие резисторы на PORTB Declare All_Digital = On ' Установить все порты цифровыми входами/выходами
'-------------------------- Определение переменных и символов------------------ Symbol Mode = PORTA.0 Symbol Plus = PORTA.1 Symbol Minus = PORTA.2 Symbol Zapis = PORTA.3 Symbol DQ = PORTA.4 Dim H As Float Dim L As Float 'Dim R As Byte Dim R_Temp As Word ' Переменная для получения значения температуры ' отдельными двумя байтами Dim Temp As Float ' Переменная для преобразования значения ' температуры в данные с плавающей запятой Dim TempIND As Float ' Переменная для вывода на индикацию значени ' температуры Dim C As Bit ' Переменная для хранения бита сигнализации ' окончания преобразования H = 38 L = 37.50 DelayMS 50 EWrite 2,[H] EWrite 3,[L] DelayMS 50 '-------------------------- Начало ------------------------------------------- H = ERead 2 L = ERead 3 Print At 1 ,1,$A9,$43,$54,$20,$4D,$41,$4B,$43,$20,$3D,$20,Dec1 H (Вот здесь показывает неправильное значение ) Print At 2 ,1,$A9,$43,$54,$20,$4D,$A5,$48,$20,$3D,$20,$20,Dec1 L DelayMS 3000 Cls Ну ,а дальше пошла сама программа терморегулятора. Может неправильно указал переменные H и L? Но они и должны быть Float, а то как я сделаю например 37.2?
Наладчик КИП и А
Сообщение отредактировал
Broka - Пт, 01.07.2011, 22:30
|
|
|
|
ivan_fd |
Дата: Пт, 01.07.2011, 22:43 | Сообщение # 2 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Ну так если Вы пишите в еепром переменную типа Float, то H пишите с адреса 2, а L нужно писать с адреса 6. Потому что тип float занимает в памяти 4 байта.
|
|
|
|
Broka |
Дата: Сб, 02.07.2011, 18:05 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
253
Замечания:
±
На сайте с 30.09.2009
Статус:
Offline
|
ivan_fd, Спасибо большое, точно, так оно и есть! Старость не радость , совсем забыл.........
Наладчик КИП и А
|
|
|
|