Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations

Presentation on theme: "Starting to Program – An Introduction to Assembler Chapter Four Dr. Gheith Abandah1."— Presentation transcript:

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

2 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 Abandah2

3 Introduction Dr. Gheith Abandah3 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];

4 Development Process Dr. Gheith Abandah4

5 ALU Data Flow Dr. Gheith Abandah5

6 The PIC 16 Series Instruction Set Dr. Gheith Abandah6 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

7 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: addwfPORTA, 0 Adds the contents of the working register and register PORTA, puts the result in the working register. Dr. Gheith Abandah7

8 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: bsfSTATUS, 5 Sets to 1 Bit 5 of register STATUS. Dr. Gheith Abandah8

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

10 10 Instruction Formats

11 Arithmetic Operations MnemonicOperandsDescriptionCycles Status Affected ADDWFf, dAdd W and f1C,DC,Z COMFf, dComplement f1Z DECFf, dDecrement f1Z INCFf, dIncrement f1Z SUBWFf, dSubtract W from f1C,DC,Z ADDLWkAdd literal and W1C,DC,Z SUBLWkSubtract W from literal1C,DC,Z Dr. Gheith Abandah11

12 Logic Operations MnemonicOperandsDescriptionCycles Status Affected ANDWFf, dAND W with f1Z IORWFf, dInclusive OR W with f1Z XORWFf, dExclusive OR W with f1Z ANDLWkAND literal with W1Z IORLWkInclusive OR literal with W1Z XORLWkExclusive OR literal with W1Z Dr. Gheith Abandah12

13 Data Movement Operations MnemonicOperandsDescriptionCycles Status Affected MOVFf, dMove f1Z MOVWFfMove W to f1 SWAPFf, dSwap nibbles in f1 MOVLWkMove literal to W1 Dr. Gheith Abandah13

14 Control Operations MnemonicOperandsDescriptionCycles Status Affected DECFSZf, dDecrement f, Skip if 01 (2) INCFSZf, dIncrement f, Skip if 01 (2) BTFSCf, bBit Test f, Skip if Clear1 (2) BTFSSf, bBit Test f, Skip if Set1 (2) CALLkCall subroutine2 GOTOkGo to address2 RETFIE-Return from interrupt2 RETLWkReturn with literal in W2 RETURN-Return from Subroutine2 Dr. Gheith Abandah14

15 Miscellaneous Operations MnemonicOperandsDescriptionCycles Status Affected CLRFfClear f1Z CLRW-Clear W1Z NOP-No Operation1 RLFf, dRotate Left f through Carry1C RRFf, d Rotate Right f through Carry 1C BCFf, bBit Clear f1 BSFf, bBit Set f1 CLRWDT-Clear Watchdog Timer1TO',PD' SLEEP-Go into standby mode1TO',PD' Dr. Gheith Abandah15

16 Assembler Format Dr. Gheith Abandah16

17 Assembler Directives Assembler directive Summary of action listImplement a listing option #includeInclude additional source file orgSet program origin equ Define an assembly constant; this allows us to assign a value to a label endEnd program block Dr. Gheith Abandah17

18 Number Representation in MPASM RadixExample DecimalD255 HexadecimalH8d or 0x8d OctalO574 BinaryB01011100 ASCIIG or AG Dr. Gheith Abandah18

19 Example: move push button to LED Dr. Gheith Abandah19

20 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 Abandah20

21 Example – Page 2 ; ;specify SFRs status equ 03 porta equ 05 trisa equ 05 portb equ 06 trisb equ 06 ; Dr. Gheith Abandah21

22 Example – Page 3 ; org 00 ;Initialise start bsf status,5 ;select memory bank 1 movlw B00011000 movwf trisa ;set port A direction movlw 00 movwf trisb ;all port B bits output bcf status,5 ;select bank 0 Dr. Gheith Abandah22

23 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 Abandah23

24 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 cant 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 Abandah24

Download ppt "Starting to Program – An Introduction to Assembler Chapter Four Dr. Gheith Abandah1."

Similar presentations

Ads by Google