comparison code_part1/OSTC_code_asm_part1/temp_extrema.asm @ 0:96a35aeda5f2

Initial setup
author heinrichsweikamp
date Tue, 12 Jan 2010 15:05:59 +0100
parents
children 2144f19fa1eb
comparison
equal deleted inserted replaced
-1:000000000000 0:96a35aeda5f2
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