Está en la página 1de 4

; Grabar los numeros 1,2....

desde 30H a 3FH


LIST P=16F877
INCLUDE <P16F877.INC>
VECES
DATO EQU

EQU
21H

ORG
movlw
movwf
movlw
movwf
movlw
movwf

20H

0
30H
FSR
; FSR = 30H
.16
VECES
; VECES = 16
.48
DATO ; DATO = 48

LAZO
movf DATO,0
movwf
INDF
incf FSR
; FSR = FSR + 1
movlw
.3
;W=3
subwf DATO ; DATO = DATO - W
decfszVECES
; VECES - 1 = 0?
goto LAZO ; .NO
goto $
; .SI
END
delay_ms

MACRO
X
movlw
X
call
MILISEG
ENDM

banco MACRO
X
IF X == 0
bcf
ENDIF
IF X == 1
bsf
ENDIF
ENDM
LIST P=16F877
INCLUDE <P16F877.INC>
INCLUDE <MACROS.INC>
CBLOCK
ENDC

0x20

ORG

STATUS,RP0

STATUS,RP0

delay_ms

.30

delay_ms

.150

delay_ms

.245

goto $
INCLUDE <DELAY.ASM>
END

Curso:

PIC Inictel

Programa
; Delay = 1 seg
; Clock frequencia = 20 MHz
; 1 seg = 5000000 ciclos
; Error = 0 %
cblock
d1
d2
d3
endc
;5000000 ciclos
movlw
movwf
movlw
movwf
movlw
movwf

0x2D
d1
0xE7
d2
0x0B
d3

decfsz
goto
decfsz
goto
decfsz
goto

d1, f
$+2
d2, f
$+2
d3, f
Delay_0

Delay_0

Para Macro
; Delay = 1 seg
; Clock frequencia = 20 MHz
; 1 seg = 5000000 ciclos
; Error = 0 %
cblock
d1
d2
d3
endc
Delay
;4999993 ciclos
movlw
movwf
movlw
movwf
movlw
movwf

0x2C
d1
0xE7
d2
0x0B
d3

Delay_0
decfsz
goto
decfsz
goto
decfsz
goto

d1, f
$+2
d2, f
$+2
d3, f
Delay_0

goto
nop

$+1

;3 ciclos

;4 ciclos (incluyendo llamada)


return

También podría gustarte