контроллер pic16f84a
задержка реализуется следующим кодом
Код:
|
DelayL equ 0x0C ; delay register LOW byte
DelayM equ 0x0D ; delay register MID byte
DelayH equ 0x0E ; delay register HIGH byte
; --------------------------------
; SUBROUTINE: waste time for 500mS
; --------------------------------
;
Delay500 clrf DelayL ; /R clear DelayL to 0
clrf DelayM ; clear DelayM to 0
movlw 3h ; set DelayH to 3
movwf DelayH
Wait1 decfsz DelayL ; subtract 1 from DelayL
goto Wait1 ; if not 0, goto Wait1
decfsz DelayM ; subtract 1 from DelayM
goto Wait1 ; if not 0, goto Wait1
decfsz DelayH ; subtract 1 from DelayH
goto Wait1 ; if not 0, goto Wait1
return ; finished the delay
end |
Эта задержка использована в программе, на глаз лампочка тухнет примерно на пол секунды.
Пытаюсь расчитать
т.к. ячейки памяти 8 разардные
считаем число инструкций 256*256*2 = 131072
т.к. goto занимает 2 цикла то 131072*1.5 = 196608
тогда число тактов 196608*4 = 786432
тактовая частота 4МГц, т.е. время задержки = 786432/4000000
тогда получается задержка 0.197 секнды
гдето ошибся с расчетом