PIC Discussion. By Eng. Tamar Jomaa

Similar documents
Lecture (04) PIC16F84A (3)

Laboratory: Introduction to Mechatronics. Instructor TA: Edgar Martinez Soberanes Lab 2. PIC and Programming

PIC 16F84A programming (II)

Chapter 4 Sections 1 4, 10 Dr. Iyad Jafar

EEE111A/B Microprocessors

TOPIC 3 INTRODUCTION TO PIC ASSEMBLY LANGUAGE. E4160 Microprocessor & Microcontroller System. Prepared by : Puziah Yahaya JKE, POLISAS / DEC 2010

DERTS Design Requirements (1): Microcontroller Architecture & Programming

Lesson 14. Title of the Experiment: Introduction to Microcontroller (Activity number of the GCE Advanced Level practical Guide 27)

Chapter 5 Sections 1 6 Dr. Iyad Jafar

Embedded Systems. PIC16F84A Sample Programs. Eng. Anis Nazer First Semester

Professor E. Ambikairajah UNSW Sydney

ME 475 Lab2 Introduction of PIC and Programming. Instructor: Zhen Wang

UNIVERSITY OF ULSTER UNIVERSITY EXAMINATIONS : 2001/2002. Semester 2. Year 2 MICROCONTROLLER SYSTEMS. Module Code: EEE305J2. Time allowed: 3 Hours

CENG 336 INT. TO EMBEDDED SYSTEMS DEVELOPMENT. Spring 2006

Embedded Systems Design (630470) Lecture 4. Memory Organization. Prof. Kasim M. Al-Aubidy Computer Eng. Dept.

Assembly Language Instructions

DHANALAKSHMI COLLEGE OF ENGINEERING, CHENNAI DEPARTMENT OF ELECTRICAL AND ELECTRONICS ENGINEERING. EE6008 Microcontroller based system design

Embedded Systems. PIC16F84A Internal Architecture. Eng. Anis Nazer First Semester

Instuction set

Learning Objectives:

SOLUTIONS!! DO NOT DISTRIBUTE!!

University of Jordan Faculty of Engineering and Technology Department of Computer Engineering Embedded Systems Laboratory

PIC16F87X 13.0 INSTRUCTION SET SUMMARY INSTRUCTIONS DESCRIPTIONS

Embedded System Design

ME 515 Mechatronics. A microprocessor

LAB WORK 2. 1) Debugger-Select Tool-MPLAB SIM View-Program Memory Trace the program by F7 button. Lab Work

NH-67, TRICHY MAIN ROAD, PULIYUR, C.F , KARUR DT. DEPARTMENT OF ELECTRONICS AND COMMUNICATION ENGINEERING COURSE MATERIAL

Chapter 2 Sections 1 8 Dr. Iyad Jafar

Chapter 3: Further Microcontrollers

Dept. of Computer Engineering Final Exam, First Semester: 2016/2017

Outlines. PIC Programming in C and Assembly. Krerk Piromsopa, Ph.D. Department of Computer Engineering Chulalongkorn University

UNIVERSITY OF ULSTER UNIVERSITY EXAMINATIONS : 2001/2002 RESIT. Year 2 MICROCONTROLLER SYSTEMS. Module Code: EEE305J1. Time allowed: 3 Hours

The University of Texas at Arlington Lecture 3

PIC PROGRAMMING START. The next stage is always the setting up of the PORTS, the symbol used to indicate this and all Processes is a Rectangle.

EE 367 Introduction to Microprocessors Homework 6

PIC16C63A/65B/73B/74B

Outline. Micriprocessor vs Microcontroller Introduction to PIC MCU PIC16F877 Hardware:

PIC Architecture & Assembly Language Programming. Hsiao-Lung Chan Dept Electrical Engineering Chang Gung University, Taiwan

Micro II and Embedded Systems

Chapter 13. PIC Family Microcontroller

Section 31. Instruction Set

CONNECT TO THE PIC. A Simple Development Board

Jordan University of Science and Technology Electrical Engineering Department Microcontrollers and Embedded Systems Spring 2011

ECE 354 Computer Systems Lab II. Interrupts, Strings, and Busses

