0% found this document useful (0 votes)
23 views24 pages

04 2StartingToProgram IntroductiontoAssem

This chapter discusses assembler programming for PIC microcontrollers. It outlines the instruction set for the PIC 16 series including byte-oriented, bit-oriented and literal/control instructions. It also describes the assembler format, directives, number representations and provides an example program to move data from port A to port B on a PIC microcontroller.

Uploaded by

abdullah1998128
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
23 views24 pages

04 2StartingToProgram IntroductiontoAssem

This chapter discusses assembler programming for PIC microcontrollers. It outlines the instruction set for the PIC 16 series including byte-oriented, bit-oriented and literal/control instructions. It also describes the assembler format, directives, number representations and provides an example program to move data from port A to port B on a PIC microcontroller.

Uploaded by

abdullah1998128
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 24

Starting to Program – An

Introduction to Assembler
Chapter Four

Dr. Gheith Abandah 1


Outline
• Introduction
• The PIC 16 Series Instruction Set
• Byte-oriented file register operations
• Bit-oriented file register operations
• Literal and control operations
• Instruction Formats
• Operation Types
• MPASM Assembler
• Example
Dr. Gheith Abandah 2
Introduction
Micro-controller Programming Options:

1. Machine Code
00 0111 0001 0101
2. Assembly Language: needs an assembler
addwf NUM, w
3. High-Level Language: needs a compiler
for (i=0; i<10; i++) sum += a[i];

Dr. Gheith Abandah 3


Development Process

Dr. Gheith Abandah 4


ALU Data Flow

Dr. Gheith Abandah 5


The PIC 16 Series Instruction Set
• 35 instructions
• Three Groups:
1. Byte-oriented file register operations
2. Bit-oriented file register operations
3. Literal and control operations
• Operation Types:
– Arithmetic – Logic
– Data movement – Control
– Misc
Dr. Gheith Abandah 6
1. Byte-oriented file register
operations
• Format: op f, d
– op: operation
– f: number of file or register
– d: destination (0: working register, 1: file register)
• Example:
addwf PORTA, 0
Adds the contents of the working register and
register PORTA, puts the result in the working
register.
Dr. Gheith Abandah 7
2. Bit-oriented file register
operations
• Format: op f, b
– op: operation
– f: number of file or register
– b: bit number, 0 through 7
• Example:
bsf STATUS, 5
Sets to 1 Bit 5 of register STATUS.

Dr. Gheith Abandah 8


3. Literal and control operations
• Format: op k
– op: operation
– k: literal, an 8-bit if data or 11-bit if address
• Examples:
addlw 5
Adds to the working register the value 5.
call 9
Calls the subroutine at address 9.
Dr. Gheith Abandah 9
Instruction
Formats

Dr. Gheith Abandah 10


Arithmetic Operations
Status
Mnemonic Operands Description Cycles
Affected
ADDWF f, d Add W and f 1 C,DC,Z
COMF f, d Complement f 1 Z
DECF f, d Decrement f 1 Z
INCF f, d Increment f 1 Z
SUBWF f, d Subtract W from f 1 C,DC,Z
ADDLW k Add literal and W 1 C,DC,Z
SUBLW k Subtract W from literal 1 C,DC,Z

Dr. Gheith Abandah 11


Logic Operations
Status
Mnemonic Operands Description Cycles
Affected
ANDWF f, d AND W with f 1 Z
IORWF f, d Inclusive OR W with f 1 Z
XORWF f, d Exclusive OR W with f 1 Z
ANDLW k AND literal with W 1 Z
IORLW k Inclusive OR literal with W 1 Z
XORLW k Exclusive OR literal with W 1 Z

Dr. Gheith Abandah 12


Data Movement Operations
Status
Mnemonic Operands Description Cycles
Affected
MOVF f, d Move f 1 Z
MOVWF f Move W to f 1
SWAPF f, d Swap nibbles in f 1
MOVLW k Move literal to W 1

Dr. Gheith Abandah 13


Control Operations
Status
Mnemonic Operands Description Cycles
Affected
DECFSZ f, d Decrement f, Skip if 0 1 (2)
INCFSZ f, d Increment f, Skip if 0 1 (2)
BTFSC f, b Bit Test f, Skip if Clear 1 (2)
BTFSS f, b Bit Test f, Skip if Set 1 (2)
CALL k Call subroutine 2
GOTO k Go to address 2
RETFIE - Return from interrupt 2
RETLW k Return with literal in W 2
RETURN - Return from Subroutine 2
Dr. Gheith Abandah 14
Miscellaneous Operations
Status
Mnemonic Operands Description Cycles
Affected
CLRF f Clear f 1 Z
CLRW - Clear W 1 Z
NOP - No Operation 1
Rotate Left f through
RLF f, d 1 C
Carry
Rotate Right f through
RRF f, d 1 C
Carry
BCF f, b Bit Clear f 1
BSF f, b Bit Set f 1
CLRWDT - Clear Watchdog Timer 1 TO',PD'
SLEEP - Go into standby mode 1 TO',PD'
Dr. Gheith Abandah 15
Assembler Format

Dr. Gheith Abandah 16


Assembler Directives
Assembler
Summary of action
directive
list Implement a listing option
#include Include additional source file
org Set program origin
Define an assembly constant; this
equ
allows us to assign a value to a label
end End program block
Dr. Gheith Abandah 17
Number Representation in MPASM
Radix Example
Decimal D’255’
Hexadecimal H’8d’ or 0x8d
Octal O’574’
Binary B’01011100’
ASCII ‘G’ or A’G’

Dr. Gheith Abandah 18


Example: move push button to LED

Dr. Gheith Abandah 19


Example – Page 1
;***************************************************
;ELECTRONIC PING-PONG DATA MOVE
;This program moves push button switch values from
;Port A to the leds on Port B
;TJW 21.2.05 Tested 22.2.05
;***************************************************
;
;Configuration Word: WDT off, power-up timer on,
; code protect off, RC oscillator
;
list p=16F84A

Dr. Gheith Abandah 20


Example – Page 2
;
;specify SFRs
status equ 03
porta equ 05
trisa equ 05
portb equ 06
trisb equ 06
;

Dr. Gheith Abandah 21


Example – Page 3
;
org 00
;Initialise
start bsf status,5 ;select memory bank 1
movlw B’00011000’
movwf trisa ;set port A direction
movlw 00
movwf trisb ;all port B bits output
bcf status,5 ;select bank 0

Dr. Gheith Abandah 22


Example – Page 4
;
;The "main" program starts here
clrf porta ;clear all bits in ports
A
loop movf porta,0 ;move port A to W
register
movwf portb ;move W register to port
B
goto loop
end

Dr. Gheith Abandah 23


Summary
• Assembler is a programming language that is part of the toolset
used in embedded systems programming. It comes with its own
distinct set of rules and techniques.
• It is essential to adopt and learn an IDE when developing
programs. The MPLAB IDE is an excellent tool for PIC
microcontrollers, both for learners and professionals. And it
can’t be beaten on price!
• While some people are eager to get programs into the
hardware immediately, it is extremely useful to learn the
features of a simulator. The simulator in MPLAB allows the user
to test program features with great speed, and is an invaluable
learning tool.

Dr. Gheith Abandah 24

You might also like