starting to program – an introduction to assembler chapter four dr. gheith abandah1

24
Starting to Program – An Introduction to Assembler Chapter Four Dr. Gheith Abandah 1

Upload: chase-andrews

Post on 26-Mar-2015

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Starting to Program – An Introduction to Assembler Chapter Four Dr. Gheith Abandah1

Starting to Program – An Introduction to Assembler

Chapter Four

Dr. Gheith Abandah 1

Page 2: Starting to Program – An Introduction to Assembler Chapter Four Dr. Gheith Abandah1

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

Page 3: Starting to Program – An Introduction to Assembler Chapter Four Dr. Gheith Abandah1

Introduction

Dr. Gheith Abandah 3

Micro-controller Programming Options:

1. Machine Code00 0111 0001 0101

2. Assembly Language: needs an assembleraddwf NUM, w

3. High-Level Language: needs a compilerfor (i=0; i<10; i++) sum += a[i];

Page 4: Starting to Program – An Introduction to Assembler Chapter Four Dr. Gheith Abandah1

Development Process

Dr. Gheith Abandah 4

Page 5: Starting to Program – An Introduction to Assembler Chapter Four Dr. Gheith Abandah1

ALU Data Flow

Dr. Gheith Abandah 5

Page 6: Starting to Program – An Introduction to Assembler Chapter Four Dr. Gheith Abandah1

The PIC 16 Series Instruction Set

Dr. Gheith Abandah 6

• 35 instructions• Three Groups:

1. Byte-oriented file register operations2. Bit-oriented file register operations3. Literal and control operations

• Operation Types:– Arithmetic – Logic– Data movement – Control– Misc

Page 7: Starting to Program – An Introduction to Assembler Chapter Four Dr. Gheith Abandah1

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

Page 8: Starting to Program – An Introduction to Assembler Chapter Four Dr. Gheith Abandah1

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

Page 9: Starting to Program – An Introduction to Assembler Chapter Four Dr. Gheith Abandah1

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

Page 10: Starting to Program – An Introduction to Assembler Chapter Four Dr. Gheith Abandah1

Dr. Gheith Abandah 10

Instruction Formats

Page 11: Starting to Program – An Introduction to Assembler Chapter Four Dr. Gheith Abandah1

Arithmetic Operations

Mnemonic Operands Description Cycles Status Affected

ADDWF f, d Add W and f 1 C,DC,ZCOMF f, d Complement f 1 ZDECF f, d Decrement f 1 ZINCF f, d Increment f 1 Z

SUBWF f, d Subtract W from f 1 C,DC,ZADDLW k Add literal and W 1 C,DC,ZSUBLW k Subtract W from literal 1 C,DC,Z

Dr. Gheith Abandah 11

Page 12: Starting to Program – An Introduction to Assembler Chapter Four Dr. Gheith Abandah1

Logic Operations

Mnemonic Operands Description Cycles Status 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

Page 13: Starting to Program – An Introduction to Assembler Chapter Four Dr. Gheith Abandah1

Data Movement Operations

Mnemonic Operands Description Cycles Status Affected

MOVF f, d Move f 1 ZMOVWF f Move W to f 1SWAPF f, d Swap nibbles in f 1

MOVLW k Move literal to W 1

Dr. Gheith Abandah 13

Page 14: Starting to Program – An Introduction to Assembler Chapter Four Dr. Gheith Abandah1

Control Operations

Mnemonic Operands Description Cycles Status 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 2RETFIE - Return from interrupt 2RETLW k Return with literal in W 2

RETURN - Return from Subroutine 2Dr. Gheith Abandah 14

Page 15: Starting to Program – An Introduction to Assembler Chapter Four Dr. Gheith Abandah1

Miscellaneous OperationsMnemonic Operands Description Cycles Status

AffectedCLRF f Clear f 1 ZCLRW - Clear W 1 ZNOP - No Operation 1

RLF f, d Rotate Left f through Carry 1 C

RRF f, d Rotate Right f through Carry 1 C

BCF f, b Bit Clear f 1BSF 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

Page 16: Starting to Program – An Introduction to Assembler Chapter Four Dr. Gheith Abandah1

Assembler Format

Dr. Gheith Abandah 16

Page 17: Starting to Program – An Introduction to Assembler Chapter Four Dr. Gheith Abandah1

Assembler Directives

Assembler directive Summary of action

list Implement a listing option

#include Include additional source file

org Set program origin

equ Define an assembly constant; this allows us to assign a value to a label

end End program block

Dr. Gheith Abandah 17

Page 18: Starting to Program – An Introduction to Assembler Chapter Four Dr. Gheith Abandah1

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

Page 19: Starting to Program – An Introduction to Assembler Chapter Four Dr. Gheith Abandah1

Example: move push button to LED

Dr. Gheith Abandah 19

Page 20: Starting to Program – An Introduction to Assembler Chapter Four Dr. Gheith Abandah1

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

Page 21: Starting to Program – An Introduction to Assembler Chapter Four Dr. Gheith Abandah1

Example – Page 2;

;specify SFRs

status equ 03

porta equ 05

trisa equ 05

portb equ 06

trisb equ 06

;

Dr. Gheith Abandah 21

Page 22: Starting to Program – An Introduction to Assembler Chapter Four Dr. Gheith Abandah1

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

Page 23: Starting to Program – An Introduction to Assembler Chapter Four Dr. Gheith Abandah1

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

Page 24: Starting to Program – An Introduction to Assembler Chapter Four Dr. Gheith Abandah1

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