/* PROGRAM FOR BLINKING LEDs CONEECTED TO PORT-D */

PIC16C84. 8-bit CMOS EEPROM Microcontroller PIC16C84. Pin Diagram. High Performance RISC CPU Features: CMOS Technology: Peripheral Features:

ECE 354 Introduction to Lab 2. February 23 rd, 2003

16.317: Microprocessor-Based Systems I Spring 2012

PIC16F84A 7.0 INSTRUCTION SET SUMMARY INSTRUCTIONS DESCRIPTIONS

APPLICATION NOTE Wire Communication with a Microchip PICmicro Microcontroller

16.317: Microprocessor-Based Systems I Summer 2012

SOLAR TRACKING SYSTEM USING PIC16F84A STEPPER MOTOR AND 555TIMER

ME 6405 Introduction to Mechatronics

CHAPTER ASSEMBLY LANGUAGE PROGRAMMING

Mod-5: PIC 18 Introduction 1. Module 5

PIC Discussion By Eng. Tamar Jomaa

PIC16F8X 18-pin Flash/EEPROM 8-Bit Microcontrollers

Lesson 4 Fun with W and F

Input/Output Ports and Interfacing

Flow Charts and Assembler Programs

which means that writing to a port implies that the port pins are first read, then this value is modified and then written to the port data latch.

/ 40 Q3: Writing PIC / 40 assembly language TOTAL SCORE / 100 EXTRA CREDIT / 10

The University of Texas at Arlington Lecture 5

Introduction. Embedded system functionality aspects. Processing. Storage. Communication. Transformation of data Implemented using processors

PART TWO LISTING 8 PROGRAM TK3TUT8 MOVF PORTA,W ANDLW B ADDWF COUNT,F MOVF COUNT,W MOVWF PORTB GOTO LOOP

Physics 335 Intro to MicroControllers and the PIC Microcontroller

PIC16F8X. 8-Bit CMOS Flash/EEPROM Microcontrollers PIC16F8X PIC16CR8X. Pin Diagram. Devices Included in this Data Sheet:

CHAPTER 4. PIC Microcontrollers. Assembly Language Programming. on-line FREE! Index Development systems Contact us

Hardware Interfacing. EE25M Introduction to microprocessors. Part V. 15 Interfacing methods. original author: Feisal Mohammed

M PIC16F84A. 18-pinEnhanced FLASH/EEPROM 8-Bit Microcontroller. High Performance RISC CPU Features: Pin Diagrams. Peripheral Features:

Arithmetic,logic Instruction and Programs

ECE Test #1: Name

1 Introduction to Computers and Computer Terminology Programs Memory Processor Data Sheet... 4

When JP1 is cut, baud rate is Otherwise, baud rate is Factory default is that JP1 is shorted. (JP1 is jumper type in some model)

1 Introduction to Computers and Computer Terminology Programs Memory Processor Data Sheet Example Application...

AN587. Interfacing to an LCD Module. Interfacing to an LCD Module INTRODUCTION OPERATION CONTROL SIGNAL FUNCTIONS TABLE 2: CONDITIONAL ASSEMBLY FLAGS

4.5.1) The Label Field ) The Mnemonic Field. 4.5) Assembly Language Program Structure A PIC18 ALP consists of 3 type of statements:

Interrupts. ELEC 330 Digital Systems Engineering Dr. Ron Hayne. Images Courtesy of Ramesh Gaonkar and Delmar Learning

CHAPTER 6 CONCLUSION AND SCOPE FOR FUTURE WORK

Model Answer Microcontrollers. MCQ Problems Total Q1 Q2

Assembly Language programming (1)

ECE Homework #3

How Stuff Works: Processors

Binary Outputs and Timing

Microcontrollers. Microcontroller

Week1. EEE305 Microcontroller Key Points

CENG-336 Introduction to Embedded Systems Development. Timers

Timer2 Interrupts. NDSU Timer2 Interrupts September 20, Background:

Embedded Systems Programming and Architectures

EE6008-Microcontroller Based System Design Department Of EEE/ DCE

ENE 334 Microprocessors

