menu_tmr это счетчик по кругу 0-19, 20 тиков примерно 1 секунда
#include ‹mega8.h›
#asm
.equ __w1_port=0x15
.equ __w1_bit=0
#endasm
#include ‹1wire.h›
#include ‹delay.h›
//#define LED_CATODE
#define LED_DOT_MASK 0x7f
#define ALARM PORTC.4
#define BTN_PLUS PINC.3
#define BTN_MINUS PINC.2
#define JUMPER PINC.1
#define
DS18S20_FAMILY 0x10
#define
DS18B20_FAMILY 0x28
#define
DS1822_FAMILY 0x22
#define DS_READ_ROM 0x33
#define DS_SKIP_ROM 0xcc
#define DS_CONVERT_T 0x44
#define DS_WRITE_SCRATCHPAD 0x4e
#define DS_READ_SCRATCHPAD 0xbe
#define DS_12BITS 0x7f
flash byte dig_table[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0,0xff,0xbf};
byte menu_tmr=0;
byte led_dig=0;
byte led_buff[4];
trom ds_rom;
tscratchpad ds_sp;
int temp;
bit ds_ok=0;
bit btn0=0; //флаг кнопки
bit btn1=0;
byte btn_timeout=40;
int alarm_temp;
eeprom int epp_alarm_temp=0;
interrupt [TIM0_OVF] void tmr0_ovf() {
#ifdef LED_CATODE
PORTB=0x0f;
PORTD=~led_buff[led_dig];
PORTB=(~(1‹‹led_dig))&0x0f;
#else
PORTB=0;
PORTD=led_buff[led_dig];
PORTB=1‹‹led_dig;
#endif
led_dig++;
if (led_dig›3) led_dig=0;
}