#include <mega8535.h>
// 1 Wire Bus functions
#asm
.equ __w1_port=0x18 ;PORTB
.equ __w1_bit=0
#endasm
#include <1wire.h>
#include <stdio.h> // Standard Input/Output functions
#define MAX_DEVICES 1 //определяем максимальное количество устройств на шине
unsigned char rom_codes[MAX_DEVICES][9]; //выделяет память (9 бит умноженное на кол-во устройств)
void main(void)
{
unsigned char i=0;
unsigned char j;
unsigned char devices;
// USART initialization
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x03;
// Analog Comparator: Off
ACSR=0x80;
w1_init(); // 1 Wire Bus initialization
// Watchdog Timer initialization
#pragma optsize-
WDTCR=0x1F;
WDTCR=0x0F;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
//ищем устройство командой 0xf0, в rom_codes ложится 9 байт (family-1,serial-6,CRC8-1,некоторые устройства возвращают 9 байт)
devices=w1_search(0xf0,rom_codes);
/* display the ROM codes for each detected device */
printf("%-u DEVICE(S) DETECTED\n\r",devices); // выводим количество подключенных устройств
for (j=0;j<9;j++) // задаем, какую часть кода выводить
{
printf("%-X",rom_codes[i][j]);
}
printf("\n\r");
}
На основе примера из CVAVR програмка, которая в сом-порт сбрасывает номер подключенного 1-wire устройства (DS1990). Эта часть кода работает.
Подскажите, как сравнить номер "таблетки" с неким заданным значением, которое можно будет определить в начале программы, или с несколькими значениями. Вот собственно вопрос мой...
Еще приветствуются указание моих косяков в программе и в комментариях