D:\PICstuff\PartCounter\PartCounter.asm

Midrange 8b PIC Microcontrollers. ECE Senior Design 14 February 2017

EE 5340/7340 Motorola 68HC11 Microcontroler Lecture 1. Carlos E. Davila, Electrical Engineering Dept. Southern Methodist University

PIC16F84A. 18-pin Enhanced Flash/EEPROM 8-Bit Microcontroller. Devices Included in this Data Sheet: Pin Diagrams. High Performance RISC CPU Features:

GUIDE TO USE OF PIC 16F690 EEProm. The 16F690 PIC has a 256 byte EEProm (mapped to 0x x21FF).

ME4447/6405. Microprocessor Control of Manufacturing Systems and Introduction to Mechatronics. Instructor: Professor Charles Ume LECTURE 7

The University of Texas at Arlington Lecture 7

Module Contents of the Module Hours COs

Mechatronics and Measurement. Lecturer:Dung-An Wang Lecture 6

Transcription:

PIC Discussion By Eng. Tamar Jomaa

Chapter#2 Programming Microcontroller Using Assembly Language

Quiz#1 : Time: 10 minutes Marks: 10 Fill in spaces: 1) PIC is abbreviation for 2) Microcontroller with..architecture called RISC microcontroller, which is the abbreviation for 3) The various circuits inside a typical computer are connected to one another through three busses which are..,,.. 4) Write the size of each memory: program memory.. RAM.. EEPROM.. 5) The program must start from location..

Bonus : Time: 10 minutes Marks: +2 Write the function for each pin:

Outlines for part#1: 2.1 Machine language and assembly language. 2.2 Assembler statements (instructions/ directives) and number representation. 2.3 Addressing modes 2.3.1 Opcode 2.3.2 The configuration 2.3.3 Hexa file 2.3.4 Direct and indirect addressing

2.1 Machine language and assembly language: We as humans express our ideas in complex and often loosely defined linguistic forms. A computer reads and understands binary, and responds in a precise way to precise instructions. It is ruthlessly logical and does exactly what it is told.

2.1 Machine language and assembly language: How can a programmer write programs for a computer? The human learns machine code. Use a high-level language (HLL). Use Assembler.

2.1 Machine language and assembly language: Assembly language: Every one of the computer s instructions set is given a mnemonic. This is usually a three- or four-letter word that can be used to represent directly one instruction from the instruction set. The programmer then writes the program using the instruction mnemonics. The programmer has to think at the level of the computer, as he/she is working directly with its instructions, but at least the programmer has the mnemonics to use, rather than actually working with the computer machine code. A special computer program called a Cross-Assembler, usually these days running on a PC, converts the code written in mnemonics to the machine code that the computer will see.

2.1 Machine language and assembly language:

2.1 Machine language and assembly language: The PIC 16 Series instruction set, with a little more on the ALU:

2.1 Machine language and assembly language: The PIC 16 Series instruction set, with a little more on the ALU: The ALU can operate on data from two sources. One is the W (or Working ) register. The other is either a literal value or a value from a data memory (whose memory locations Microchip call register files ). A literal value is a byte of data associated with a particular instruction that the programmer embeds in the program. The data that the instruction operates on, or uses, is called the operand. Operands can be data or addresses. Always need an operand to be specified with them, others do not.

2.1 Machine language and assembly language: Once an instruction has been executed, where is the result stored? For many instructions Microchip offer a choice, whereby the result can either be held in the W register or stored back in data memory. Which one is used is fixed by certain instructions; in others it is determined by the state of a special d bit, which is specified within the instruction.

The PIC 16 Series instruction

2.1 Machine language and assembly language: You can see that the table is divided into six columns, and each of the 35 instructions gets one line. The first column gives the actual mnemonic, together with the code specifying the type of operand it acts on. There are four such operand codes: f for file (i.e. memory location in RAM), a 7-bit number b for bit, to be found within a file also specified, a 3-bit number d for destination, as described above, a single bit k for literal, an 8-bit number if data or 11-bit if address.

