Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

CAP3MICR

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 3

Curso Microprocesadores 1

Prfr. Carlos Celaya Borges


CAPÍTULO 3. PROGRAMACIÓN EN ENSAMBLADOR DEL
MICROCONTROLADOR PIC 16F877

• PROCESO DE ENSAMBLADO DE PROGRAMAS


• EJERCICIOS DE PROGRAMACIÓN

3.1 Programas en Ensamblador


La programación en ensamblador se realiza en base al conjunto de instrucciones del PIC
16F877A.

3.2 Producto de números de 8 bits

LIST P=16F877
RADIX HEX
INCLUDE <P16F877.INC>
LOS_DATOS EQU 0X20
cblock LOS_DATOS
PRODH
PRODL
MDR
MDO
CONT
endc
ORG 05
bcf STATUS,RP1
bcf STATUS,RP0
clrf PRODH
clrf PRODL
movlw 60
movwf MDR
movlw 50
movwf MDO
movlw 07
movwf CONT
movf CONT,1
lazo btfsc STATUS,Z
goto termina
rlf MDR,1
btfsc STATUS,C
call sumae
bcf STATUS,C
rlf PRODL
rlf PRODH
decf CONT,1
goto lazo
Curso Microprocesadores 2
Prfr. Carlos Celaya Borges
sumae movf MDO,0
addwf PRODL,1
btfsc STATUS,C
incf PRODH,1
RETURN
termina nop
end

3.3 Conversión entre binario y BCD

LIST P = 16F877
INCLUDE <P16F877.INC>

; NUM en binario cabe en 4 bytes BCD


NUM0 EQU 0X20
NUM1 EQU 0X21
NUM2 EQU 0X22
NUM3 EQU 0X23
NUMD0 EQU 0X24
NUMD1 EQU 0X25
NUMD2 EQU 0X26
NUMD3 EQU 0X27
CONT EQU 0X28
ORG 0
GOTO INICIO
ORG 5
INICIO ;valor inicial en NUM = 0x0103, resultado esperado en NUMD=
MOVLW 0X03
MOVWF NUM0
MOVLW 0X01
MOVWF NUM1
CLRF NUM2
CLRF NUM3
CLRF NUMD0
CLRF NUMD1
CLRF NUMD2
CLRF NUMD3
BT1 MOVLW NUM0
MOVWF FSR
MOVLW 4
MOVWF CONT
BT2 MOVF INDF,W
BTFSS STATUS,Z
GOTO NOCERO
INCF FSR,f
Curso Microprocesadores 3
Prfr. Carlos Celaya Borges
DECFSZ CONT,f
GOTO BT2
SICERO GOTO SALIDA
NOCERO MOVLW NUM0
MOVWF FSR
BT3 DECF INDF,F
INCF INDF,W
BTFSS STATUS,Z
GOTO BT4
INCF FSR,f
GOTO BT3

BT4 MOVLW NUMD0


MOVWF FSR
CALL INCD
goto BT1

SALIDA GOTO SALIDA

INCD INCF INDF,F


MOVLW 0X0F
ANDWF INDF,w ;AND INDF CON W Y LO GUARDA A W

SUBLW 0X0A
BTFSS STATUS,Z
GOTO S1 ;SI NO ES CERO

MOVLW 0X06
ADDWF INDF,F ;SUMA 6 A LA MEMORIA INDIRECTAMENTE

MOVLW 0XF0
ANDWF INDF,W
SUBLW 0XA0
BTFSS STATUS,Z
GOTO S1
MOVLW 0X60
ADDWF INDF,F
INCF FSR,f
GOTO INCD
S1 RETURN

END

También podría gustarte