instruction set
DESCRIPTION
INSTRUCTION SET. INSTRUCTION 5. INSTRUCTION 6. INSTRUCTION 7. INSTRUCTION 8. INSTRUCTION 9. INSTRUCTION 10. INSTRUCTION 11. INSTRUCTION 12. INSTRUCTION 13. INSTRUCTION 14. INSTRUCTION 15. INSTRUCTION 16. INSTRUCTION 17. INSTRUCTION 18. INSTRUCTION 19. INSTRUCTION 20. - PowerPoint PPT PresentationTRANSCRIPT
INSTRUCTION SETINSTRUCTION SET
INSTRUCTION 5INSTRUCTION 5
INSTRUCTION 6INSTRUCTION 6
INSTRUCTION 7INSTRUCTION 7
INSTRUCTION 8INSTRUCTION 8
INSTRUCTION 9INSTRUCTION 9
INSTRUCTION 10INSTRUCTION 10
INSTRUCTION 11INSTRUCTION 11
INSTRUCTION 12INSTRUCTION 12
INSTRUCTION 13INSTRUCTION 13
INSTRUCTION 14INSTRUCTION 14
INSTRUCTION 15INSTRUCTION 15
INSTRUCTION 16INSTRUCTION 16
INSTRUCTION 17INSTRUCTION 17
INSTRUCTION 18INSTRUCTION 18
INSTRUCTION 19INSTRUCTION 19
INSTRUCTION 20INSTRUCTION 20
INSTRUCTION 21INSTRUCTION 21
INSTRUCTION 22INSTRUCTION 22
INSTRUCTION 23INSTRUCTION 23
INSTRUCTION 24INSTRUCTION 24
INSTRUCTION 25INSTRUCTION 25
INSTRUCTION 26INSTRUCTION 26
INSTRUCTION 27INSTRUCTION 27
INSTRUCTION 28INSTRUCTION 28
INSTRUCTION 29INSTRUCTION 29
INSTRUCTION 30INSTRUCTION 30
INSTRUCTION 31INSTRUCTION 31
INSTRUCTION 32INSTRUCTION 32
INSTRUCTIONS 33-35INSTRUCTIONS 33-35
SLEEPSLEEP CLRWDTCLRWDT NOPNOP
Direct/Indirect AddressingDirect/Indirect Addressing
Direct AddressingDirect Addressing
Use only 7 bits of instruction to identify a register file Use only 7 bits of instruction to identify a register file address.address.
The other two bits of register address come from RP0 and The other two bits of register address come from RP0 and RP1 bits in the STATUS registerRP1 bits in the STATUS register
Example: Bank switching (Note: case of 4 banks)Example: Bank switching (Note: case of 4 banks) CLRF STATUS ; Clear STATUS register (Bank0)CLRF STATUS ; Clear STATUS register (Bank0) : ;: ; BSF STATUS, RP0 ; Bank1BSF STATUS, RP0 ; Bank1 : ;: ; BCF STATUS, RP0 ; Bank0BCF STATUS, RP0 ; Bank0 : ;: ; MOVLW 0x60 ; Set RP0 and RP1 in STATUS register, otherMOVLW 0x60 ; Set RP0 and RP1 in STATUS register, other XORWF STATUS, F ; bits unchanged (Bank3)XORWF STATUS, F ; bits unchanged (Bank3) : ;: ; BCF STATUS, RP0 ; Bank2BCF STATUS, RP0 ; Bank2 : ;: ; BCF STATUS, RP1 ; Bank0BCF STATUS, RP1 ; Bank0
Indirect AddressingIndirect Addressing The INDF register is not a physical register. Addressing the The INDF register is not a physical register. Addressing the
INDF register will cause indirect addressing.INDF register will cause indirect addressing. Any instruction using the INDF register actually access the Any instruction using the INDF register actually access the
registerregister pointed to by the File Select Register (FSR).pointed to by the File Select Register (FSR). The effective 9-bit address is obtained by concatenating the The effective 9-bit address is obtained by concatenating the
8-bit8-bit FSR register and the IRP bit in STATUS register.FSR register and the IRP bit in STATUS register. ExampleExample
MOVLW 0x20 ;initialize pointerMOVLW 0x20 ;initialize pointer MOVWF FSR ;to RAMMOVWF FSR ;to RAM NEXT: CLRF INDF ;clear INDF registerNEXT: CLRF INDF ;clear INDF register INCF FSR,F ;inc pointerINCF FSR,F ;inc pointer BTFSS FSR,4 ;all done? (to 0x2F)BTFSS FSR,4 ;all done? (to 0x2F) GOTO NEXT ;no clear nextGOTO NEXT ;no clear next CONTINUE:CONTINUE:
;yes continue;yes continue
I/O PortsI/O Ports General I/O pins are the simplest of peripherals General I/O pins are the simplest of peripherals
used to monitor and control other devices.used to monitor and control other devices. For most ports, the I/O pin’s direction (input or For most ports, the I/O pin’s direction (input or
output) is controlled by the data direction output) is controlled by the data direction register register TRISx TRISx (x=A,B,C,D,E).(x=A,B,C,D,E).
A ‘1’ in the TRIS bit corresponds to that pin being A ‘1’ in the TRIS bit corresponds to that pin being an input, while a ‘0’ corresponds to that pin an input, while a ‘0’ corresponds to that pin being an outputbeing an output
The The PORTx PORTx register is the latch for the data to register is the latch for the data to be output. Reading PORTx register read the be output. Reading PORTx register read the status of the pins, whereas writing to it will write status of the pins, whereas writing to it will write to the port latch.to the port latch.
Example: Initializing PORTDExample: Initializing PORTD
bcf STATUS, RP0 ; bank0bcf STATUS, RP0 ; bank0 bcf STATUS, RP1bcf STATUS, RP1 clrf PORTD ; initializing PORTD by clearing output clrf PORTD ; initializing PORTD by clearing output
data latchesdata latches bsf STATUS, RP0 ; select bank1bsf STATUS, RP0 ; select bank1 movlw 0xCF ; value used to initialize data movlw 0xCF ; value used to initialize data
direction (1100 1111)direction (1100 1111) movwf TRISD ; movwf TRISD ;
PORTD<7:6>=inputs, ;PORTD<5:4>=outputs, PORTD<7:6>=inputs, ;PORTD<5:4>=outputs, PORTD<3:0>=inputsPORTD<3:0>=inputs