Professional Documents
Culture Documents
_CP_OFF ;ok
El dato literal que ser cualquier valor dentro de 0 hasta FF hexadecimal, por
eso en el dato se agrega el prefijo 0x que le indica al macroensamblador, que
es en formato hexadecimal.
Utiliza 8bits para escribirlo en el programa, 0x7F es en binario 0b0111111 o
solo 127 decimal todo eso es para el programa que compila y ensambla
recordemos que el PIC tiene registros de trabajo de 8bits.
P= 16F84
RADIX HEX
INCLUDE <P16F84.INC>
ORG 0x00
goto INICIO
ORG 0x05 ; pero si no uso la interrupcin no lo
pongo
INICIO
nop
nop
operacion
nop
goto INICIO
END
movlw 0x1f
;carga un 1f hexadecimal en W
movlw b'01010101'
; carga un 01010101 en W
;-----------------------------------------------------------w
equ 0x0000
tmr0
equ 0x0001
status
equ 0x0003
porta
equ 0x0005
portb
equ 0x0006
eedata
equ 0x0008
eeadr
equ 0x0009
pclath
equ 0x000a
intcon
equ 0x000b ; esto son del micro y son reservados, pero si
usted no los usa no los
; tiene que mencionar, y solo con el valor de la
direccin
eecon2
equ 0x0089; se lee como 89 0x0009 banco 1 hasta
0x00CF esta en el pic
; se puede declarar desde 0x008d hasta 0x00CF y esa
poca es toda.
; cargar un cero en w
mivariable
; dos formas de hacer lo mismo
Guardar resultados
movlw 0x07
addlw 0x01 , W
cero es W
movwf mivariable
ADD
destino W
movf porta,w
Manejo de Bits
Una de las partes mas poderosas del pic es el manejo de cada bit de manera
individual y as poder acceder a cada registro y modificar banderas que son
bits que controlan ciertas partes perifricas del pic como el acceso a los bancos
de memoria:
Bit
RAM (banco 0) direccion 03h
DC, C
STATUS
2 1
STATUS
RP0
equ
equ
0x03
0x05
bcf status,rp0 ser una instruccin un poco redundante cada vez que
queramos mandar algo a los puertos A puerto B para asegurar que lo
estamos haciendo.
BST STATUS,RP0
Con esto ya es accesible el banco de memoria 1, donde estn registros que se
configurar antes de mandar los datos del PIC al mundo, aqu se configuran los
puertos A y puerto B en la direccin 0x85 registro TRIS A y 0x86 registro TRIS B
solo se configuran en estos registros, en el otro, los registros en Banco 0 se da
el manejo real de esos pines al exterior, en el banco 0 escribimos y leemos los
1 y 0 de los puertos en la direccin 0x5 y 0x06.
Configurando como salida todo el puerto A, el Puerto A direccin 0x05 solo
tiene 5Bits en un registro que se usa como de 8 pero no son utiles solo los 5
primeros menos significativos .
Bit 7 Bit 6 Bit 5
X
Y esta conectado a
X
NC
Bit 4
X
NC
A4
NC
A3
pin3
A2
A1
A0
El TRIS A se encuentra en la 0x85 pero es lo mismo que 0x05 con el bit de RP0
en 1
Bit 7 Bit 6 Bit 5
X
Bit 4
A4
A3
A2
A1
A0
; cargar un cero en w
movwf 0x85
0 en trisa
STATUS
2 1
El registro de estado tambin tiene bit PD# para decir que se ha ejecutado y
entrado al modo de bajo consumo sleep con la instruccin del mismo nombre,
se activa en 0 y solo tras la conexin a la alimentacin o ejecutando clrwdt se
pone a 1.
Bit TO# que se activa tras desbordarse el perro guardin en 0 y se pone a uno
tras conectarse a la alimentacin o despus de las instrucciones un clrwdt o
sleep.
Estos dos PD# y TO# son Bit`s en el registros que no se pueden modificar, solo
indican porque se genero un reset.
Bit`s de Acarreo(C, DC) y Cero (Z de Zero)
El Bit Z es importante para control de programa como en la comparacin de
datos y para indicar si el resultado fue cero.
El Bit de acarreo sirve para decir cuando en una operacin ocurri un resultado
en numero mas grande de 8 bits y se utiliza para agregar en la siguiente
operacin.
En la funcin de rotacin de un registro, el resultado es el bit que va dejando el
registro, y se pone en el acarreo, tambin es el lugar de donde se agregan bits
al registro. Rota usando el acarreo
Puertos A y B
En los puertos en el Pic podemos encontrar Puertos que son parte de los
registros(RAM) y al mismo tiempo son las conexiones al mundo exterior y en
algunos casos de doble propsito como salida /entrada o funcin especial de
entrada o salida de otro modulo interno interrupcin, conexin serial,
comparador, ADC, etc
Se declaran en la memoria RAM como la direccin 05 que corresponden al
puerto A este solo tiene implementado 5 bits pero se ajusta a una direccin de
un byte de los cuales los mas altos son
X X X A4 A3 A2 A1 A0
Donde
logico
A4 hasta A0 tendran 1 0
La funcin de este puerto estar determinada por el registro TRISA que esta en
la misma direccin 5 pero en otra memoria, el micro tiene o lo conforman dos
memorias RAM que forman el BANCO de memoria en el BANCO 0 esta la
direccin 5 del puerto A pero esta es la memoria 0, la direccin para TRISA es
la misma 5 pero en otra memoria en el BANCO 1 esto lo controlamos con el Bit
INTRC_IO
Internal RC Osc, no
CLKOUT
INTRC Internal RC Osc
NOFCMEN Fail-safe clock monitor
disabled
FCMEN
Fail-safe clock monitor
enabled
NOIESO
Internal External Switch
Over mode disabled
IESO Internal External Switch Over
mode enabled
NOPUT
No Power Up Timer
PUT Power Up Timer
BROWNOUT_SW
Brownout
controlled by configuration bit in
special file register
BROWNOUT_NOSL Brownout
enabled during operation, disabled
during SLEEP
BROWNOUT Reset when brownout
detected
NOBROWNOUT
No brownout
reset
BORV46
Brownout reset at 4.6V
BORV43
Brownout reset at 4.3V
BORV20
Brownout reset at 2.0V
BORV28
Brownout reset at 2.8V
NOVREGEN USB voltage regulator
disabled
VREGEN
USB voltage regulator
enabled
NOWDT
No Watch Dog Timer
WDT Watch Dog Timer
WDT128
Watch Dog Timer uses
1:128 Postscale
WDT64
Watch Dog Timer uses
1:64 Postscale
WDT32
Watch Dog Timer uses
1:32 Postscale
WDT16
Watch Dog Timer uses
1:16 Postscale
WDT256
Watch Dog Timer uses
1:256 Postscale
WDT512
Watch Dog Timer uses
1:512 Postscale
WDT8 Watch Dog Timer uses 1:8
Postscale
WDT4 Watch Dog Timer uses 1:4
Postscale
WDT2 Watch Dog Timer uses 1:2
Postscale
WDT1 Watch Dog Timer uses 1:1
Postscale
WDT32768 Watch Dog Timer uses
1:32768 Postscale
WDT16384 Watch Dog Timer uses
1:16384 Postscale
WDT8192
Watch Dog Timer uses
1:8192 Postscale
WDT4096
Watch Dog Timer uses
1:4096 Postscale
WDT2048
Watch Dog Timer uses
1:2048 Postscale
WDT1024
Watch Dog Timer uses
1:1024 Postscale
CCP2C1
CCP2 input/output
multiplexed with RC1
CCP2B3
CCP2 input/output
multiplexed with RB3
PBADEN
PORTB pins are
configured as analog input channels
on RESET
NOPBADEN PORTB pins are
configured as digital I/O on RESET
LPT1OSC
Timer1 configured for
low-power operation
NOLPT1OSC Timer1 configured for
higher power operation
MCLR Master Clear pin enabled
NOMCLR
Master Clear pin used
for I/O
STVREN
Stack full/underflow will
cause reset
NOSTVREN Stack full/underflow will
not cause reset
LVP Low Voltage Programming on
B3(PIC16) or B5(PIC18)
NOLVP
No low voltage
prgming, B3(PIC16) or B5(PIC18)
used for I/O
ICPRT ICPRT enabled
NOICPRT
ICPRT disabled
NOXINST
Extended set extension
and Indexed Addressing mode
disabled (Legacy mode)
XINST Extended set extension and
Indexed Addressing mode enabled
NODEBUG No Debug mode for ICD
DEBUG
Debug mode for use
with ICD
NOPROTECT Code not protected
from reading
PROTECT
Code protected from
reads
CPB Boot Block Code Protected
NOCPB
No Boot Block code
protection
CPD Data EEPROM Code Protected
NOCPD
No EE protection
WRT Program Memory Write
Protected
NOWRT
Program memory not
write protected
RTC configuration registers write
protected
NOWRTC
configuration not
registers write protected
WRTB Boot block write protected
NOWRTB
Boot block not write
protected
WRTD Data EEPROM write protected
NOWRTD
Data EEPROM not write
protected
EBTR Memory protected from table
reads
NOEBTR
Memory not protected
from table reads
EBTRB
Boot block protected
from table reads
NOEBTRB
Boot block not
protected from table reads