please dont rip this site
; 30-DEC-2000   Eric Smith
; changed for GPASM assembler

;6-JAN-2000	Richard Ottosen
 
;This routine is for the SX parts in Turbo mode only. It does not matter if the
; Carry fuse is set or clear.
;
;Macro to delay for M number of cycles from 0 through 65535.
;  The macro includes paging for long calls.
;
;Uses the routine "DelW" to do the short delays and uses the variable "DelMCnt"
;  as well for long delays.
;The constants 5 and 15 must be loaded into variables "Five" and "Fifteen"
; before DelM is used.
;
;
DelM	MACRO	_MM
	IF	LOW(_MM) ==0	;No delay at all
	ENDIF
	IF	LOW(_MM) ==1
	  NOP			;Delay 1 cycle inline
	ENDIF
	IF	LOW(_MM) ==2
	  NOP			;Delay 2 cycles inline
	  NOP
	ENDIF
	IF	LOW(_MM) ==3
	  GOTO	$+1		;Delay 3 cycles inline
	ENDIF
	IF	LOW(_MM) ==4
	  GOTO	$+1		;Delay 4 cycles inline
	  NOP
	ENDIF
	IF	LOW(_MM) ==5
	  GOTO	$+1		;Delay 5 cycles inline
	  NOP
	  NOP
	ENDIF
	IF	LOW(_MM) ==6
	  GOTO	$+1		;Delay 6 cycles inline
	  GOTO	$+1
	ENDIF
	IF	LOW(_MM) ==7
	  ERRORLEVEL	-306
	  PAGE	Delay6
	  CALL	Delay6		;Delay 7 cycles
	  ERRORLEVEL	+306
	ENDIF
	IF	LOW(_MM) ==8
	  ERRORLEVEL	-306
	  PAGE	Delay7
	  CALL	Delay7		;Delay 8 cycles
	  ERRORLEVEL	+306
	ENDIF
	IF	LOW(_MM) ==9
	  ERRORLEVEL	-306
	  PAGE	Delay8
	  CALL	Delay8		;Delay 9 cycles
	  ERRORLEVEL	+306
	ENDIF
	IF	LOW(_MM) ==10
	  ERRORLEVEL	-306
	  PAGE	Delay9
	  CALL	Delay9		;Delay 10 cycles
	  ERRORLEVEL	+306
	ENDIF
	IF	LOW(_MM) ==11
	  ERRORLEVEL	-306
	  PAGE	Delay10
	  CALL	Delay10		;Delay 11 cycles
	  ERRORLEVEL	+306
	ENDIF
	IF	LOW(_MM) ==12
	  ERRORLEVEL	-306
	  PAGE	Delay11
	  CALL	Delay11		;Delay 12 cycles
	  ERRORLEVEL	+306
	ENDIF
	IF	LOW(_MM) ==13
	  ERRORLEVEL	-306
	  PAGE	Delay12
	  CALL	Delay12		;Delay 13 cycles
	  ERRORLEVEL	+306
	ENDIF
	IF	LOW(_MM) ==14
	  ERRORLEVEL	-306
	  PAGE	Delay13
	  CALL	Delay13		;Delay 14 cycles
	  ERRORLEVEL	+306
	ENDIF
	IF	LOW(_MM) ==15
	  ERRORLEVEL	-306
	  PAGE	Delay14
	  CALL	Delay14		;Delay 15 cycles
	  ERRORLEVEL	+306
	ENDIF
	IF	LOW(_MM) ==16
	  ERRORLEVEL	-306
	  PAGE	Delay15
	  CALL	Delay15		;Delay 16 cycles
	  ERRORLEVEL	+306
	ENDIF
 
	IF	LOW(_MM) >16
	  MOVLW	LOW(_MM-1)
	  ERRORLEVEL	-306
	  PAGE	DelW
	  CALL	DelW		;Delay for 17 thru 255 cycles
	  ERRORLEVEL	+306
	ENDIF
 
 
	IF	HIGH(_MM) !=0
	  LOCAL	_DelMLoop
	  MOVLW	HIGH(_MM)	;Delay more for greater than 255 cycles
	  MOVWF	DelMCnt
_DelMLoop	  MOVLW	251
	  ERRORLEVEL	-306
	  PAGE	DelW
	  CALL	DelW
	  ERRORLEVEL	+306
	  DECFSZ	DelMCnt
	  GOTO	_DelMLoop
	ENDIF
 
	ENDM
 
; Eric Smith  7/8/96	Hacked by Richard Ottosen 8/8/99
 
;-----------------------------------------------------------------------------
;This version of DelW is for the Scenix parts in Turbo mode. It does not matter
;if the Carry fuse is set or clear.
; DelW delays W cycles, including call, return, and one cycle for the
; MOVLW instruction to set up the count in W
; range is 16..255
;
; For example, the sequence:
;   MOVLW 17
;   CALL  DelW
; will take 17 cycles to execute
;-----------------------------------------------------------------------------
 
; W value on entry:		   16   17   18   19   20     21     22     23
; Caller's instructions:          ---  ---  ---  ---  ---  -----  -----  -----
;   MOVLW n			   0    0    0    0    0    0      0      0
;   CALL  DelW			   1    1    1    1    1    1      1      1
 
DelW	BSF	status,cf	;  4    4    4    4    4    4      4      4
	SUBWF	Fifteen,W	;  5    5    5    5    5    5      5      5
_DelWLp	ADDWF	Five,W		;  6    6    6    6    6    6 11   7 11   7 11
	BTFSS	status,cf	;  7    7    7    7    7    7 12     12     12
	GOTO	_DelWLp         ;                           8      8      8
	BCF	status,cf	;  9    9    9    9    9      14     14     14
	ADDWF	pcl		; 10   10   10   10   10      15     15     15
Delay10	NOP			;                     13
Delay9	NOP			;                13   14                    
Delay8	NOP			;           13   14   15             	    18
Delay7	NOP			;      13   14   15   16             18     19
Delay6	RETP			; 13   14   15   16   17      18     19     20
				; 16   17   18   19   20      21     22     23
 
Delay15	NOP
Delay14	NOP
Delay13	NOP
Delay12	NOP
Delay11	GOTO	Delay8


file: /Techref/scenix/lib/io/dev/video/delm_inc.htm, 4KB, , updated: 2001/4/17 11:13, local time: 2024/12/25 11:17,
TOP NEW HELP FIND: 
3.12.34.211:LOG IN

 ©2024 These pages are served without commercial sponsorship. (No popup ads, etc...).Bandwidth abuse increases hosting cost forcing sponsorship or shutdown. This server aggressively defends against automated copying for any reason including offline viewing, duplication, etc... Please respect this requirement and DO NOT RIP THIS SITE. Questions?
Please DO link to this page! Digg it! / MAKE!

<A HREF="http://linistepper.com/techref/scenix/lib/io/dev/video/delm_inc.htm"> scenix lib io dev video delm_inc</A>

After you find an appropriate page, you are invited to your to this massmind site! (posts will be visible only to you before review) Just type a nice message (short messages are blocked as spam) in the box and press the Post button. (HTML welcomed, but not the <A tag: Instead, use the link box to link to another page. A tutorial is available Members can login to post directly, become page editors, and be credited for their posts.


Link? Put it here: 
if you want a response, please enter your email address: 
Attn spammers: All posts are reviewed before being made visible to anyone other than the poster.
Did you find what you needed?