0,0 → 1,75 |
;; |
;; include DELAY.INC |
;; |
;;DELAY5 ; Delka spozdeni v nasobcich 5us |
;;DELAY1 ; Delka spozdeni v nasobcich 1ms |
;; |
; |
; Procedury pro generovani spozdeni SW prostredky |
; |
; Include 16C84.INC pro definici zakladnich registru |
|
__DELAY__: ; Priznak modulu DELAY |
|
ifndef __16C84__ |
error "Include file 16C84.INC" |
endif |
|
ifndef DELAY5 |
cblock |
DELAY5 |
endc |
endif |
|
ifndef DELAY1 |
cblock |
DELAY1 |
endc |
endif |
|
;----------------------- |
; |
; Short Delay - 6 az 1281 us 'a 5us --> 1+5*DELAY5 [us] |
; |
;----------------------- |
; |
; Vstup: DELAY5 pozadovane spozdeni v 5us jednotkach |
; Nici: DELAY5 |
|
del_0: |
goto $+1 ; Cyklus je 5us |
delay5us: |
decfsz DELAY5 |
goto del_0 |
return ; Cas pro call a return je take zapocten |
|
;----------------------- |
; |
; Jednorazove spozdeni 10ms |
; |
;----------------------- |
; |
; Nici: W, DELAY1, DELAY5 |
|
delay10ms: |
movlw 10 |
movwf DELAY1 |
|
;----------------------- |
; |
; Long Delay - 1 az 256 ms 'a 1ms --> 1000*DELAY1 + 3 [us] |
; |
;----------------------- |
; |
; Vstup: DELAY1 pozadovane spozdeni v 1ms |
; Znici: W, DELAY5, DELAY1 |
|
delay1ms: |
movlw (1000 / 5 ) - 2 ; 1us |
movwf DELAY5 ; 1us |
goto $+1 ; 2us |
goto $+1 ; 2us |
call delay5us ; 198 * 5 + 1 = 991us |
decfsz DELAY1 ; 1/2us |
goto delay1ms ; 2us |
return ; 2us |