0
|
1
|
|
2 ; OSTC - diving computer code
|
|
3 ; Copyright (C) 2008 HeinrichsWeikamp GbR
|
|
4
|
|
5 ; This program is free software: you can redistribute it and/or modify
|
|
6 ; it under the terms of the GNU General Public License as published by
|
|
7 ; the Free Software Foundation, either version 3 of the License, or
|
|
8 ; (at your option) any later version.
|
|
9
|
|
10 ; This program is distributed in the hope that it will be useful,
|
|
11 ; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13 ; GNU General Public License for more details.
|
|
14
|
|
15 ; You should have received a copy of the GNU General Public License
|
|
16 ; along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
|
18
|
|
19 ; takes care of the temperature extrema routine
|
|
20 ; written by: Matthias Heinrichs, info@heinrichsweikamp.com
|
|
21 ; written: 05/15/08
|
|
22 ; last updated: 05/15/08
|
|
23 ; known bugs:
|
|
24 ; ToDo:
|
|
25
|
|
26 check_temp_extrema: ; called once every minute from Sleeploop, Surfloop and Diveloop
|
|
27 read_int_eeprom d'54' ; get lowest temperature so far
|
|
28 movff EEDATA,sub_b+0
|
|
29 read_int_eeprom d'55'
|
|
30 movff EEDATA,sub_b+1
|
|
31 movff temperature+0,sub_a+0
|
|
32 movff temperature+1,sub_a+1
|
|
33 call sub16 ; sub_c = sub_a - sub_b
|
|
34 btfss neg_flag ; new lowest temperature ?
|
|
35 bra check_temp_extrema_high
|
|
36 ; Yes, store new value together with the date
|
|
37 movff temperature+0,EEDATA
|
|
38 write_int_eeprom d'54'
|
|
39 movff temperature+1,EEDATA
|
|
40 write_int_eeprom d'55'
|
|
41 movff month,EEDATA
|
|
42 write_int_eeprom d'56'
|
|
43 movff day,EEDATA
|
|
44 write_int_eeprom d'57'
|
|
45 movff year,EEDATA
|
|
46 write_int_eeprom d'58'
|
|
47 ; Now check high extrema
|
|
48 check_temp_extrema_high:
|
|
49 read_int_eeprom d'59' ; get highest temperature so far
|
|
50 movff EEDATA,sub_b+0
|
|
51 read_int_eeprom d'60'
|
|
52 movff EEDATA,sub_b+1
|
|
53 movff temperature+0,sub_a+0
|
|
54 movff temperature+1,sub_a+1
|
|
55 call sub16 ; sub_c = sub_a - sub_b
|
|
56 btfsc neg_flag ; new highest temperature ?
|
|
57 return ; no, quit!
|
|
58 ; Yes, store new value together with the date
|
|
59 movff temperature+0,EEDATA
|
|
60 write_int_eeprom d'59'
|
|
61 movff temperature+1,EEDATA
|
|
62 write_int_eeprom d'60'
|
|
63 movff month,EEDATA
|
|
64 write_int_eeprom d'61'
|
|
65 movff day,EEDATA
|
|
66 write_int_eeprom d'62'
|
|
67 movff year,EEDATA
|
|
68 write_int_eeprom d'63'
|
|
69 return |