Re: BASCOM AVR в вопросах и ответах
Добавлено: Сб окт 30, 2010 08:06:29
PROTEUS отлично симулирует проекты BASCOM ! Это удобно.
Здесь можно немножко помяукать :)
https://radiokot.ru/forum/
И что это было???radio-kot писал(а):PROTEUS отлично симулирует проекты BASCOM ! Это удобно.
В PROTEUS ?Igor_67 писал(а):Почему вместо, допустим -16, кажет -15 ?
Вы что, издеваетесь? Посмотрите несколькими постами выше - там все есть...radio-kot писал(а):Приложите пожалуйста архив с прожектом BASCOM и PROTEUS - позырю.
Код: Выделить всё
$regfile = "m8def.dat"
$crystal = 12000000
Declare Sub Convallt ' !!!!!! Convert T on ALL sensors
Declare Function Decigrades(byval Sc(9) As Byte) As Integer
Config Lcd = 16 * 2 ' дисплей 2 строки по 16 символов
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.5 , Rs = Portb.4 ' конфигурируем дисплей
Config 1wire = Portd.0 ' на эту ножку подключим DS18B20 и подтягивающий резистор на 4,7 ком к + питания
'Temp variables
Dim B As Byte
Dim W As Word
Dim Dg As Integer 'DECIgrades, I call it, cause I have no space for commas on the display....
Dim Dsid1(8) As Byte 'Dallas ID 64 bits incl CRC
Dim Sc(9) As Byte 'Scratchpad 0-8 72 bits incl CRC, explanations for DS18b20
Cls
W = 1wirecount()
Dsid1(1) = 1wsearchfirst()
' First sensor identified and stored in variable
If Dsid1(8) = Crc8(dsid1(1) , 7) Then ' Control that the received CRC match the calculated
Locate 1 , 1
Lcd "CRC OK Sensor 1 ID"
Wait 1
Locate 2 , 1
For B = 1 To 8
Lcd Hex(dsid1(b))
Next
End If
Wait 1
Cls
' Main loop
Do
Convallt ' "Convert ALL T on the 1w-bus"
Waitms 750
1wverify Dsid1(1) 'Issues the "Match ROM "
Locate 1 , 1
1wwrite &HBE
Sc(1) = 1wread(9) 'read bytes into array
If Sc(9) = Crc8(sc(1) , 8) Then
Dg = Decigrades(sc(9))
Locate 1 , 1
Lcd Dg
End If
Loop
End 'end program
Sub Convallt
1wreset ' reset the bus
1wwrite &HCC ' skip rom
1wwrite &H44 ' Convert T
End Sub
'Makes a integer value of the first two bytes in scratchpad'''''''''''''
'Works on DS18 B 20 , observe "B". The R0 and R1 in Sc(5) tells you how many bits are accurate
Function Decigrades(byval Sc(9) As Byte)
Decigrades = 0
Decigrades = Makeint(sc(1) , Sc(2))
Decigrades = Decigrades * 10
Decigrades = Decigrades / 16
End FunctionЭто AVR123 пиарит протеус!Igor_67 писал(а):И что это было???
Спасибо, буду пробовать.Igor_67 писал(а):А что если написать по-человечески?:
If Speedflag = 1 Then
Call Hilighton
Else
Call Hilightoff
End If
или так:
If Speedflag = 1 Then Call Hilighton Else Call Hilightoff
End If
В Баскоме конструкции IF-THEN-ELSE прописаны по строгим правилам и всякого рода ухищрения здесь не проканывают! Извините за жаргон...
Код: Выделить всё
Shift B0 , Right , 5
Shift B1 , Left , 3Код: Выделить всё
'*************************** подпрограмма термометра *******************
Termo:
1wreset
Stop Timer0 ' : Portd = 255
1wwrite &HCC ' Выдаем команду чтения ПЗУ
1wwrite &H44 ' Запуск измерения
Start Timer0
Waitms 750 ' Ждем окончания преобразования
1wreset
Stop Timer0 '
1wwrite &HCC
1wwrite &HBE ' Команда чтения ОЗУ датчика
BYTE0 = 1wread() ' Читаем нулевой байт
BYTE1 = 1wread() ' Читаем первый байт
Start Timer0
Tochka = 0
If BYTE1 > 247 Then '
A = BYTE0 Mod 16 'берём мадшие 4 бита
A = A * 10 'переводим их из дробной в целую
A = A / 16
T2 = 10 - A 'вычисление дробной части в диапазоне отрицательных температур
BYTE0 = &HFF - BYTE0 ' переводим из отрицательной в положительную
BYTE1 = &HFF - BYTE1
Cifri(1) = 12
GoSub Ter
If T2 = 10 Then ' тут как раз ошибка была
T2 = 0
T1 = T1 + 1
End If ' коррекция при преходе через -Х,0
If T1 > 9 Then
Tochka = 2
Cifri(2) = T1 / 10
Cifri(3) = T1 Mod 10
Cifri(4) = T2
Else
Tochka = 0
Cifri(2) = T1 Mod 10
Cifri(3) = T2
Cifri(4) = 13
End If
Else
T2 = BYTE0 * 10
T2 = T2 / 16
GoSub Ter
Cifri(1) = T1 / 10
Cifri(2) = T1 Mod 10 '
Cifri(3) = T2 Mod 10
Cifri(4) = 13
End If
Waitms 300
ReturnКод: Выделить всё
If Speedflag = 1 Then
Gosub HilightonЗамени Call на Gosub как предложил kip96spy-tuning писал(а):без декларирования ругается что не декларированы.
Заменил, Баском говорит что ошибка, не задекларированы мол...Мурик писал(а):Замени Call на Gosub как предложил kip96spy-tuning писал(а):без декларирования ругается что не декларированы.