Mercurial > public > mk2
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 |
