Embedded System Design

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

ME 6405 Introduction to Mechatronics

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

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

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

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.

Micro II and Embedded Systems

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

PIC16F8X 18-pin Flash/EEPROM 8-Bit Microcontrollers

EEE111A/B Microprocessors

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

DERTS Design Requirements (1): Microcontroller Architecture & Programming

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

PIC 16F84A programming (II)

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

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

Lecture (04) PIC16F84A (3)

Section 11. Timer0. Timer0 HIGHLIGHTS. This section of the manual contains the following major topics:

Lecture (02) PIC16F84 (I)

Learning Objectives:

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

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

EE6008-Microcontroller Based System Design Department Of EEE/ DCE

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

Flow Charts and Assembler Programs

PIC Discussion By Eng. Tamar Jomaa

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

Chapter 2 Sections 1 8 Dr. Iyad Jafar

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

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

ME 515 Mechatronics. A microprocessor

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

PIC16C432 OTP 8-Bit CMOS MCU with LIN bus Transceiver

Section 13. Timer0 HIGHLIGHTS. Timer0. This section of the manual contains the following major topics:

PIC16F87X. 28/40-pin 8-Bit CMOS FLASH Microcontrollers. Devices Included in this Data Sheet: Pin Diagram PDIP. Microcontroller Core Features:

PIC16F8X PIC16F8X. 18-pin Flash/EEPROM 8-Bit Microcontrollers

PIC16C52. EPROM-Based 8-Bit CMOS Microcontroller PIC16C52. Pin Diagrams. Feature Highlights. High-Performance RISC CPU. Peripheral Features

Input/Output Ports and Interfacing

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

PIC Discussion By Eng. Tamar Jomaa

PIC16F /40-Pin 8-Bit CMOS FLASH Microcontrollers. Devices Included in this Data Sheet: Pin Diagram PDIP. Microcontroller Core Features:

PIC16C Pin, 8-Bit CMOS Microcontroller. Device included in this Data Sheet: Special Microcontroller Features: High-Performance RISC CPU:

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

PIC Discussion. By Eng. Tamar Jomaa

CENG-336 Introduction to Embedded Systems Development. Timers

CENG 336 INT. TO EMBEDDED SYSTEMS DEVELOPMENT. Spring 2006

Assembly Language Instructions

To Our Valued Customers

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

PIC Microcontroller Introduction

PIC16C Pin, 8-Bit CMOS Microcontroller. Device included in this Data Sheet: Special Microcontroller Features: High-Performance RISC CPU:

EE 361L Digital Systems and Computer Design Laboratory

Embedded Systems Lab Lab 8 EEPROM

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

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

Section 4. Architecture

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

DRPIC166X IP Core. High Performance 8-bit RISC Microcontroller v. 2.17

PIC16F870/ /40-Pin, 8-Bit CMOS FLASH Microcontrollers. Devices Included in this Data Sheet: Pin Diagram. Microcontroller Core Features:

Week1. EEE305 Microcontroller Key Points

PIC12C5XX. 8-Pin, 8-Bit CMOS Microcontroller. CMOS Technology: Devices included in this Data Sheet: High-Performance RISC CPU: Pin Diagram

These 3 registers contain enable, priority,

PIC16F818/819 Data Sheet

Contents. PIC Mini Data Sheets

D:\PICstuff\PartCounter\PartCounter.asm

PIC16C62X Data Sheet. EPROM-Based 8-Bit CMOS Microcontrollers Microchip Technology Inc. DS30235J

CHAPTER 6 CONCLUSION AND SCOPE FOR FUTURE WORK

Documentation Design File Formats

8051 Microcontroller

PIC16F5X Data Sheet. Flash-Based, 8-Bit CMOS Microcontroller Series

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

Chapter 10 Sections 1,2,9,10 Dr. Iyad Jafar

PIC16F87X. 28/40-pin 8-Bit CMOS FLASH Microcontrollers. Devices Included in this Data Sheet: Pin Diagram PDIP. Microcontroller Core Features:

Model Answer Microcontrollers. MCQ Problems Total Q1 Q2

DHANALAKSHMI COLLEGE OF ENGINEERING, CHENNAI DEPARTMENT OF ELECTRICAL AND ELECTRONICS ENGINEERING. EE Microcontroller Based System Design

