TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: darck_khronos en 02 de Marzo de 2009, 03:29:39
Título:
Ayuda con una comparacion en el puerto B pic16f84
Publicado por:
darck_khronos
en
02 de Marzo de 2009, 03:29:39
Disculpen soy nuevo en esto de mplab.
Estoy programando en el pic 16f84 y me dejaron hacer un comparador:
comprar portb los 4 Bist Mas significativos con los 4 menos isgnificativos
Y dar un resultado en port A
Si los BMS son mayores se prenden los pares
Si los BMS son menores se prenden los nones
Si los BMS son iguales se prende solo del port A el bms
Título:
Re: Ayuda con una comparacion en el puerto B pic16f84
Publicado por:
Suky
en
02 de Marzo de 2009, 14:28:04
Preparar los datos a comparar. Guardo el nible bajo de PORTB en LSB y el nible alto en MSB:
Código: ASM
movf PORTB
,
w
; por ej. si PORTB = 0xA5
movwf LSB
; LSB = 0xA5
swapf LSB
,
w
; W = 0x5A
movwf MSB
; MSB = 0x5A
movlw
0x0F
; Mascara para borrar nible alto.
andwf LSB
,
1
; LSB = 0x05
andwf MSB
,
1
; MSB = 0x0A
Hacer la comparacion:
Primero comparo si son iguales. Si no lo son determino cual es mayor.
Código: ASM
movf MSB
,
w
;si el reg msb = lsb
xorwf LSB
,
w
btfsc STATUS
,
Z
goto MSB_igual_a_LSB
; No son iguales, determino cual es el mayor.
movf MSB
,
w
;si el reg msb > lsb
subwf LCB
,
w
;si el reg msb > lsb
btfsc STATUS
,
C
goto MSB_menor_a_LSB
goto MSB_mayor_a_LSB
esa es mas o menos la idea.