PIC Instruction Set and Some Tips for Programming - · PDF file1 EECE416: Microcomputer...

Post on 07-Feb-2018

218 views 0 download

Transcript of PIC Instruction Set and Some Tips for Programming - · PDF file1 EECE416: Microcomputer...

1

EECE416: Microcomputer Fundamentals and Design

PIC Instruction Set and Some Tips for Programming

Dr. Charles J. Kim

Howard University

faculty
Typewritten Text
WWW.MWFTR.COM

2

F877 Instruction Set14-Bit WordByte-Oriented Instruction

F: File Register (or RAM)D: Destination⌧D=0: Destination W⌧D=1: Destination File Register

Bit-Oriented InstructionB: Bit FieldF: Register File where the Bit is located

Literal and Control OperationK: 8-bit constant

3

General Form of Instruction

4

Instruction List

5

Destination of the result & Machine Code

D=0: Destination WD=1: Destination File Register (Default)

addwf PORTD ; ⌧Add content of PORTD to content of the W and

store the result back into PORTD

addwf PORTD, 0 ;⌧Add content of PORTD to content of the W and

store the result into W

6

Register Addressing ModesImmediate Addressing

⌧(ex) MOVLW 0x0FDirect Addressing

Uses 7 bits of 14 bit instruction to identify a register file address8th and 9th bit comes from RP0 and RP1 bits of STATUS register.Initial condition for RP0 and RP1: RP1=RP0=0(ex) SSPCON EQU 0x14

STATUS EQU 0x03SSPSTAT EQU 0x94BCF STATUS, 0x05BCF SSPCON, 0x01BSF STATUS, 0x05BCF SSPSTAT, 0x02

7

Direct Addressing - Recap

8

Indirect AddressingINDF register

Any instruction using the INDF actually accesses the register pointed to by the File Select Register (FSR).

A 9-bit EA is obtained by concatenating the 8-bit FSRregister and the IRP bit(STATUS<7>)Example: Erase the RAM section of 0x20-0x2F

Movlw 0x20; pointerMovwf FSR

Next clrf INDFincf FSRbtfss FSR, 4goto next

……

9

Direct vs. Indirect Addressing

10

Instruction Sets –description convention

11

addlw

12

addwf

13

andlw

14

andwf

15

Bcf & bsf

16

btfsc

17

Btfss

18

Call

19

CLRF & CLRW

20

COMF & DECF

21

DECFSZ

22

GOTO & INCF

23

INCFSZ

24

IORLW & IORWF

25

MOVLW & MOVF

26

MOVWF & NOP

27

RETFIE & RETLW

28

RETURN

29

RLF & RRF

30

SUBLW & SUBWF

31

SWAPF & XORLW

32

XORWF

33

F877 Instruction – Programming TipsTips on InstructionSkills and TricksFrequently Met Situations

(a) Turn on/off an LEDAn LED is connected to a pin at one, say,

PORTB<0>, and to a ground at the other. Use a bit-oriented file register operation:⌧bsf PORTB, 0x00 ;to turn on and ⌧BSF PORTB, 0 ;same effect⌧bcf PORTB, 0x00 ;to turn off.⌧BCF PORTB, 0 ;same OFF

34

(b)Variable DeclarationIn C:

⌧byte temp

⌧intxIn PIC:⌧Variables must occupy physical RAM space⌧CBLOCK …ENDC pair⌧Example:

Tips – Variable Declaration

35

(c) I/O designation to the I/O PortI/O Ports: PORTA, PORTB, PORTC, PORTD, PORTEBi-directionalInput or OutputI/O selection file register⌧TRISA for PORTA; TRISB for PORTB; TRISC for PORTC⌧TRISD for PORTD; TRISE for PORTE⌧Each pin can be selected as

• 1: Input• 0: Output

Tips – I/O designation

36

(d) Content CheckAssume that an Infrared (IR) receive is connected to a pin of a port and that it reads transmitted IR command sent from an IR remote controller, like our TV or VCR remote.A byte information sent from the remote is just stored to Wregister. Now we want to check the IR command by examining IR command. The IR command, for example, is as follows:

Tips – Content Check

37

andlw 0xFF keeps the content of Wintactandlw 0x00 will clear W, and set the Zandlw 0xFF keeps all the bits of W. Therefore, if the result (by the Z flag) of andlw 0xFF is zero, then we know that the content of W is 0x00 or 00000000b. Further, if the result of andlw 0xFC is zero, then we can see that the content of W is 0x03=00000011b.

Tips – Contents Check (continued)

38

COMreg: a file register where the IR command is initially storedTarget: which button is pressed from a remote controller

Tips – Content Check (Continued)

39

(e) Reading sensor (digital) input and decision-making based on the inputPIR motion detector & buzzer examplePIR output

1: No motion detected0: Motion detected

Buzzer 1: Buzzer On0: Buzzer Off

Use BTFSS or BTFSC

Tips – Reading Sensor Input

40

Sample Code

41

What is this code for?