diff code_part1/OSTC_code_asm_part1/alt_wait.asm @ 0:96a35aeda5f2

Initial setup
author heinrichsweikamp
date Tue, 12 Jan 2010 15:05:59 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/code_part1/OSTC_code_asm_part1/alt_wait.asm	Tue Jan 12 15:05:59 2010 +0100
@@ -0,0 +1,399 @@
+; 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/>.
+; Wait routines
+; written by: chsw, info@heinrichsweikamp.com
+; written: 01/31/04
+; last updated: 11/05/07
+; known bugs:
+; ToDo: 
+	IFDEF	Clk_4_MHZ
+  MESSG "wait_v2i: switched to 4 MHZ operation"
+ ELSE 
+  IFDEF Clk_8_MHZ
+    MESSG "wait_v2i: switched to 8 MHZ operation"
+  ELSE
+  IFDEF Clk_16_MHZ
+    MESSG "wait_v2i: switched to 16 MHZ operation"
+  ELSE
+   IFDEF Clk_20_MHZ
+    MESSG "wait_v2i: switched to 20 MHZ operation"
+    ELSE
+     ERROR "wait_v2i: Operating Frequency has to be specified by #DEFINE Clk_4_MHZ or Clk_8_MHZ"
+    ENDIF
+  ENDIF
+ ENDIF
+ IFDEF	Clk_16_MHZ
+; ==========================================================
+; 	WAIT 10 MICROSECONDS  -  16 MHZ
+; ==========================================================
+WAIT10US 	macro	wait_temp
+			movlw	wait_temp
+	IFNDEF DEBUG
+			call	WAIT10USX
+	ENDIF
+			endm
+
+WAIT10USX	movwf	wait_temp
+			goto	JumpIn10us
+WAIT10USX2	nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+JumpIn10us:
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			decfsz	wait_temp,1
+			goto	WAIT10USX2
+			return
+; ==========================================================
+; 	WAIT 1 MILLISECOND  -  16 MHZ
+; ==========================================================
+WAITMS		macro	waitms_temp
+			movlw	waitms_temp
+	IFNDEF	DEBUG
+			call WAITMSX
+	ENDIF
+			endm
+WAITMSX		movwf	waitms_temp
+			goto	JumpInMSX
+WAITMSX2	nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+JumpInMSX:
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			WAIT10US d'99'
+			decfsz	waitms_temp,1
+			goto	WAITMSX2
+			return
+ ELSE
+ IFDEF	Clk_8_MHZ
+; ==========================================================
+; 	WAIT 10 MICROSECONDS  -  8 MHZ
+; ==========================================================
+WAIT10US 	macro	wait_temp
+			movlw	wait_temp
+	IFNDEF DEBUG
+			call	WAIT10USX
+	ENDIF
+			endm
+WAIT10USX	movwf	wait_temp
+			goto	JumpIn10us
+WAIT10USX2	nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+JumpIn10us:
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			decfsz	wait_temp,1
+			goto	WAIT10USX2
+			return
+; ==========================================================
+; 	WAIT 1 MILLISECOND  -  8 MHZ
+; ==========================================================
+WAITMS		macro	waitms_temp
+			movlw	waitms_temp
+	IFNDEF	DEBUG
+			call WAITMSX
+	ENDIF
+			endm
+WAITMSX		movwf	waitms_temp
+			goto	JumpInMSX
+	
+WAITMSX2	nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+JumpInMSX:
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			WAIT10US d'99'
+			decfsz	waitms_temp,1
+			goto	WAITMSX2
+			return
+ ELSE
+ IFDEF	Clk_4_MHZ
+; ==========================================================
+; 	WAIT 10 MICROSECONDS  -  4 MHZ
+; ==========================================================
+WAIT10US 	macro	wait_temp
+			movlw	wait_temp
+	IFNDEF DEBUG
+			call	WAIT10USX
+	ENDIF
+			endm
+WAIT10USX	movwf	wait_temp
+			goto	JumpIn10us
+WAIT10USX2	nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+JumpIn10us:
+			decfsz	wait_temp,1
+			goto	WAIT10USX2
+			return
+; ==========================================================
+; 	WAIT 1 MILLISECOND  -  4 MHZ
+; ==========================================================
+WAITMS		macro	waitms_temp
+			movlw	waitms_temp
+	IFNDEF	DEBUG
+			call WAITMSX
+	ENDIF
+			endm
+WAITMSX		movwf	waitms_temp
+			goto	JumpInMSX
+	
+WAITMSX2	nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+JumpInMSX:
+			WAIT10US d'99'
+			decfsz	waitms_temp,1
+			goto	WAITMSX2
+			return
+ ELSE
+ IFDEF	Clk_20_MHZ
+ ==========================================================
+; 	WAIT 10 MICROSECONDS  -  20 MHZ
+; ==========================================================
+WAIT10US 	macro	wait_temp
+			movlw	wait_temp
+	IFNDEF DEBUG
+			call	WAIT10USX
+	ENDIF
+			endm
+WAIT10USX	movwf	wait_temp
+			goto	JumpIn10us
+WAIT10USX2	nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+JumpIn10us:
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			decfsz	wait_temp,1
+			goto	WAIT10USX2
+			return
+; ==========================================================
+; 	WAIT 1 MILLISECOND  -  20 MHZ
+; ==========================================================
+WAITMS		macro	waitms_temp
+			movlw	waitms_temp
+	IFNDEF	DEBUG
+			call WAITMSX
+	ENDIF
+			endm
+WAITMSX		movwf	waitms_temp
+			goto	JumpInMSX
+	
+WAITMSX2	nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+JumpInMSX:
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			nop
+			WAIT10US d'99'
+			decfsz	waitms_temp,1
+			goto	WAITMSX2
+			return
+ ENDIF
+ ENDIF
+ ENDIF
+ ENDIF
+ ENDIF
+
+
+wait_one_second:
+	WAITMS	d'250'
+	WAITMS	d'250'
+	WAITMS	d'250'
+	WAITMS	d'250'
+	return