<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.mcselec.com/bavr/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.mcselec.com/bavr/index.php?action=history&amp;feed=atom&amp;title=1WSEARCHFIRST</id>
		<title>1WSEARCHFIRST - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.mcselec.com/bavr/index.php?action=history&amp;feed=atom&amp;title=1WSEARCHFIRST"/>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/index.php?title=1WSEARCHFIRST&amp;action=history"/>
		<updated>2026-04-17T22:38:57Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.18.6</generator>

	<entry>
		<id>http://wiki.mcselec.com/bavr/index.php?title=1WSEARCHFIRST&amp;diff=271&amp;oldid=prev</id>
		<title>Admin: Created page with &quot;= &lt;span class=&quot;f_Header&quot;&gt;Action&lt;/span&gt;&lt;br/&gt; =  This statement reads the first ID from the 1wire bus into a variable(array).  &lt;span style=&quot;font-family: 'Arial';  color: #000000...&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/index.php?title=1WSEARCHFIRST&amp;diff=271&amp;oldid=prev"/>
				<updated>2013-02-01T12:40:50Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Action&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =  This statement reads the first ID from the 1wire bus into a variable(array).  &amp;lt;span style=&amp;quot;font-family: &amp;#039;Arial&amp;#039;;  color: #000000...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Action&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
This statement reads the first ID from the 1wire bus into a variable(array).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
var2 = &amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;1WSEARCHFIRST&amp;lt;/span&amp;gt;()&lt;br /&gt;
&lt;br /&gt;
var2 = &amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;1WSEARCHFIRST&amp;lt;/span&amp;gt;( port , pin)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Remarks&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: left;  text-indent: 0px;  padding: 0px 0px 0px 0px;  margin: 0px 0px 0px 4px&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: solid 2px #000000;  border-spacing:0px;  border-collapse: collapse&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; width=&amp;quot;604&amp;quot;&lt;br /&gt;
|- style=&amp;quot;text-align:left;  vertical-align:top&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:15%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;15%&amp;quot; | &lt;br /&gt;
var2&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:100%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; | &lt;br /&gt;
A variable or array that should be at least 8 bytes long that will be assigned with the 8 byte ID from the first 1wire device on the bus.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;text-align:left;  vertical-align:top&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:15%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;15%&amp;quot; | &lt;br /&gt;
port&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:100%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; | &lt;br /&gt;
The PIN port name like PINB or PIND.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;text-align:left;  vertical-align:top&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:15%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;15%&amp;quot; | &lt;br /&gt;
pin&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:100%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; | &lt;br /&gt;
The pin number of the port. In the range from 0-7. Maybe a numeric constant or variable.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The 1wireSearchFirst() function must be called once to initiate the ID retrieval process. After the 1wireSearchFirst() function is used you should use successive function calls to the [[1WSEARCHNEXT|1wSearchNext]] function to retrieve other ID's on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A string can not be assigned to get the values from the bus. This because a null may be returned as a value and the null is also used as a string terminator.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I would advice to use a byte array as shown in the example.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The 1wirecount function will take 4 bytes of SRAM.&lt;br /&gt;
&lt;br /&gt;
___1w_bitstorage , Byte used for bit storage&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
lastdeviceflag bit 0&lt;br /&gt;
&lt;br /&gt;
id_bit bit 1&lt;br /&gt;
&lt;br /&gt;
cmp_id_bit bit 2&lt;br /&gt;
&lt;br /&gt;
search_dir bit 3&lt;br /&gt;
&lt;br /&gt;
___1wid_bit_number, Byte&lt;br /&gt;
&lt;br /&gt;
___1wlast_zero, Byte&lt;br /&gt;
&lt;br /&gt;
___1wlast_discrepancy , Byte&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;ASM&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The following asm routines are called from mcs.lib.&lt;br /&gt;
&lt;br /&gt;
_1wire_Search_First&amp;amp;nbsp;: (calls _1WIRE, _ADJUST_PIN , _ADJUST_BIT_ADDRESS)&lt;br /&gt;
&lt;br /&gt;
Parameters passed&amp;amp;nbsp;: R24&amp;amp;nbsp;: pin number, R30&amp;amp;nbsp;: port , X&amp;amp;nbsp;: address of target array&lt;br /&gt;
&lt;br /&gt;
Returns nothing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See also&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[1WWRITE]] , [[1WRESET]] , [[1WREAD|1WREAD ]], [[1WSEARCHNEXT]], [[1WIRECOUNT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : 1wireSearch.bas&lt;br /&gt;
'copyright : (c) 1995-2005, MCS Electronics&lt;br /&gt;
'purpose : demonstrates 1wsearch&lt;br /&gt;
'micro : Mega48&lt;br /&gt;
'suited for demo : yes&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot;&lt;br /&gt;
$crystal = 4000000&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 'default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 'default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Config 1wire = Portb.0 'use this pin&lt;br /&gt;
'On the STK200 jumper B.0 must be inserted&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
'The following internal bytes are used by the scan routines&lt;br /&gt;
'___1w_bitstorage , Byte used for bit storage :&lt;br /&gt;
' lastdeviceflag bit 0&lt;br /&gt;
' id_bit bit 1&lt;br /&gt;
' cmp_id_bit bit 2&lt;br /&gt;
' search_dir bit 3&lt;br /&gt;
'___1wid_bit_number, Byte&lt;br /&gt;
'___1wlast_zero, Byte&lt;br /&gt;
'___1wlast_discrepancy , Byte&lt;br /&gt;
'___1wire_data , string * 7 (8 bytes)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
'[DIM variables used]&lt;br /&gt;
'we need some space from at least 8 bytes to store the ID&lt;br /&gt;
Dim Reg_no(8) As Byte&lt;br /&gt;
 &lt;br /&gt;
'we need a loop counter and a word/integer for counting the ID's on the bus&lt;br /&gt;
Dim I As Byte , W As Word&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
'Now search for the first device on the bus&lt;br /&gt;
Reg_no(1) = 1wsearchfirst()&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
For I = 1 To 8 'print the number&lt;br /&gt;
 Print Hex(reg_no(i));&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Do&lt;br /&gt;
'Now search for other devices&lt;br /&gt;
Reg_no(1) = 1wsearchnext()&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Print Hex(reg_no(i));&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
Loop Until Err = 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
'When ERR = 1 is returned it means that no device is found anymore&lt;br /&gt;
'You could also count the number of devices&lt;br /&gt;
W = 1wirecount()&lt;br /&gt;
'It is IMPORTANT that the 1wirecount function returns a word/integer&lt;br /&gt;
'So the result variable must be of the type word or integer&lt;br /&gt;
'But you may assign it to a byte or long too of course&lt;br /&gt;
Print W&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
'as a bonus the next routine :&lt;br /&gt;
' first fill the array with an existing number&lt;br /&gt;
Reg_no(1) = 1wsearchfirst()&lt;br /&gt;
' unremark next line to chance a byte to test the ERR flag&lt;br /&gt;
'Reg_no(1) = 2&lt;br /&gt;
'now verify if the number exists&lt;br /&gt;
1wverify Reg_no(1)&lt;br /&gt;
Print Err&lt;br /&gt;
'err =1 when the ID passed n reg_no() does NOT exist&lt;br /&gt;
' optinal call it with pinnumber line 1wverify reg_no(1),pinb,1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
'As for the other 1wire statements/functions, you can provide the port and pin number as anoption&lt;br /&gt;
'W = 1wirecount(pinb , 1) 'for example look at pin PINB.1&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_Language_Reference]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>