2.1 Machine language and assembly language: The second column summarises what the instruction does. In some cases this gives adequate information. The third column shows how many instruction cycles the instruction takes to execute. The fourth column gives the actual 14-bit opcode of each instruction. This is the code that the Cross- Assembler produces, as it converts the original program in Assembler language to machine code. The fifth column shows which bits in the Status register are affected by each instruction.

2.1 Machine language and assembly language: Five example instructions: 1) clrw : This clears the value in the W register to zero. There are no operands to specify. Column 5 tells us that the Status register Z bit is affected by the instruction. As the result of this instruction is always zero, the bit is always set to 1. No other Status register bits are affected. 2) clrf f : This clears the value of a memory location, symbolised as f. It is up to the programmer to specif a value for f. Again, because the result is zero, the Status register Z bit is affected.

2.1 Machine language and assembly language: 3) addwf f,d: This adds the contents of the W register to the contents of a memory location symbolised by f. It is up to the programmer to specify a value for f. There is a choice of where the result is placed. This is determined by the value of the operand bit d. Because of the different values that the result can take, all three condition code bits, i.e. Z, the Carry bit C, and the Digit Carry bit DC are affected by the instruction. 4) bcf f,b : This instruction clears a single bit in a memory location. Both the bit and the location must be specified by the programmer. The bit number b will take a value from 0 to 7, to identify any one of the 8 bits in a memory location. No Status register flags are affected, even though it is possible to imagine that the result of the instruction could be to set a memory location to zero.

2.1 Machine language and assembly language: 4) addlw k: This instruction adds the value of a literal, whose value k must be specified by the programmer, to the value held in the W register. The result is stored in the W register; there is no choice. Like addwf, all condition code bits can be affected by this instruction. Question: What is the meaning of the following instructions:

Solution:

2.1 Machine language and assembly language: Exercise: What does the following code do?

2.1 Machine language and assembly language: Solution:

2.1 Machine language and assembly language: To make the previous code more easier we use equ: All the identifiers for memory locations find in P16F84a.INC, instead of writing the name of each location by equ

2.1 Machine language and assembly language: Another important instructions for condition case:

2.1 Machine language and assembly language: Instructions for subroutine and stack:

2.1 Machine language and assembly language: Instructions for subroutine and stack:

2.1 Machine language and assembly language: Important note: If you call a sub-program within another sub-program called nested subroutine. When you do so, you must remember that each time the program is called sub-program or book a place in the stack, which is free when you return from sub program. If you call a sub-program of another branch within the program we use two stack sites may be three if there is another internal call. Because a microcontroller PIC16 stack owns eight sites (levels) must caution that no rash or flood or increase the stack is what is known as the stack overflow.

2.2 Assembler statements (instructions/ directives) and number representation An assembly language source cod consists of a set of statements. The two types of statements are : Instruction : which are translated into machine instruction by the assembler. Directives : which tell the assembler to perform a specific action during the assembling process. The format of the source code is shown below. The maximum column width is 255 characters. Example:

2.2 Assembler statements (instructions/ directives) and number representation Some common MPASM Assembler directives: Number representation in MPASM Assembler:

2.3 Addressing modes: General format for instructions: The format for instructions of PIC16 series is the following three kinds: Byte-oriented file register operations. Bit-oriented file register operations. Literal and control operations. The instructions are written in the program memory and one instruction is composed of 14 bits. These 14 bits are called a word.

2.3 Addressing modes: 1. Byte-oriented file register operations: The instructions of this format are the instructions which process a byte unit.

2.3 Addressing modes: Note: f: file register, it is the address of GPR or SFR. GPR and SFR are 8 bit register but in the instruction it has only 7 bits, the last bit is dropped.

2.3 Addressing modes: Example: porta 05h address trisa 85h address 05h: 0 000 0101 85h: 1 000 0101 These bits are dropped. These bits only appear in the instruction set. Note: The dropped bit was defined according to the value of RP0 in the status register.

2.3 Addressing modes: Complete example: ADDWF PORTA,W From table the opcode like this: The opcode: 00 0111 dfff fff opcode operand PORTA has 05h address so, the instruction will be as the following: 00 0111 0000 0101 0 3 0 5