Mod-5: PIC 18 Introduction 1. Module 5

PIC12CE5XX. 8-Pin, 8-Bit CMOS Microcontroller with EEPROM Data Memory. Devices Included in this Data Sheet: Pin Diagram: High-Performance RISC CPU:

PIC16F5X Data Sheet. Flash-Based, 8-Bit CMOS Microcontroller Series Microchip Technology Inc. DS41213D

Binary Outputs and Timing

C and Embedded Systems. So Why Learn Assembly Language? C Compilation. PICC Lite C Compiler. PICC Lite C Optimization Results (Lab #13)

Laboratory 9. Programming a PIC Microcontroller - Part I

PIC16F Pin, 8-Bit Flash Microcontroller. Processor Features: extreme Low-Power (XLP) Features. Microcontroller Features: Peripheral Features:

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

APPLICATION NOTE Wire Communication with a Microchip PICmicro Microcontroller

FLASH Microcontroller Programming Specification PIN DESCRIPTIONS (DURING PROGRAMMING): PIC18FXX20. During Programming

The University of Texas at Arlington Lecture 5

PIC16F87X 13.0 INSTRUCTION SET SUMMARY INSTRUCTIONS DESCRIPTIONS

DESIGN AND FABRICATION OF FARE METER OF TAXICAB USING MICROCONTROLLER

Section 16. Basic Sychronous Serial Port (BSSP)

Timer2 Interrupts. NDSU Timer2 Interrupts September 20, Background:

FLASH Microcontroller Programming Specification PIN DESCRIPTIONS (DURING PROGRAMMING): PIC18FXX2/XX8. During Programming

PIC16F Pin, 8-Bit Flash Microcontroller. Processor Features: Microcontroller Features: CMOS Technology: Peripheral Features:

ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN-ĐIỆN TỬ BỘ MÔN KỸ THUẬT ĐIỆN TỬ. Embedded System Design

PIC10F200/202/204/206

PIC16F630/676 Data Sheet

SOLUTIONS!! DO NOT DISTRIBUTE PRIOR TO EXAM!!

PIC16F87XA Data Sheet

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

University of Dayton. Electrical & Computer Engineering. ECE 536 Microprocessor Applications. Dr. Ralph Barrera. Assignment (4)

Embedded Systems Programming and Architectures

Transcription:

ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN-ĐIỆN TỬ BỘ MÔN KỸ THUẬT ĐIỆN TỬ Embedded System Design : Microcontroller 1. Introduction to PIC microcontroller 2. PIC16F84 3. PIC16F877 4. Apply PIC microcontroller for embedded systems 1 1. Introduction to PIC microcontroller PIC is a family of modified Harvard architecture microcontrollers made by Microchip Technology The PIC1650 was originally developed by General Instruments The name PIC initially referred to "Peripheral Interface Controller" 2 1

Why is PIC popular? PICs are popular with developers due to low cost wide availability large user base extensive collection of application notes availability of low cost or free development tools serial programming capability PIC18F4XK20 Starter Kit 128x64 Organic LED Display (SPI) 32.768 khz External Oscillator (Timer1) Analog input filtering and gain control into RE1 PWM output filtering from RC2 4 push buttons for user interfacing 3 PIC microcontroller Comparison of PIC families Complete portfolio: 6 to 100 pins, 384B to 512KB of program memory, up to 80MHz Upward compatible architectures to preserve investment in code development Pin compatibility in multiple packages facilitates drop-in replacement Range of memory technologies: Self Programming Flash, OTP, ROM Easy Migration across 8, 16, and 32-bit families 4 2

PIC Microcontroller 5 Some members of PIC16 Series 6 3

Some members of PIC16 Series 7 PIC speed Can use crystal, clock oscillator, or even an RC circuit Some PICs have a built in 4MHz RC clock, not very accurate, but requires no external components Instruction speed = ¼ clock speed 12C50x 4MHz 12C67x 10MHz 16Cxxx 20MHz 17C4x/17C7xxx 33MHz 18Cxxx 40MHz 8 4

PIC Clock Three ways to provide the clock signal to a PIC 9 PIC s program memory PICs have two difference types of program storage: EPROM (Erasable Programmable ROM) need high voltage from programmer to program (~13V) need windowed chips and UV light to erase PIC examples: any C part 12C50x, 17C7xx, FLASH rewriteable much faster to develop on PIC examples: any F part 16F84, 16F87x, 18Fxxx 10 5

PIC16 Series http://tme.com.vn 11 2. The Microchip PIC16F84 The Microchip PIC16F84 is a low cost, single chip, 8 bit microcontroller. Only 35 single word instructions All instructions single cycle except for program branches which are two cycle Operating speed: DC 20 MHz clock input DC 200 ns instruction cycle 1024 words of program memory 68 bytes of Data RAM 64 bytes of Data EEPROM 14 bit wide instruction words 8 bit wide data bytes 12 6

The PIC 16F84A pin connection diagram 13 PIC16C8X PINOUT DESCRIPTION 14 7

PIC16C8X PINOUT DESCRIPTION.. 15 Architecture of the PIC16F84 Buses: Communication lines for transferring data within the processor. Oscillator: Used to drive the microprocessor, clocking data and instructions in the processor. Timing: The PIC has an internal divide by 4 whereby 4 oscillator pulses form one clock pulse. This makes instruction times easy to calculate. Most instructions (except calls and returns and other instructions involving jumps and branches) take one clock cycle, so with a 4MHz oscillator (divided by 4), instructions take 1 s. 16 8

Architecture of the PIC16F84 17 W Register 18 9

The 16F84A Status register 19 The PIC16F84 Status register 20 10

16F84A memory features 21 PIC16F84 Memory There are two memory blocks in the PIC16C84; program memory and data memory. Each block has its own bus, so that access to each can occur during the same clock cycle. The data memory can be further broken down into general purpose memory and special purpose registers 22 11

PIC16F84 Program Memory Pointed to by reset vector Pointed to by interrupt vector 0x00 0x01 0x02 0x03 0x04 0x3FF 23 PIC16F84 Data Memory (This is a simplified memory map that excludes bank1. Study the memory banks in the Microchip data sheets). 0x00 Ind. address. 0x01 TMR0 0x02 PCL Special-purpose 0x03 STATUS registers 0x04 FSR Indirect pointer 0x05 PORTA data PORT A 0x06 PORTB data PORT B 0x07 Not used 0x08 EEPROM prog. 0x09 0x0A PCLATH Program counter 0x0B INTCON Interrupt control 0x0C.. \:.. \.. General-purpose file registers... /.. / 24 12

PIC16F84 Register Mapped I/O PORTA and PORTB can be programmed as an input or an output. PORTA is 5 bits wide and PORTB is 8 bits wide. (Bit 4 of port A can be used for an external timer input.) PORTA has pins/bits labelled RA4:RA0 PORTB has pins/bits labelled RB7:RB0 Referencing bits. Bits are numbered 7 0 from left to right, i.e., msb lsb. One of the most common programming errors is incorrect specification of bit numbers. 0x00 Ind. address. 0x01 TMR0 0x02 PCL Special-purpose 0x03 STATUS registers 0x04 FSR Indirect pointer 0x05 PORTA data PORT A 0x06 PORTB data PORT B 0x07 Not used 0x08 EEPROM prog. 0x09 0x0A PCLATH Program counter 0x0B INTCON Interrupt control 0x0C.. \:.. \.. General-purpose file registers... /.. / 25 PIC16F84A CONFIGURATION WORD bit 13 4 CP: Code Protection bit 1 = Code protection disabled 0 = All program memory is code protected bit 3 PWRTE: Power up Timer Enable bit 1 = Power up Timer is disabled 0 = Power up Timer is enabled bit 2 WDTE: Watchdog Timer Enable bit 1 = WDT enabled 0 = WDT disabled bit 1 0 FOSC1:FOSC0: Oscillator Selection bits 11 = RC oscillator (Resistor/capacitor) 10 = HS oscillator (High Speed Crystal/Resonator) 01 = XT oscillator (Crystal/Resonator) 00 = LP oscillator (Low Power Crystal) 26 13

OPTION REGISTER (ADDRESS 81h) bit 7 RBPU: PORTB Pull up Enable bit 1 = PORTB pull ups are disabled 0 = PORTB pull ups are enabled by individual port latch values bit 6 INTEDG: Interrupt Edge Select bit 1 = Interrupt on rising edge of RB0/INT pin 0 = Interrupt on falling edge of RB0/INT pin bit 5 T0CS: TMR0 Clock Source Select bit 1 = Transition on RA4/T0CKI pin 0 = Internal instruction cycle clock (CLKOUT) bit 4 T0SE: TMR0 Source Edge Select bit 1 = Increment on high to low transition on RA4/T0CKI pin 0 = Increment on low to high transition on RA4/T0CKI pin bit 3 PSA: Prescaler Assignment bit 1 = Prescaler is assigned to the WDT 0 = Prescaler is assigned to the Timer0 module bit 2-0 PS2:PS0: Prescaler Rate Select bits 27 DIRECT/INDIRECT ADDRESSING 28 14

DIRECT/INDIRECT ADDRESSING A simple program to clear RAM locations 20h 2Fh using indirect addressing movlw 0x20 ;initialize pointer movwf FSR ;to RAM NEXT clrf INDF ;clear INDF register incf FSR ;inc pointer btfss FSR,4 ;all done? goto NEXT ;NO, clear next CONTINUE : ;YES, continue An effective 9 bit address is obtained by concatenating the 8 bit FSR register and the IRP bit (STATUS<7>) However, IRP is not used in the PIC16F84A. 29 EEPROM Data Memory EEPROM data memory readable and writable during normal operation indirectly addressed through the Special Function Register (SFR) SRFs are: EECON1 EECON2 EEDATA EEADR 30 15

EECON1 Register (Adr. 88h) bit 7 5 Unimplemented: Read as '0' bit 4 EEIF: EEPROM Write Operation Interrupt Flag bit 1 = The write operation completed (must be cleared in software) 0 = The write operation is not complete or has not been started bit 3 WRERR: EEPROM Error Flag bit 1 = A write operation is prematurely terminated (any MCLR Reset or any WDT Reset during normal operation) 0 = The write operation completed bit 2 WREN: EEPROM Write Enable bit 1 = Allows write cycles 0 = Inhibits write to the EEPROM bit 1 WR: Write Control bit 1 = Initiates a write cycle. The bit is cleared by hardware once write is complete. The WR bit can only be set (not cleared) in software. 0 = Write cycle to the EEPROM is complete bit 0 RD: Read Control bit 1 = Initiates an EEPROM read RD is cleared in hardware. The RD bit can only be set (not cleared) in software. 0 = Does not initiate an EEPROM read 31 Reading The EEPROM Data Memory Reading the EEPROM data memory write the address to the EEADR register set control bit RD the data is available, in the next cycle, in the EEDATA register BCF STATUS, RP0 ; Bank 0 MOVLW CONFIG_ADDR ; MOVWF EEADR ; Address to read BSF STATUS, RP0 ; Bank 1 BSF EECON1, RD ; EE Read BCF STATUS, RP0 ; Bank 0 MOVF EEDATA, W ; W = EEDATA 32 16

Writing to the EEPROM Data Memory Writing to the EEPROM data memory write the address to the EEADR register and data to the EEDATA register follow a specific sequence to initiate the write for each byte BSF STATUS, RP0 ; Bank 1 BCF INTCON, GIE ; Disable INTs. BSF EECON1, WREN ; Enable Write MOVLW 55h ; MOVWF EECON2 ; Write 55h MOVLW AAh ; MOVWF EECON2 ; Write AAh BSF EECON1,WR ; Set WR bit ; begin write BSF INTCON, GIE ; Enable INTs. Requirement 33 PORT A: I/O Port 5 bit wide, bi direction port Corresponding data direction register is TRISA (TRISA bit = 1: input; TRISA bit = 0: output) On a Power on Reset, PORTA pins are configured as inputs and read as 0 PORT B: 8 bit wide, bi direction port Corresponding data direction register is TRISB RB7:RB4, have an interrupt on change feature 34 17

I/O Port Initializing Port A Initializing Port B BCF STATUS, RP0 ; CLRF PORTA ; Initialize PORTA by ; clearing output ; data latches BSF STATUS, RP0 ; Select Bank 1 MOVLW 0x0F ; Value used to ; initialize data ; direction MOVWF TRISA ; Set RA<3:0> as inputs ; RA4 as output ; TRISA<7:5> are always ; read as 0. BCF STATUS, RP0 ; CLRF PORTB ; Initialize PORTB by ; clearing output ; data latches BSF STATUS, RP0 ; Select Bank 1 MOVLW 0xCF ; Value used to ; initialize data ; direction MOVWF TRISB ; Set RB<3:0> as inputs ; RB<5:4> as outputs ; RB<7:6> as inputs 35 Assignments 1. What are 8 bit and 16 bit families of PIC microcontrollers? 2. What is maximum frequency of clock input for the PIC16F84A? 3. How many word of program memory are physically implemented in PIC16F84A? 4. What is the maximum memory space the PIC16F84A can address? 5. What is the address of the PORT A? 6. What is the address of the Status Register? 7. How to set all bits of Port A as outputs? 8. How many program calls and interrupts can the stack handle? 9. How many bytes are there for EEPROM of the PIC16F84A? 10. Show how to read the EEPROM data memory for PIC16F84A? 11. Show how to write the EEPROM data memory for PIC16F84A? 12. Show how to perform write verification for PIC16F84A? 36 18

Assignments 1. Design a PIC16F84 schematic in which Port A is input, connected with 4 buttons Port B is output, connected with 4 LEDs Write a program to control 4 LEDs by 4 buttons 2. Design a PIC16F84 schematic in which PIC16F84 interfaces with ADC0808 and 4 digit 7 segment LED through Port B RA0 and RA1 are to select digits of 7 segment LED RA2 is to control START signal of ADC0808 RA3 is to control OE signal of ADC0808 37 PIC16F873/ 874/ 876/ 877 35 single word instructions Operating speed DC 20MHz clock input DC 200ns instruction cycle Timer: timer0/timer1/timer2 2 Capturer, Compare, PWM modules 10 bit multi channel ADC SSP with SPI and I2C USART 3. The PIC16F87x 38 19

3 The PIC16F87x 39 PIC16F87x Block diagram 40 20

The program memory map and stack PIC16F877/876 PIC16F874/873 41 Data memory Organization Data memory: partitioned into multiple banks which contain the General Registers and the Special Function Register Bits RP1 (STATUS<6>) and RP0 (STATUS<5>) are the bank select bits Each bank extends up to 7Fh (128 bytes). The lower locations of each bank are reserved for the Special Function Registers. Above the Special Function Registers are General Purpose Registers 42 21

General Purpose Register File (1) 43 General Purpose Register File (2) 44 22

Special Function Registers (1) Reference: 16F87X datasheet 45 Special Function Registers (2) 46 23

PCL and PCLATH The program counter (PC) is 13 bits wide. The low byte comes from the PCL register, which is a readable and writable register. The upper bits (PC<12:8>) are not readable, but are indirectly writable through the PCLATH register. On any RESET, the upper bits of the PC will be cleared. Loading of PC in different situations: how the PC is loaded on a write to PCL (PCLATH<4:0> PCH). how the PC is loaded during a CALL or GOTO instruction (PCLATH<4:3> PCH) 47 Stack The PIC16F87X family has an 8 level deep x 13 bit wide hardware stack. The stack space is not part of either program or data space and the stack pointer is not readable or writable. The PC is PUSHed onto the stack when a CALL instruction is executed, or an interrupt causes a branch. The stack is POPed in the event of a RETURN,RETLW or a RETFIE instruction execution. PCLATH is not affected by a PUSH or POP operation. 48 24

Program Memory Paging (1) All PIC16F87X devices are capable of addressing a continuous 8K word block of program memory. The CALL and GOTO instructions provide only 11 bits of address to allow branching within any 2K program memory page. When doing a CALL or GOTO instruction, the upper 2 bits of the address are provided by PCLATH<4:3>. When doing a CALL or GOTO instruction, the user must ensure that the page select bits are programmed so that the desired program memory page is addressed. If a return from a CALL instruction (or interrupt) is executed, the entire 13 bit PC is popped off the stack. The contents of the PCLATH register are unchanged after a RETURN or RETFIE instruction 49 Example: Program Memory Paging (2) call of a subroutine in page 1 from page 0 assumes that PCLATH is saved and restored by the Interrupt Service Routine (if interrupts are used). ORG 0x500 BCF PCLATH,4 BSF PCLATH,3 CALL SUB1_P1 : ORG 0x900 SUB1_P1 ;Select page 1 (800h FFFh) ;Call subroutine in page 1 (800h FFFh) ;page 1 (800h FFFh) : ;called subroutine page 1 (800h FFFh) : RETURN ;return to Call subroutine ;in page 0 (000h 7FFh) 50 25

Indirect Addressing (1) Indirect addressing is possible by using the INDF register. Any instruction using the INDF register actually accesses the register pointed to by the File Select Register, FSR. Reading the INDF register itself, indirectly (FSR = 0 ) will read 00h. Writing to the INDF register indirectly results in a no operation (although status bits may be affected). An effective 9 bit address is obtained by concatenating the 8 bit FSR register and the IRP bit (STATUS<7>), 51 Indirect Addressing (2) 52 26

Indirect Addressing (3) A simple program to clear RAM locations 20h 2Fh using indirect addressing MOVLW 0x20 ;initialize pointer MOVWF FSR ;to RAM NEXT CLRF INDF ;clear INDF register FSR,F ;inc pointer BTFSS FSR,4 ;all done? GOTO NEXT ;no clear next CONTINUE : ;yes continue 53 IO Ports Port A Port B Port C Port D Port E Support 16F87X 16F87X 16F87X PIC16F874 /877 Width 6 bit 8 bit 8 bit 8 bit 3 bit PIC16F874 /877 Direction Bi directional Bi directional Bi directional Bi directional Bi directional Direction TRISA TRISB TRISC TRISD TRISE register Buffer TTL buffer / Schmitt trigger Multiplexed Analog input with TTL buffer / Schmitt trigger Serial Programming Schmitt trigger USART, PWM, I2C, SPI Schmitt trigger Parallel slave port Schmitt trigger Analog input 54 27

Port A Functions 55 Port B Functions 56 28

Port C Functions 57 Port D Functions 58 29

Port E Functions 59 Example: initializing Port A Initializing IO Ports BCF STATUS, RP0 ; BCF STATUS, RP1 ; Bank0 CLRF PORTA ; Initialize PORTA by ; clearing output ; data latches BSF STATUS, RP0 ; Select Bank 1 MOVLW 0x06 ; Configure all pins MOVWF ADCON1 MOVLW 0xCF MOVWF TRISA ; as digital inputs ; Value used to ; initialize data ; direction ; Set RA<3:0> as inputs ; RA<5:4> as outputs ; TRISA<7:6>are always ; read as 0. 60 30

PIC16CXXX Instruction Set (1) 61 PIC16CXXX Instruction Set (2) 62 31

Class Assignment 1. What are main differences between PIC16F84 and PIC16F87x? 2. What is the capacity of the FLASH memory of PIC16F877? 3. How many IO ports of PIC16F873 are there? 4. What are multiplexed with PORTC? 5. How to initialize Port C as output of PIC16F877? 6. What is the address of TRISB? 7. Is PCLATCH affected by PUSH and POP operation? 63 4. Apply PIC microcontroller for embedded systems PIC microcontrollers provide basic required hardware for an embedded system Processing unit Memory: Flash ROM, EEPROM Timer/interrupt Interface: Parallel I/O ADC PWM Serial communication: UART, SPI, I2C 64 32

4. Apply PIC microcontroller for embedded systems A simple security system using PIC microcontroller 65 PIC Applications LED Flasher Loop: bsf PORTB, 0 call Delay_500ms bcf PORTB, 0 call Delay_500ms goto Loop 66 33

PIC Applications Button Read Movlw 0 movwf TRISD, f bsf TRISD, 2 Loop: btfsc PORTD, 2 goto light goto No_light Light: bsf PORTB,0 goto Loop No_light: bcf PORTB,0 goto Loop 67 Group discussion Discuss about how to apply PIC microcontroller to your class project 68 34