pic instruction set and some tips for programming - · pdf file1 eece416: microcomputer...
TRANSCRIPT
1
EECE416: Microcomputer Fundamentals and Design
PIC Instruction Set and Some Tips for Programming
Dr. Charles J. Kim
Howard University
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?