2.3 Addressing modes: 2. Bit-oriented file register operations: The instructions of this forma are the instruction which processes a bit unit.

2.3 Addressing modes: Think : Why does b available in 3 digits but the f in 7 digits? Solution: Because b is from 0 to 7 so we can act it in 3 digits But f is from 0 to 7f so we can act it in 7 bits. Example#1: BSF portb,2 From table the opcode is: f : portb has address 06h b: 2 So the opcode is: 01 0101 0000 0110 1 5 0 6

2.3 Addressing modes: Example#2: BSF trisb,2 From table the opcode is: f : trisb has address 86h b: 2 So the opcode is: 01 0101 0000 0110 1 5 0 6 Note: bsf trisb and bsf portb have the same machine language.

2.3 Addressing modes: Literal and control operations: The instructions of this format do the processing which used the fixed number (k) which was written in the instruction. There are two instruction types and fixed number (k) is 11 bits about GOTO and CALL instruction. In case of GOTO and CALL instruction

2.3 Addressing modes: In the first form k is a constant and since all registers are 8 bit, registers maximum value that can be stored in the register is 255(ffh). In the second form k is address of program memory. It s used with CALL and goto instructions. It s 11 bit because max range from 0 to 2047(7FFh).

2.3 Addressing modes: In the first form k is a constant and since all registers are 8 bit, registers maximum value that can be stored in the register is 255(ffh). In the second form k is address of program memory. It s used with CALL and goto instructions. It s 11 bit because max range from 0 to 2047(7FFh). Example: XORLW 15h The opcode: 11 1010 kkkk kkkk 11 1010 0001 0101

2.3 Addressing modes: Write the machine language for the following code: Remember : org and end are directives that haven t machine code, because machine code for instructions only.

2.3 Addressing modes: Solution : The instruction The opcode rule The opcode ORG 0X000 directive GOTO START 10 1000 0000 0101 2805 ORG 0X004 directive RETFIE BSF STATUS,RP0 BCF TRISA,0 BSF TRISB,0 BCF STATUS,RP0 MOVF PORTB,W MOVWF PORTA BSF STATUS,RP0 END 00 0000 0000 1001 01 0110 1000 0011 01 0000 0000 0101 01 0100 0000 0110 01 0100 0000 0110 00 1000 0000 0110 00 0000 1000 0101 10 1000 0000 1001 directive 0009 1683 1005 1406 1283 0806 0085 2809

2.3 Addressing modes: Configuration: The configuration bits may be change to 0 or left it to default value which is 1. This bits exist in address 2007h in program memory. Bit0 & Bit1: to define the type of crystal, as the following: Bit2: active or not the watch do timer. Watch dog active Watch dog not active 1 default 0

2.3 Addressing modes: Bit3: PWRTE to active or not the power timer after 72ms during reset. Power timer not active Power timer active 1 default 0 Bit4: CP to prevent the program code The program code is not Protected The program code is Protected 1 default 0 The configuration bits: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 FOSC0 FOSC1 WDTE PWRTE CP CP CP CP CP CP CP CP CP CP CP Example: 1000 1111 1111 11 = 1FF3

2.3 Addressing modes: The configuration is written by CONFIG directive. Summary: all in the green are defaults

2.3 Addressing modes: Hex file: The hexa file contains the machine language that deals with PIC microcontroller. The hexadecimal object file format for PIC Microcontroller General Record Format: Record Mark: each record begins with a Record Mark field containing 03AH,the ASCII code for the colon ' : ' character. Record Length: The number of bytes of information or data Example: 02 2 bytes byte=8 bits so 2 byte=2x8=16 bits --4bit--- ---4bit--- --4bit--- ---4bit---- 4 hexadecimal digits. 08 8byte 8x8=64 bits 64/4=16 hexadecimal digits.

2.3 Addressing modes: Offset: By the offset we can arrive to the address, the address for the byte not for the word. Example: 0008 6 bits Byte=8bit offset Record Type: It is used to interpret the remaining information within the record. The encoding for all the current record types are:

