[Message Prev][Message
Next][Thread Prev][Thread Next][Message
Index][Thread Index]
Re: [OT] Some pic asm code help
Hi Ian
I forgot to rotate the MSB so those values in my last post are way out....
try these MSB D2h .....LSB BBh................MSB D1h.....LSB F0h
Heres a copy of my current code which is suppose to convert the raw dat to
16 bit
Thanks agian
Frank
CEL2760
bcf neg ;clear negative flag
btfss DS_DATA1,7 ;negative ? if yes , skip next
goto cel2 ;no
bsf neg ;set negative flag
cel2 ;rotate LSB
bcf C_bit ;clear carry flag
rrf DS_DATA0,1 ;Data0 holds LSB data (0F)
bcf C_bit ;clear carry flag
rrf DS_DATA0,1 ;
bcf C_bit ;clear carry flag
rrf DS_DATA0,1
;SHIFT AND ROTATE MSB
chec_msb_bit0
btfss DS_DATA1,0 ;Check MSB Byte bit 0
goto set_lsb_5_lo ;
bsf DS_DATA0,5 ;set bit 5 of lsb byte
goto chec_msb_1 ;
set_lsb_5_lo
bcf DS_DATA0,5 ;
chec_msb_1
btfss DS_DATA1,1 ;Check MSB Byte bit 1
goto set_lsb_6_lo ;
bsf DS_DATA0,6 ;set bit 6 of lsb byte
goto chec_msb_2 ;
set_lsb_6_lo
bcf DS_DATA0,6 ;
chec_msb_2
btfss DS_DATA1,2 ;Check MSB Byte bit 2
goto set_lsb_7_lo ;
bsf DS_DATA0,7 ;set bit 7 of lsb byte
goto shift_data1 ;
set_lsb_7_lo
bcf DS_DATA0,7 ;
shift_data1
bcf DS_DATA1,0 ;
bcf DS_DATA1,1 ;
bcf DS_DATA1,2 ;
bcf C_bit ;clear carry flag
rrf DS_DATA1,1 ;
bcf C_bit ;clear carry flag
rrf DS_DATA1,1 ;
bcf C_bit ;clear carry flag
rrf DS_DATA1,1 ;
btfss neg ;check sign status
goto mask_up_nib ;
comf DS_DATA1,1 ;yes , 2,s compliment
comf DS_DATA0,1 ;yes , 2,s compliment
incf DS_DATA0,1 ;
btfsc C_bit ;
incf DS_DATA1,1 ;
mask_up_nib
movlw 0fh ;mask upper nibble
subwf DS_DATA1,1 ;
cely return ;
----- Original Message -----
From: "Ian Davidson" <ian@xxxxxxx>
To: <ukha_d@xxxxxxx>
Sent: Sunday, September 09, 2007 6:45 PM
Subject: RE: [ukha_d] [OT] Some pic asm code help
> Hi Frank
>
> As a first test I would read the device and output the actual raw word
> value you read. Then manually convert this. This will prove if you are
> actually reading the correct value and converting wrong or if the raw
> value is wrong in the first place. If you want to post the raw values
I
> can convert them here and let you know what I get the result to be.
>
> Ok just reading your post again.
>
> I can see where this is going wrong. You need to do the rotating
first.
> If you don't then when you add the 1 and later rotate you rotate it
> straight off the end. In your case the bit 0 position starts at bit 3
so
> instead of adding 1 you would have to add 8 but it is easier just to
> rotate first then do the complementing. Also treat the two bytes as
one
> value so when you complement and add 1 only add 1 to the LSB. The only
> other point to watch out for is after you complement you can mask off
> the top nibble of the MSB as after rotating the first three are not
used
> and the next is just the sign bit which is not part of the 2's
> complement.
>
> I hope that made sense it far easier to talk it than write it!
>
> Ian D
>
>
> -----Original Message-----
> From: ukha_d@xxxxxxx [mailto:ukha_d@xxxxxxx] On Behalf
> Of Frank Mc Alinden
> Sent: 09 September 2007 08:31
> To: Ian
> Subject: Re: [ukha_d] [OT] Some pic asm code help
>
> Hi Ian
>
> Firstly thanks for your feedback much appreciated...
>
> What i have done is this firstly is test bit 7 of the MSB 0E and if it
> is
> set i compliment each byte and add 1 to each of them...??
>
> I then rotate right the LSB register OF 3 times each time clearing
the
> carry flag........
>
> I then shift bits 0,1,2 of the MSB into bits 5,6 +7 of the LSB and
> rotate
> the MSB 3 times.........???
>
> With the result im using existing sub routines that i use to convert
> the
> ds18s20 results into temperature readings....
>
> The results im getting do not tally up with readings im getting using
> another device (opnode) which also has moisture sensors attached to
> it.........
>
> The moisture sensors use an external resistor so the range should go
> from
> +64mV to -64mV
>
> Thanks again
> Frank
>
>
> ----- Original Message -----
> From: "Ian Davidson" <ian@xxxxxxx>
> To: <ukha_d@xxxxxxx>
> Sent: Sunday, September 09, 2007 12:11 PM
> Subject: RE: [ukha_d] [OT] Some pic asm code help
>
>
>> Hi Frank
>>
>> I've not used that ic before but looking at the data sheet it
works
> like
>> this.
>>
>> The value you read from the ic will be a word value. It is left
>> justified so you need to rotate the value right three times to get
the
>> LSB into the bit 0 position.
>>
>> Say you read
>> 00000000 01010000
>>
>> By rotating it 3 times it will become
>> 00000000 00001010
>>
>> Now you need to test bit 12, in the example it is a zero which
means
> the
>> number is a positive number. You can therefore just use that
number in
>> this case decimal 10. If you are using the internal resistor then
the
>> resolution is 0.625mA. 10 x 0.625mA is 6.25mA which is the current
the
>> device is seeing.
>>
>> Now if bit 12 was a 1
>>
>> I.e.
>> 00011111 11110110
>> Then that is a negative number. In two complement you need to
invert
> all
>> the bits and add one for all the bits below bit 12 so
>>
>> 00000000 00001001
>>
>> Add 1
>>
>> 00000000 00001010
>>
>> Which is 10 decimal times by 0.625mA equals -6.25mA
>>
>> I hope that made sense Frank.
>>
>> Ian D
>>
>>
>> -----Original Message-----
>> From: ukha_d@xxxxxxx [mailto:ukha_d@xxxxxxx] On Behalf
>> Of Frank Mc Alinden
>> Sent: 08 September 2007 23:45
>> To: Ian
>> Subject: [ukha_d] [OT] Some pic asm code help
>>
>> Hi Guys
>>
>> Sorry for the OT post but im hoping some of the pic coders can
help
>> me....Im
>> trying to add support for the Hobby Boards moisture sensor to my
Probe
>> system and im stuck trying to write some code to convert the
readings
>> from
>> the "current registers (OE +OF) " of the DS2760...(The
mositure sensor
>> uses
>> the current sense) ...I can read the DS2760 and get the values i
just
>> cant
>> work out how to convert it to mVolts.......Any help much
>> appreciated......If
>> i get this sorted i will then have a crack at their Humidity
>> sensor.......
>> Heres a link to the hobby boards sensor and the DS2760 PDF
>> http://datasheets.maxim-ic.com/en/ds/DS2760.pdf
>>
>>
> http://www.hobby-boards.com/catalog/product_info.php?cPath=22&products_i
>> d=70
>>
>> Thanks
>> Frank
>> www.armaghelectrical.com.au
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
UKHA_D Main Index |
UKHA_D Thread Index |
UKHA_D Home |
Archives Home
|