Professional Documents
Culture Documents
Microprocessor Systems
Slide 1
PIC registers
WREG (working register)
Slide 2
WREG instructions
MOVLW
moves 8-bit data into the WREG register
ADDLW
add the literal value K to register WREG and put
the result back in the WREG register
Example
Slide 3
Datapath
Slide 4
File register
Data RAM
Used for data storage and scratch pad
Slide 5
File register
Slide 6
SFRs
Slide 7
Slide 8
Example- MOVWF
Memory contents
Slide 9
ADDWF instruction
Adds together the contents of WREG and a file
register location
Used both working and file registers
Format
Slide 10
Memory contents
Slide 11
Datapath
Slide 12
WREG instructions
Slide 13
Slide 14
COMF instruction
Complements (inverts) the contents of fileReg
and places the result in WREG or fileReg
Slide 15
DECF instruction
Decrements (subtracts one from) the contents
of fileReg and places the result in WREG or
fileReg
Example
Slide 16
MOVF instruction
Copies the content of fileReg to WREG. If D =
1, the content of fileReg is copied to itself
Slide 17
MOVFF instruction
Copies data from one location in fileReg to
another location in fileReg
Slide 18
Slide 19
N (Negative Flag)
Set when bit B7 is one as the result of an arithmetic/logic
operation
OV (Overflow Flag)
Set when result of an operation of signed numbers goes
beyond 7-bits
Z (Zero Flag)
Set when result of an operation is zero
DC (Digit Carry Flag) (Half Carry)
Set when carry generated from Bit3 to Bit4 in an arithmetic
operation
C (Carry Flag)
Slide 20
Set when an addition generates a carry (out)
Slide 21
Slide 22
Slide 23
Slide 24
Slide 25
Data format
Hex
99h
69H
0x45
68
h46
Invalid format
Slide 26
Data format
Binary
B01011010
Decimal
D34, d45
.67
ACSII
Am, a1
Slide 27
Assembler directives
Give directions to the compiler
EQU
Labels a constant number
Mem_addr EQU 0x34
SET
Same as EQU
Can be reassigned later
Slide 28
Examples EQU
Slide 29
Slide 30
Assembler directives
ORG
Sets beginning address of the code or data
END
Indicates end of the source file
#include
To include libraries
_config
To set the configuration bits
Slide 31
Slide 32
Creating executable
Slide 33
Slide 34
Program space
Slide 35
Code placement
in ROM
Slide 36
Slide 37
Slide 38
Addressing Modes
Method of specifying of an operand
Immediate (Literal) addressing
The operand is a number that follows the opcode
Direct addressing
The address of the operand is a part of the instruction
Indirect addressing
An address is specified in a register (pointer) and the
MPU looks up the address in that register
Slide 40
8-bit
0xF2
MOVWF
F,a
MOVWF
MOVWF
MOVFF
MOVFF
0x25,0
0x25
fs,fd
0x20,0x30
MOVF
MOVF
CLRF
CLRF
SETF
F,d,a
0x25,0,0
0x25,W
F,a
0x25
;Clear F Reg.
;Sets Z flag
;Clear Reg25H
F,a
Points to Remember
Each instruction has two parts
Opcode and Operand
Slide 43
Arithmetic Instructions
ADDLW
ADDLW
8-bit
0x32
ADDWF
F,d,a
ADDWF
0x20,0
ADDWF
0x20,W
ADDWF
0x20,1
ADDWF
0x20,F
Arithmetic Instructions
ADDWFC
F,d,a
8-bit
F,d,a
F,d,a
F,d,a
F,d,a
F,a
SUBLW
SUBWF
SUBWFB
INCF
DECF
NEGF
Slide 45
Arithmetic Instructions
MULLW
8-bit
MULWF
F,a
DAW
Slide 46
Points to Remember
Arithmetic instructions
Can perform operations on W and 8-bit literals
Save the result in W
Slide 47
Logic Instructions
COMF
F,d,a
ANDLW
ANDWF
8-bit
F,d,a
IORLW
IORWF
8-bit
F,d,a
IORWF
XORLW
XORWF
0x12,F
8-bit
F,d,a
;Complement (NOT) F
;and save result in W or F
;AND Literal with W
;AND W with F and
;save result in W or F
;Inclusive OR Literal with W
;Inclusive OR W with F
;and save result in W or F
;OR W with REG12H and
;save result in REG12H
;Exclusive OR Literal with W
;Exclusive OR W w/ F
;and save result in W or F
Slide 48
Points to Remember
Logic instructions
Can perform operations on W and 8-bit literals
Save the result in W
Slide 49
Branch Instructions
BC
BC
BC
BNC
BZ
BNZ
BN
BNN
BOV
BNOV
BRA
Branch Example
Address Label
000020
000022
000024
000026
000028
00002A
00002C
00002E
000030
START: MOVLW
MOVWF
MOVLW
MOVWF
ADDWF
BNC
MOVLW
SAVE: MOVWF
SLEEP
BYTE1
REG0
BYTE2
REG1
REG0,W
SAVE
0x00
REG2
Slide 51
nn
CALL
20-bit,s
RETURN
RETFIE
Slide 52
Points to Remember
Eight conditional relative branch instructions
Based on four flags
Range is 64 words
Slide 53
;Clear bit b of F, b = 0 to 7
;Clear bit 7 of Reg2
BSF
BTG
RLCF
F,b,a
F,b,a
F,d,a
RLNCF
F,d,a
RRCF
RRNCF
F,d,a
;Set bit b of F, b = 0 to 7
;Toggle bit b of F, b = 0 to 7
;Rotate bits left in F through
;carry and save in W or F
;Rotate bits left in F
;and save in W or F
;Rotate bits right in F through
;carry and save in W or F
;Rotate bits right in F
;and save in W or F
F,d,a
Slide 54
Points to Remember
Any bit in a File (data) register
Set, reset, or complemented
Slide 55
CPFSEQ
CPFSGT
CPFSLT
TSTFSZ
F,b,a
Slide 56
Increment/Decrement
and Skip Next Instruction
DECFSZ
F,d,a
DECFSNZ
F,d,a
INCFSZ
F,d,a
INCFSNZ
F,d,a
Slide 57
Points to Remember
Any File (data) register or single bit in a File (data)
register can be tested for 0
A File (data) register can be compared with W for
equality, greater than, and less than
A File (data) register can be incremented or
decremented and tested for 0
If a condition is met, the next instruction is skipped
Slide 58
Slide 59
Slide 60
CLRWDT
RESET
SLEEP
NOP
Slide 61
Instruction Format
The PIC18F instruction format divided into
four groups
Byte-Oriented operations
Bit-Oriented operations
Literal operations
Branch operations
Slide 62
Instruction Format
Byte-oriented instruction ADDWF F, d, a
ADDWF
0x1,F
0x15,7
Slide 63
Instruction Format
Literal instruction MOVLW k
MOVLW
0x7F
Branch instruction BC n
BC
0x15
Slide 64
Illustration: Addition
Problem Statement
Load two bytes (37H and 92H) in registers REG0 and REG1
Add the bytes and store the sum in REG2
Address
Hex
Opcode
Operand
Comments
0020
0E37
MOVLW
0x37
0022
6E00
MOVWF
REG0
0024
0E92
MOVLW
0x92
0026
6E01
MOVWF
REG1
0028
2400
ADDWF
REG0,W
002A
6E02
MOVWF
REG2
002C
0003
SLEEP
;Power Down
Slide 65
Bus Contents
Execution of the
instruction:
MOVLW 0x37
Slide 66
Pipelining
Slide 67
Slide 68