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…