Ejemplos mplab con pic

Solo disponible en BuenasTareas
  • Páginas : 5 (1086 palabras )
  • Descarga(s) : 0
  • Publicado : 27 de octubre de 2010
Leer documento completo
Vista previa del texto
Ejercicio 1 – PROGRAMA SUMA.asm

Sumar dos numeros de 16 bits cada uno. Además restar 2 números de 16 bits cada uno.

1.1 Diagrama de Flujo de la Suma

[pic]

1.2 Código fuente de la Suma

;********************************************************************
; MICROCONTROLADORES
; Nombre: Edison Naranjo
; Curso: Sexto " B" DEE;********************************************************************

;********************************************************************
; Ejercicio 1.- Suma de 2 números de 16 bits
; FFFF + FFFF = 1FFFE
; Los números se encuentran cargados en el PIC
;********************************************************************

LIST P=16F877A
INCLUDE "P16F877A.INC"
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

DATOA_H EQU 0X20 ; Partemás significativa del número A
DATOA_L EQU 0X21 ; Parte menos significativa del número A
DATOB_H EQU 0X22 ; Parte más significativa del número B
DATOB_L EQU 0X23 ; Parte menos significativa del número B
RESULTADO_H EQU 0X24 ; Parte más significativa del resultado
RESULTADO_L EQU 0X25 ; Parte más significativa del número A
AUX EQU 0X26
AUX2 EQU 0X27
ORG 0X00
BSF STATUS,RP0
BCFSTATUS,RP1
movlw 0x00
movwf TRISB ; Configuración del puerto B como salida
movlw 0x00
movwf TRISC ; Configuración del puerto C como salida
movlw 0xFE
movwf TRISD ; Configuración del bit 0 del puerto D
; como salida

BCF STATUS,RP0

INICIO

movlw 0XFF
movwf DATOB_L ; DATOB_L=FF
movlw 0XFF
movwf DATOB_H ; DATOB_H=FF

movlw 0XFF
movwf DATOA_L ; DATOA_L=FFmovlw 0XFF
movwf DATOA_H ; DATOA_H=FF

call SUMA_L ; Llamada a la subrutina SUMA_L

btfss STATUS,C
movlw 0X00 ; SI C=O, W=0
movlw 0X01 ; SI C=1, W=1
call SUMA_H ; Llamada a la subrutina SUMA_H
btfss STATUS,C
movlw 0X00 ; SI C=O, W=0
movlw 0X01 ; SI C=1, W=1
call MOSTRAR ; Llamada a la subrutina MOSTRAR

goto INICIO

SUMA_L
movf DATOA_L,0
addwfDATOB_L,0 ; W=DATOA_L + DATOB_L
movwf RESULTADO_L
return

SUMA_H
addwf DATOA_H,0 ; W= DATOA_H + (0/1)
addwf DATOB_H,0 ; W= W + DATOB_H
movwf RESULTADO_H
return

MOSTRAR

movwf AUX ; AUX=W
movf RESULTADO_L,0
movwf PORTB ; Parte menos significativa del resultado
; mostrada por el puerto B
movf RESULTADO_H,0
movwf PORTC ; Parte más significativa delresultado
; mostrada por el puerto B
movf AUX,0
movwf PORTD ; Carry mostrado por el bit 0 del puerto D

return

end

1.3 Diagrama de Flujo de la Resta

[pic]
4. Código fuente de la resta

;********************************************************************
; MICROCONTROLADORES
; Nombre: Edison Naranjo
; Curso: Sexto " B" DEE;********************************************************************

;********************************************************************
; Ejercicio 1.- Resta de 2 números de 16 bits
; EBEB - 1111 = DADA
; Los números se encuentran cargados en el PIC
;********************************************************************

LIST P=16F877A
INCLUDE "P16F877A.INC"
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

DATOA_HEQU 0X20 ; Parte más significativa del número A
DATOA_L EQU 0X21 ; Parte menos significativa del número A
DATOB_H EQU 0X22 ; Parte más significativa del número B
DATOB_L EQU 0X23 ; Parte menos significativa del número B
RESULTADO_H EQU 0X24
RESULTADO_L EQU 0X25

COMP1_H EQU 0X28 ; Parte más significativa B'
COMP1_L EQU 0X29 ; Parte menos significativa B'

ORG 0X00
BSFSTATUS,RP0
BCF STATUS,RP1
movlw 0x00 ; Configuración del puerto B como salida
movwf TRISB
movlw 0x00 ; Configuración del puerto C como salida
movwf TRISC

BCF STATUS,RP0

INICIO

movlw 0X11
movwf DATOB_L; DATOB_L=0X11
movlw 0X11
movwf DATOB_H; DATOB_H=0X11

call COMP1 ; Llamada a la subruitina COMP1

movlw 0XEB
movwf DATOA_L ; DATOA_L=0XEB
movlw 0XEB...
tracking img