Microcontroller

advertisement
PIC – ch. 2b
Move to GPR
• Move [copy] contents of WREG GPR/RAM
MOVLW
99H
;WREG=99H
MOVWF
0H
;move [copy] WREG contents to location 0h
…
- Cant move literal [immediate] values directly into the
general-purpose RAM locations in the PIC18.
- They must be moved there via WREG.
Q: Can literal values directly into SFR?
ADDWF
• ADDLW
15H
• ADDWF
fileReg, D ; =[WREG] + [fileReg]
; =15h + [WREG]
• Sources:
• Content of WREG
• fileReg: Content of file register (special or general)
• Destination: D  indicates destination bit
• If D = 0, destination of the result is WREG, or
• If D = 1, destination is file register
Or,
• ADDWF
fileReg, w ; =[WREG] + [fileReg]
; destination of the result is WREG
• ADDWF
fileReg, f ; =[WREG] + [fileReg]
; destination of the result is fileReg
Q. How to clear WREG?
 MOVLW
0
Q. State the contents of file reg. RAM
locations 12H and WREG after…
•
•
•
•
•
•
•
MOVLW
MOVWF
MOVLW
ADDWF
ADDWF
ADDWF
ADDWF
• Loc 12h  22
• WREG  22
0 ;WREG = 0
12H ;move WREG to location 12 to clear it
22h ;WREG=22
12h, F ;add WREG to loc 12h
12h, F ;add WREG to loc 12h
12h, F ;add WREG to loc 12h
12h, F ;add WREG to loc 12h
44
22
66
22
88
22
Q. State the contents of file reg. RAM
locations 12H and WREG after…
•
•
•
•
•
•
•
MOVLW
MOVWF
MOVLW
ADDWF
ADDWF
ADDWF
ADDWF
• Loc 12h  22
• WREG  22
0 ;WREG = 0
12H ;move WREG to location 12 to clear it
22h ;WREG=22
12h, w ;add WREG to loc 12h
12h, w ;add WREG to loc 12h
12h, w ;add WREG to loc 12h
12h, w ;add WREG to loc 12h
22
44
22
66
22
88
Table 2.2
ALU instructions – using both WREG & fileReg
• ADDWF
fileReg, d ; d =W / d =F default is F
•
•
•
•
•
•
•
fileReg, d ;… with carry
- AND
- OR
- Ex-OR w with f
- subtract f from w with borrow
- subtract w from f
- subtract w from f with borrow
ADDWFC
ANDWF
IORWF
XORWF
SUBFWB
SUBWF
SUBWFB
Table 2.3
File Reg. instructions – using fileReg or WREG as destination
•
•
•
•
•
COMF fileReg, d ; -complement/invert f
DECF
-dec f
DECFSZ -dec f & skip if zero
DECFSNZ
-dec f & skip if not zero
INC
-inc f
•
•
•
•
•
MOVF -move fileReg
NEGF -negative f
Rotate right, rotate left
SWAPF -swap nipples in fileReg
BTG
-bit toggle fileReg
2.4 PIC Status Flag Register
• The STATUS register is of most importance to
programming the PIC, it contains the
arithmetic status of the ALU (Arithmetic Logic
Unit), the RESET status and the bank select bit
for data memory.
• 8-bit register
• Only 5 bits to use by PIC18
• Other 3 bits – not used and read as 0
•
•
•
•
•
C – carry
DC – digital carry
Z – zero
OV – overflow
N – negative
C
• It is affected after an 8-bit addition or
subtraction, for unsigned arithmetic
• Ch. 5
DC – digital carry / Auxiliary carry flag
• For BCD [binary coded decimal] arithmetic.
• When there is a carry from bit-3 to bit-4
during an ADD or SUB – it is set, else, cleared.
Z
•
•
•
•
If the result is zero, then Z= 1
Used in arithmetic or logic ops.
Z for looping
Ch. 3
OV – overflow flag
• OV = 1, when the result of a signed number
operation is too large, causing the high-order
bit to overflow into the sign bit.
• For signed arithmetic  OV, N
• For unsigned arithmetic  C
N – negative flag
• For signed no., bit-7 as the sign bit.
• If bit-7 = 0
 Z=0
result is positive
• If bit-7 = 1
• Ch. 5
 Z=1
result is negative
• Some instructions affect all flags
– E.g., ADDWL
• Some inst. – only Z or N flag bits, or both
– E.g., ANDWL
• Some inst. – no flags at all!
– E.g., all move instructions, except MOVF
Q. Status of C, DC, Z after addition of
38h and 2Fh for • MOVLW
• ADDLW
38H
2FH
=========
38h 
0011 1000
2Fh 
0010 1111
----------------------------67h 
0110 0111
WREG = 67h
• C=0
• DC = 1
• Z=0
no carry beyond bit#7
carry from b#3 to b#4
WREG has a value not zero
Q?
• MOVLW
• ADDLW
9Ch
64h
• C=1
• DC = 1
• Z= 1
• See Table 2.4
Conditional branch [jump]
InstructionsAction
–
–
–
–
–
–
–
–
BC
BNC
BZ
BNZ
BN
BNC
BOV
BNOV
branch if C = 1
branch if C != 0
branch if Z = 1
branch if Z != 0
branch if N = 1
branch if N != 0
branch if OV = 1
More – ch.3
Next…
Download