|
[pre]
/* Dallas Semiconductor DS1990 Serial Number
1 Wire iButton demo
CodeVisionAVR C Compiler
(C) 2000-2002 HP InfoTech S.R.L.
www.hpinfotech.ro
Chip: AT90S8515
Memory Model: SMALL
Data Stack Size: 128 bytes
specify the port and bit used for the 1 Wire bus
The DS1990 devices are connected to
bit 6 of PORTA of the AT90S8515 on the STK500
development board as follows:
[DS1990] [PORTA header]
1 GND - 9 GND
2 DATA - 7 PA6
All the devices must be connected in parallel
A 4.7k PULLUP RESISTOR MUST BE CONNECTED
BETWEEN DATA (PA6) AND PORTA HEADER PIN 10 (VTG) !
In order to use the RS232 SPARE connector
on the STK500, the following connections must
be made:
[RS232 SPARE header] [PORTD header]
RXD - 1 PD0
TXD - 2 PD1
*/
#asm
.equ __w1_port=0x1b
.equ __w1_bit=6
#endasm
#include <1wire.h> #define DS1990_FAMILY_CODE 1 /* DS1990 devices ROM code storage area, main() { // detect how many 1 Wire devices are present on the bus
E-mail:
info@telesys.ru
#include <90s8515.h>
#include
#define SEARCH_ROM 0xF0
9 bytes are used for each device
(see the w1_search function description),
but only the first 8 bytes contain the ROM code
and CRC */
#define MAX_DEVICES 8
unsigned char rom_code[MAX_DEVICES,9];
unsigned char i,j,devices;
unsigned char n=1;
// init UART
UCR=8;
UBRR=23; // Baud=9600 @ 3.6864MHz
// print welcome message
printf("DS1990 Serial Number iButton demo\n\r");
devices=w1_search(SEARCH_ROM,&rom_code[0,0]);
printf("%u device(s) found\n\r",devices);
for (i=0;i
if (rom_code[i,0]==DS1990_FAMILY_CODE)
{
printf("DS1990 #%u serial number:",n++);
for (j=1;j<=6;j++)
printf(" %02X",rom_code[i,j]);
printf("\n\r");
};
}
[/pre]
Ответы