Да он, собственно, такой же, как и в той статье
Code
#include <mega8.h>
#include <lcd.h>
#include <delay.h>
#include <stdio.h>
#include <1wire.h>
#include <ds18b20.h>
#asm
.equ __w1_port=0x15 ;PORTC
.equ __w1_bit=3
#endasm
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
char lcd_buffer[33];
void main(void)
{
unsigned char devices;
int temp;
PORTB=0x00; //Порт В
DDRB=0xFF; //Все порты - на выход
lcd_init(16);
lcd_putsf("Start");
delay_ms(500);
devices=w1_init();
if(devices>0)
{
lcd_clear();
lcd_putsf("DS17B20 detected");
}
while(devices>0)
{
temp=ds18b20_temperature(0);
//Вот тут должен быть вывод температуры
//Я поставил проверку, зависает
//после этой функции
if(temp>0)
{
lcd_putsf("1");
}
else if(temp<0)
{
lcd_putsf("0");
}
/** if(temp>1000)
{
temp=4096-temp;
temp=-temp;
}
sprintf(lcd_buffer,"T=%i.%u\xdfC",temp,temp%1);
lcd_clear();
lcd_puts(lcd_buffer);
delay_ms(500);**/
}
}
Вот если закомментирован последний блок с выводом температуры - все хорошо, проверку проходит, вывод 1 при температуре больше нуля и 0 при T<0. Но если убрать комментарии из вывод теспературы на экран - все виснет на надписи "DS18B20 detected"
Добавлено (23.12.2010, 20:06)
---------------------------------------------
виснет после формирования строки для вывода на ЖКИ - sprintf