2.3 Addressing modes: Chick Sum: This field contains the check sum on the Record length, Load Offset, Record Type, and Information or Data. Therefore, the sum of all the ASCII pairs in a record after converting to binary, from the Record length field to and including the Chick Sum field, is zero. An important question for Mid Term Exam : Write the program which has the following hexa file: :020000040000FA :020000000528D1 :0800080005288316FF30850076 :0C001000003086008312050886000B2803 :00000001FF

2.3 Addressing modes: SOLUTION: Step(1): distribute the bits as following: the last byte is Check sum : 02 0000 04 0000 FA : 02 0000 00 0528 D1 : 08 0008 00 0528 8316 FF30 8500 76 : 0C 0010 00 0030 8600 8312 0508 8600 0B23 D3 : 00 0000 01 FF Step(2): convert the data that have only 00 type. Step(3):distribute all 2 bytes separately, because each 2 bytes act one instruction. Step(4):reverse LSB with MSB then convert.

Instruction Reverse ins. The opcode The code 0528 2805 10 1000 0000 0101 Goto 5 0528 2805 10 1000 0000 0101 Goto 5 8316 1683 01 0110 1000 0011 BSF STATUS,RP0 FF30 30FF 11 0000 1111 1111 MOVLW FF 8500 0085 00 0000 1000 0101 MOVWF PORTA 0030 3000 11 0000 0000 0000 MOVLW 0X00 8600 0086 00 0000 1000 0110 MOVWF PORTB 8312 1283 01 0010 1000 0011 BCF STATUS,RP0 0508 0805 00 1000 0000 0101 MOVF PORTA,W 8600 0086 00 0000 1000 0110 MOVWF PORTB 0B23 280B 10 1000 0000 1011 GOTO 0B

2.3 Addressing modes: After organize the previous instruction we got the following code:

2.3 Addressing modes: Direct and indirect addressing: Addressing mode: it is the way in which an operand is specified. There are 3 types of addressing modes: 1. Immediate addressing mode. 2. Register operand addressing mode. 3. Memory operand addressing mode, which classified into to groups: A. Direct addressing B. Indirect addressing

2.3 Addressing modes: Direct and indirect addressing: 1. Immediate addressing mode: The operand is a number or constant not an address. Example: movlw 43h 2. Register operand addressing mode: Deals with registers Example: CLRW W:work register. 3.Memory operand addressing mode: A) Direct : deals with address or memory location Example: CLRF 13H or MOVWF TRISA B) Indirect : uses INDF and FSR.

2.3 Addressing modes: Direct and indirect addressing: A)Direct: Direct Addressing is done through a 9-bit address. This address is obtained by connecting 7th bit of direct address of an instruction with two bits (RP1, RP0) from STATUS register as figure. Any access to SFR registers can be an example of direct addressing.

2.3 Addressing modes: Direct and indirect addressing: Quick Question We observe that SFR is classified into 2 banks, each bank consist from 8 bit but we need only 7 bit because the last bit for select the bank. Now observe the picture, the GPR does not classified into 2 banks, so shall I need 16 bit?? the solution is No, because each register in GPR consist from 2 register each one has 8 bit and any thing you write it in first register is directly copy to the other register, but we can reach to any register from any bank, so we also need 7 bit.

2.3 Addressing modes: Direct and indirect addressing: B) Indirect: It does not take an address from an instruction, but it derives it from IRP bit of STATUS and FSR registers. Addressed location is accessed through INDF register which in fact holds the address indicated by the FSR. Indirect addressing is very convenient for manipulating data arrays located in GPR registers. In this case, it is necessary to initialize FSR register with a starting address of the array, and the rest of the data can be accessed by incrementing the FSR register.

2.3 Addressing modes: Direct and indirect addressing: Figure below shows the indirect addressing concept. we put the address of the register which we want to deal with it in FSR, which the FSR work as pointer. We deal with the location which the FSR points to it from INDF register.

Example#1: Filling 0C-0F GPR registers with 55h Indirect addressing examples

Example#2: Filling All GPR registers with 00h Indirect addressing examples

Indirect addressing examples

Homework Q1) Extract the assembly language instruction from the following hex file :0800080009008316B8308100E5 Q2) Implement a program that copy the input data from portb to all GPR. Note: date delivery is next lecture.