DS18B20 - Форум Picbasic.ru
Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: ivan_fd 
Форум Picbasic.ru » Программирование МК » PicBasicPro » DS18B20
DS18B20
tolyan249 Дата: Пн, 05.01.2009, 11:45  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 166
Репутация: 0   ±
Замечания:   ±
На сайте с 11.10.2007

Статус: Offline

'****************************************************************
'* Name : Temp.BAS *
'* Author : Bruce Reynolds *
'* Notice : Copyright © 2003 Reynolds Electronics *
'* : All Rights Reserved *
'* Date : 7/28/2003 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
DEFINE loader_used 1 ' Boot-Loader is being used
DEFINE osc 4 ' We're using a 4MHz oscillator
Comm_Pin VAR PortB.0 ' One-wire Data-Pin "DQ" on PortB.0
Busy VAR BIT ' Busy Status-Bit
R_Temp VAR WORD ' RAW Temperature readings
TempC VAR WORD ' Temp in deg C
TempF VAR WORD ' Temp in deg F
Float VAR WORD ' Holds remainder for + temp C display
Cold_Bit VAR R_Temp.Bit11' Sign-Bit for +/- Temp. 1 = Below 0 deg C
Real_Cold CON 1 ' Define Real_Cold = 1
BAUD CON 16468 ' N9600 for serial LCD
DISP VAR PortA.0 ' Pin to drive serial LCD
Deg CON 223 ' Data to display Deg ° symbol
CLR CON 1 ' CLR LCD command
LINE1 CON 128 ' LCD line #1
LINE2 CON 192 ' LCD line #2
LINE3 CON 148 ' LCD line #3
LINE4 CON 212 ' LCD line #4
INS CON 254 ' LCD command mode parameter
Sign VAR BYTE ' +/- sign for temp display
Dummy VAR BYTE ' Dummy for Div32

SEROUT2 DISP,BAUD, [INS,CLR]
Start_Convert:
OWOUT Comm_Pin, 1, [$CC, $44]' Skip ROM search & do temp conversion

Wait_Up:
OWIN Comm_Pin, 4, [Busy] ' Read busy-bit
IF Busy = 0 THEN Wait_Up ' Still busy..?, Wait_Up..!
OWOUT Comm_Pin, 1, [$CC, $BE]' Skip ROM search & read scratchpad memory
OWIN Comm_Pin, 2, [R_Temp.Lowbyte, R_Temp.Highbyte]' Read two bytes / end comms
GOSUB Convert_Temp
GOTO Start_Convert

Convert_Temp: ' +32.0 to +257 F
IF Cold_Bit = Real_Cold THEN Yikes ' If Cold_Bit = 1, it's below "0" deg C
Sign = "+"
Dummy = 625 * R_Temp ' Multiply to load internal registers with 32-bit value
TempC = DIV32 10 ' Use Div32 value to calculate precise deg C
Dummy = 1125 * R_Temp
TempF = DIV32 100
IF TempF >6795 THEN ' Over 99.5 deg F..?
TempF = TempF + 3200
SEROUT2 DISP,BAUD, [INS,LINE1, " TempF = ",Sign,DEC TempF DIG 4,_
DEC TempF DIG 3,DEC TempF DIG 2,".",DEC2 TempF,Deg,"F "]
ELSE
TempF = TempF + 3200
SEROUT2 DISP,BAUD, [INS,LINE1, " TempF = ",Sign,DEC TempF DIG 3,_
DEC TempF DIG 2,".",DEC2 TempF,Deg,"F "]
ENDIF
TempC = (R_Temp & $0FF0) >> 4 ' Mask middle 8-bits, shift into lower byte
Float = ((R_Temp.Lowbyte & $0F) * 625) ' Lower 4-bits of result * 625
SEROUT2 DISP,BAUD, [INS,LINE2, " TempC = ",Sign,DEC TempC,".",DEC Float,Deg,"C "]
SEROUT2 DISP,BAUD, [INS,LINE4, "Raw", IBIN16 R_Temp]
RETURN

Yikes: ' Display full range -C to -F conversion
Sign = "-" ' Display - symbol for negative temp
Dummy = 625 * ~R_Temp+1' Multiply to load internal registers with 32-bit value
TempC = DIV32 10 ' Use Div32 value to calculate precise deg C
TempF = ~R_Temp / 16 ' Begin conversion from -C to deg +/-F
IF TempF >=18 THEN ' Check for -degrees F "-18 C = -0.4 F"
TempF = ((((TempF + 50) * 9) /5) -122) ' -C to -F below -17 deg C
SEROUT2 DISP,BAUD, [INS,LINE1, " TempF = ",Sign, DEC TempF,Deg,"F "]
SEROUT2 DISP,BAUD, [INS,LINE2, " TempC = ",Sign,DEC TempC DIG 4,_
DEC TempC DIG 3,".",DEC3 TempC,Deg,"C "]
SEROUT2 DISP,BAUD, [INS,LINE4, "Raw", IBIN16 R_Temp]
ELSE ' Else result = +deg F
TempF = ((((-TempF + 50) * 9) /5) -58)' -C to +F below 32.0 deg F to -17 deg C
SEROUT2 DISP,BAUD, [INS,LINE1, " TempF = ","+",DEC TempF,Deg,"F "]
SEROUT2 DISP,BAUD, [INS,LINE2, " TempC = ",Sign,DEC TempC DIG 4,_
DEC TempC DIG 3,".",DEC3 TempC,Deg,"C "]
SEROUT2 DISP,BAUD, [INS,LINE4, "Raw", IBIN16 R_Temp]
ENDIF
RETURN

END

==========================================================

этот код работает для PIC16F84 .
Вопрос в том что я операторы в к ниге не нашел таких что они делают
Cобрал работает,просто интересно.
OWOUT
OWIN


если знаешь,помоги.
ЯНДЕКС Дата: 05.01.2009
RA9UBD Дата: Пн, 05.01.2009, 15:34  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 67
Репутация: 0   ±
Замечания:   ±
На сайте с 11.04.2008

Статус: Offline

Quote
этот код работает для PIC16F84

Проверь в протеусе. Должен работать.

ADMIN Дата: Пн, 05.01.2009, 17:37  |                                                                                                                Сообщение # 3
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1097
Репутация: 24   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Quote
этот код работает для PIC16F84 .
Вопрос в том что я операторы в к ниге не нашел таких что они делают
Cобрал работает,просто интересно.
OWOUT
OWIN

А в какой книге?
Просто книг полноценных на русском еще не очень много. А вот в хелпе родном про них все описано.

tolyan249 Дата: Вт, 06.01.2009, 06:34  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 166
Репутация: 0   ±
Замечания:   ±
На сайте с 11.10.2007

Статус: Offline

Книга Програмирование PIC-микроконтроллеров на на PicBasic,там таких операторов не нашел.

если знаешь,помоги.
evgenb Дата: Вт, 06.01.2009, 21:32  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 92
Репутация: 3   ±
Замечания:   ±
На сайте с 14.09.2007

Статус: Offline

Надо читать описание для языка.

http://basicpic.moy.su/load/3-1-0-50

http://basicpic.moy.su/load/10-1-0-51

Чак оговаривается. что дает первое знакомство языку и его возможностям, и рекомендует подробнее
знакомится с языком через описание

tolyan249 Дата: Ср, 07.01.2009, 09:20  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 166
Репутация: 0   ±
Замечания:   ±
На сайте с 11.10.2007

Статус: Offline

Спасибо всем за помощь.

если знаешь,помоги.
Форум Picbasic.ru » Программирование МК » PicBasicPro » DS18B20
Страница 1 из 11
Поиск: