Mercurial > public > mk2
view code_part1/OSTC_code_asm_part1/wait.asm @ 751:a2c947c243a2
changelog
author | heinrichsweikamp |
---|---|
date | Mon, 23 Sep 2013 09:08:26 +0200 |
parents | e33a8ac4b660 |
children | c50296c3059e |
line wrap: on
line source
; 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: ; ========================================================== ; WAIT 10 MICROSECONDS - 16 Mhz and 32 Mhz ; ========================================================== IFDEF SPEED_16MHz WAIT10US macro wait_temp movlw wait_temp call WAIT10USX endm ENDIF IFDEF SPEED_32MHz WAIT10US macro wait_temp movlw wait_temp call WAIT10USX movlw wait_temp call WAIT10USX endm ENDIF WAIT10USX movwf wait_temp goto JumpIn10us WAIT10USX2 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 nop decfsz wait_temp,1 goto WAIT10USX2 return ; ========================================================== ; WAIT 1 MILLISECOND - Working with TMR1 ; ========================================================== WAITMS macro waitms_temp movlw waitms_temp call WAITMSX endm WAITMSX movwf waitms_temp ; Holds number of ms to wait ASSERT_BANK1 .10002 ; Make sure we are in bank1 Ifdef TESTING return ; In emulation, just skips waits Endif WAITMSX1: movf TMR1L,W addlw d'66' ; 66*15,26µs ~ 1ms WAITMSX2 cpfseq TMR1L bra WAITMSX2 ; loop here... decfsz waitms_temp,F bra WAITMSX1 return