Mercurial > public > mk2
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/code_part1/OSTC_code_asm_part1/temp_extrema.asm Tue Jan 12 15:05:59 2010 +0100 @@ -0,0 +1,69 @@ + +; OSTC - diving computer code +; Copyright (C) 2008 HeinrichsWeikamp GbR + +; This program is free software: you can redistribute it and/or modify +; it under the terms of the GNU General Public License as published by +; the Free Software Foundation, either version 3 of the License, or +; (at your option) any later version. + +; This program is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +; GNU General Public License for more details. + +; You should have received a copy of the GNU General Public License +; along with this program. If not, see <http://www.gnu.org/licenses/>. + + +; takes care of the temperature extrema routine +; written by: Matthias Heinrichs, info@heinrichsweikamp.com +; written: 05/15/08 +; last updated: 05/15/08 +; known bugs: +; ToDo: + +check_temp_extrema: ; called once every minute from Sleeploop, Surfloop and Diveloop + read_int_eeprom d'54' ; get lowest temperature so far + movff EEDATA,sub_b+0 + read_int_eeprom d'55' + movff EEDATA,sub_b+1 + movff temperature+0,sub_a+0 + movff temperature+1,sub_a+1 + call sub16 ; sub_c = sub_a - sub_b + btfss neg_flag ; new lowest temperature ? + bra check_temp_extrema_high + ; Yes, store new value together with the date + movff temperature+0,EEDATA + write_int_eeprom d'54' + movff temperature+1,EEDATA + write_int_eeprom d'55' + movff month,EEDATA + write_int_eeprom d'56' + movff day,EEDATA + write_int_eeprom d'57' + movff year,EEDATA + write_int_eeprom d'58' + ; Now check high extrema +check_temp_extrema_high: + read_int_eeprom d'59' ; get highest temperature so far + movff EEDATA,sub_b+0 + read_int_eeprom d'60' + movff EEDATA,sub_b+1 + movff temperature+0,sub_a+0 + movff temperature+1,sub_a+1 + call sub16 ; sub_c = sub_a - sub_b + btfsc neg_flag ; new highest temperature ? + return ; no, quit! + ; Yes, store new value together with the date + movff temperature+0,EEDATA + write_int_eeprom d'59' + movff temperature+1,EEDATA + write_int_eeprom d'60' + movff month,EEDATA + write_int_eeprom d'61' + movff day,EEDATA + write_int_eeprom d'62' + movff year,EEDATA + write_int_eeprom d'63' + return \ No newline at end of file