3. Overview
PIC - "Peripheral Interface Controller”
How to use PIC microcontroller?
Hardware
Software - programming
Programming language
Machine language – machine code
Assembly language
High level language C, C++, Basic
Low level
language
4. Introduction
Assembly language is programming language
use to write programs using instructions that are
the symbolic code called mnemonic.
Assembly language programs must to be
translated into machine code by a program
called assembler.
5. To program in assembly language, the
programmer must know all the registers of the
CPU and the size of each, as well as other
details.
6. Assembling and linking process
First use a text editor to type program in assembly
language. In the case of PIC microcontrollers, we use the
MPLAB IDE.
The “asm” source file is fed into PIC assembler. The
assembler converts the instructions into machine code.
The third step is called linking. The link program takes
one or more object files and produces a hex file, a list
file, a map file, an intermediate abject file and a debug
file.
After a successful link, the hex file is ready to be burned
into PIC’s program ROM and is downloaded into PIC
trainers.
9. Assembler Directives
While instruction tell the CPU what to do, directives
(also called pseudo-instructions) give direction to the
assembler.
Assembler directives are instruction used to tell the
CPU what to do.
Examples of assembler directive :
EQU – equate (use to define value or a fixed address)
ORG – origin (use to indicate the beginning of the address for
code or data)
END – indicate the end of the source (asm) file.
10. Review Questions
1. What is the purpose of pseudo-instructions?
2. _____________ are translated by the assembler into
machine code, whereas _____________are not.
3. True or false. Assembly language is a high- level
language.
4. Pseudo- instruction are also called __________.
5. True or false. Assembler directives are not used by the
CPU itself. /they are simply guide to the assembler.
6. Which one the following is an assembler directive?
a) MOVLW 25H b) ADDLW 12 c) ORG 200H d) GOTO HERE
11. Data Format Representation
The following are data type and data format
using for PIC microcontrollers.
Data Type Data Format
Hexadecimal 99H
0X99
h’99’
99
Decimal D’12’
Binary B’10011001’
ASCII A’2’
12. PIC18F instruction set.
PIC18F2455/2550/4455/4550 devices
incorporate the standard set of 75 core instructions.
16. MOVLW Instruction
MOVLW Instruction moves 8-bit data into WREG
register. It has the following format:
MOVLW K ;move literal value K into WREG
Example: Load the WREG register with value 25H.
MOVLW 25H ;move value 25H into WREG (WREG = 25H)
Operation: k → W
17. MOVWF Instruction
The MOVWF instruction tells the CPU to move (in reality,
copy) the source register of WREG to a destination
register in file register (F).
Example: Load value 66H into Port B, C and D.
MOVLW 66H ;move the value 66H to WREG (WREG = 66H)
MOVWF PORTB ; move the value in WREG to PORTB (PORTB = 66H)
MOVWF PORTC ;PORTC = 66H
MOVWF PORTD ;PORTD = 66H
MOVWF Move W to f Operation: (W) → f
18. Example
Write assembly instruction to make the I/O port as
below :
a) RB4 and RB5 as input
b) PORTC as output
Solution:
a) MOVLW B’00110000’
MOVWF TRISB
b) MOVLW B’00110000’
MOVWF TRISB
20. Addition
These ADD instructions are design to perform 8-
bit addition.
The execution result of the ADD instruction will
affect all flag bits of the STATUS register.
Operation: (W) + k → W
21. Addition (cont..)
Example
Write a program that add the hexadecimal numbers 0x20
and 0x30. Store the sum in data register at 0x50.
ORG 0X00
MOVLW 0X20
ADDLW 0X30
MOVWF 0X50,A
END
23. Subtraction
• PIC18 microcontroller has two SUBTRACT
instructions. Subtract instruction will also affect all the
flag of STATUS register.
SUBLW Subtract W from Literal Operation: k – (W) → W
SUBWF Subtract W from f Operation: (f) – (W) → dest
24. Subtraction
Example
Write a program to subtract 5 from 40H. Identify the
flag bit in status register.
Solution:
#include <pic18f4550>
ORG 0X00
MOVLW D’5’
SUBLW 0X40
END
25. Logic Instruction
The logical instruction allow user to perform AND, OR,
exclusive-OR and complementing on 8-bit numbers.
26. Example
Example :
Write assembly statement for the operation 0XFF ||
0X55
MOVLW 0XFF ;move the value 0xFFin to WREG
IORLW 0X55 ;OR the value in WREG with value 0x55
28. Bit manipulation
The bit operations set, clear and toggle
test only a single bit. The bit oriented
instructions available to PIC family are
BCF, BSF, BTFSC, BTFSS and BTG.
BCF Bit Clear f
Operation: 0 → f<b>
BSF Bit Set f Operation: 1 → f<b>
29. Bit manipulation
Example:
Write an assembly statement to make RB4 as
input an RC7 as output using bit addressable.
Solution:
BSF TRISB,4 ; set RB4 as input
BCF TRISC,7 ; make RC7 as output
30. Rotate Instruction
PIC 18 families has four rotate instructions. Figure 2.
Illustrates this four rotate instructions.
RLCF Rotate Left f through Carry
RLNCF Rotate Left f (No Carry)
RRCF Rotate Right f through Carry
RRNCF Rotate Right f (No Carry)
32. Data serialization
One of the most widely used applications of the
rotate instructions. Data serialization is a process of
sending a byte of data, one bit at a time through a
single pin of microcontroller.
The characteristic of data serialization are:
Using the serial port.
Using a programming technique to transfer data
one bit at a time and control the sequence of data
and spaces between them.
33. Data serialization
Example
Write a program to bring in a byte of data serially via
pin RC7 and save it in file register location 0x21. The byte
comes in with the LSB first.
Solution:
RCNT EQU 0x20
MYREG EQU 0x21
BSF TRISC,7
MOVLW 0x8
MOVWF RCNT
AGAIN BTFSC PORTC 7
BSF STATUS,C
BTFSS PORTC,7
BCF STATUS,C
RRCF MYREG,F
DECF RCNT F
BNZ AGAIN