Introduction to uc & Embedded Systems

Similar documents
8051 Addressing Mode and Instruction Set

Lecture Instruction Set

Lecture 2. Silicon Labs C8051F020 System Overview

Microcontroller Intel [Instruction Set]

Q. Classify the instruction set of 8051 and list out the instructions in each type.

Dodatak. Skup instrukcija

Microprocessors 1. The 8051 Instruction Set. Microprocessors 1 1. Msc. Ivan A. Escobar Broitman

Instruction Set Of 8051

Embedded Controller Programming

DR bit RISC Microcontroller. Instructions set details ver 3.10

Programming of 8085 microprocessor and 8051 micro controller Study material

Architecture & Instruction set of 8085 Microprocessor and 8051 Micro Controller

MASSEY UNIVERSITY PALMERSTON NORTH CAMPUS

8051 Overview and Instruction Set

Dragonchip. Instruction Set Manual

INSTRUCCIONES ARITMETICAS ERROR! MARCADOR NO DEFINIDO.

SN8F5000 Family Instruction Set

UNIT-III ASSEMBLY LANGUAGE PROGRAMMING. The CPU can access data in various ways, which are called addressing modes

Digital Blocks Semiconductor IP

Digital Blocks Semiconductor IP

80C51 family programmer s guide and instruction set. 80C51 Family. PROGRAMMER S GUIDE AND INSTRUCTION SET Memory Organization. Philips Semiconductors

Memory organization Programming model - Program status word - register banks - Addressing modes - instruction set Programming examples.

Digital Blocks Semiconductor IP

UNIT 2 THE 8051 INSTRUCTION SET AND PROGRAMMING

Microcontroller. Instruction set of 8051

Module Contents of the Module Hours COs

8051 Microcontroller Assembly Programming

AN789 PORTING CONSIDERATIONS FROM C8051F34X TO C8051F38X. 1. Introduction. 2. Relevant Documentation. 3. Common Features

UNIT THE 8051 INSTRUCTION SET AND PROGRAMMING

Chapter Family Microcontrollers Instruction Set

Application Brief D-005

8051 Microcontroller

Programming Book Microcontroller Kit. Rev 3.0 January, Wichit Sirichote

AL8051S 8-BIT MICROCONTROLLER Application Notes


Control Transfer Instructions Jump, Loop, and Call. ECE473/573 Microprocessor System Design, Dr. Shiue

C51 Family. Architectural Overview of the C51 Family. Summary

10/12-bit 100ksps ADC UART1. SMBus PCA. 8-bit 500ksps ADC PGA. Timer 2. Timer 3 VOLTAGE COMPARATORS HIGH-SPEED CONTROLLER CORE

AN198 I NTEGRATING SDCC 8051 TOOLS INTO THE SILICON LABS IDE. 4. Configure the Tool Chain Integration Dialog. 1. Introduction. 2.

8051 Instruction Set

Table 1. Code Memory Storage

UNIT MICROCONTROLLER AND ITS PROGRAMMING

8051 Core Specification

Assembly Language programming (3)

Table 1. Pin-Compatible MCUs. Package C8051F330/1/2/3/4/5 C8051F336/7/8/9 C8051F39x/37x QFN-20 (all are pin compatible) C8051F336-GM C8051F337-GM

MCS -51 Programmer s Guide and Instruction Set

8051 Microcontrollers

Legacy documentation refer to the Altium Wiki for current information. TSK51x MCU

TUTORIAL. Donal Heffernan University of Limerick May Tutorial D.Heffernan 2000,

AN368 DIFFERENCES BETWEEN THE C8051F34A AND THE C8051T62X AND C8051T32X DEVICE FAMILIES. 1. Introduction. 2. Key Points

Principle and Interface Techniques of Microcontroller

Y51 Microcontroller. Technical Manual

Introduction To MCS-51

Highlights. FP51 (FPGA based 1T 8051 core)

ET2640 Microprocessors

UNIT MICROCONTROLLER

Application Brief D-002

Question Bank Microprocessor and Microcontroller

C51 Family. C51 Family Programmer s Guide and Instruction Set. Summary

MASSEY UNIVERSITY PALMERSTON NORTH CAMPUS

CPEG300 Embedded System Design. Lecture 3 Memory

8051 Single Board Monitor Programming. Minmon - Yeralan & Ahluwalia. PaulMon1 & PaulMon2 - Paul Stoffregen

Legacy documentation refer to the Altium Wiki for current information. TSK52x MCU

Figure Programming model

MICROCONTROLLER UNIT 1

TUTORIAL Assembly Language programming (2)

ENE 334 Microprocessors

Assembly Language programming (2)

INTEGRATED CIRCUITS P89C669 USER MANUAL. Preliminary Supersedes data of 2003 Jul Sep 16

PRELIMINARY C8051F000/1/2/5/6/7 C8051F010/1/2/5/6/7. Mixed-Signal 32KB ISP FLASH MCU Family ANALOG PERIPHERALS DIGITAL I/O HIGH-SPEED CONTROLLER CORE

CHAPTER 3 JUMP, LOOP, AND CALL INSTRUCTIONS

Using the IDE and ANSI Display Commands. Student's name & ID (1): Partner's name & ID (2): Your Section number & TA's name

MODULE-1. Short Answer Questions

Core8051. Advanced v0.1

ELEG3924 Microprocessor

EE6502- MICROPROCESSOR AND MICROCONTROLLER

Lecture 5. EEE3410 Microcontroller Applications Department of Electrical Engineering Assembly Language Programming (1)

8051 Microcontrollers

Chapter 09. Programming in Assembly

EFM8 Universal Bee Family EFM8UB2 Reference Manual

EEE3410 Microcontroller Applications Department of Electrical Engineering Lecture 4 The 8051 Architecture

What Registers are available? Programming in Assembler. Assembler Programming - like early Basic. Assembler Data Movement Instructions

ELEG3923 Microprocessor Ch.3 Jump, Loop, and Call

8051 microcontrollers

VRS540-4kB Flash, 128B RAM, 25~40MHz, 8-Bit MCU

NAME as31 - An Intel 8031/8051 assembler. SYNOPSIS as31 [-h] [-l] [-s] [-v] [-Aarg] [-Ffmt] [-Ofile] infile.asm

IA8044/IA8344 Variants IA8044 4kB internal ROM with R0117 version 2.3 firmware, 192 byte internal RAM, 64kB external program and data space.

VRS550-8kB Flash, 256B RAM, 25~40MHz, 8-Bit MCU VRS560-16kB Flash, 256B RAM, 40MHz, 8-Bit MCU

The Microcontroller. Lecture Set 3. Major Microcontroller Families. Example Microcontroller Families Cont. Example Microcontroller Families

Lab-Report Microprocessors

VRS570 32K Flash, 1kB RAM, 25~40MHz, 8-Bit MCU VRS580 64K Flash, 1kB RAM, 25~40MHz, 8-Bit MCU

Microcontroller and Applications

8051 Programming using Assembly

Principle and Interface Techniques of Microcontroller

University of Toronto at Scarborough CSC CSSF - Microprocessor Systems

CPEG300 Embedded System Design. Lecture 6 Interrupt System


C8051F040/1/2/3/4/5/6/7

SUMMER 13 EXAMINATION

~: Simple Programs in 8051 assembly language :~

Transcription:

Introduction to uc & Embedded Systems Prepared by, Tamim Roshdy

Embedded Systems What is an embedded system? An embedded system is an application that contains at least one programmable computer (typically in the form of a microcontroller, a microprocessor or digital signal processor chip) and which is used by individuals who are, in the main, unaware that the system is computer-based.

Embedded Systems Examples

Embedded Systems Examples Mobile phone systems Automotive applications Consumer applications Aerospace applications Medical equipment Defense systems

Embedded Systems Specifications Do one specialized task -Efficiently -Cost effective Microcontroller based system + Software

Microcontroller vs. Microprocessors

Inside Microcontroller 8051 Introduced by Intel in 1981

8051 Registers A B R0 R1 R2 R3 R4 R5 R6 R7 D7 D6 D5 D4 D3 D2 D1 D0 8 bit Registers DPTR DPH DPL PC PC (Program counter) Some 8051 16 bit Registers Some 8 bit Registers of the 8051

8051 RAM Allocation

8051 Register Banks

Our Controller C8051F020

Our Controller C8051F020

Our Controller C8051F020 General Purpose RAM (80 bytes) Bit-addressable Area (16 bytes) Register Banks (8 bytes per bank; 4 banks)

Our Controller C8051F020

ToolStick Development Platform ToolStick Base Adapter USB Debug Interface to PC Can communicate with any Silicon Labs MCU ToolStick MCUniversity Daughter Card Development platform for C8051F020 MCU

ToolStick UniDC Hardware Overview Power LED Indicates 3.3V is available DIP Switches P4 LEDs P5[7..4] Push-button Switches P5[3..0] Prototype Area Reset Switch I/O Pins P0[7..2], P1, P2 Target MCU C8051F020 Analog I/O Pins Crystal 22.1184 MHz Potentiometer Linear output that sweeps from 0V to 3.3V

8051 Instruction Set 17 Introduction CIP-51 architecture and memory organization review Addressing Modes Register addressing Direct addressing Indirect addressing Immediate constant addressing Relative addressing Absolute addressing Long addressing Indexed addressing Instruction Types Arithmetic operations Logical operations Data transfer instructions Boolean variable instructions Program branching instructions

Special Function Registers F8 SPI0CN PCA0H PCA0CPH0 PCA0CPH1 PCA0CPH2 PCA0CPH3 PCA0CPH4 WDTCN F0 B SCON1 SBUF1 SADDR1 TL4 TH4 EIP1 EIP2 E8 ADC0CN PCA0L PCA0CPL0 PCA0CPL1 PCA0CPL2 PCA0CPL3 PCA0CPL4 RSTSRC E0 ACC XBR0 XBR1 XBR2 RCAP4L RCAP4H EIE1 EIE2 D8 PCA0CN PCA0MD PCA0M0 PCA0CPM1 PCA0CPM2 PCA0CPM 3 PCA0CPM 4 D0 PSW REF0CN DAC0L DAC0H DAC0CN DAC1L DAC1H DAC1CN C8 T2CON T4CON RCAP2L RCAP2H TL2 TH2 SMB0CR C0 SMB0CN SMB0ST A SMB0DAT SMB0ADR ADC0GTL ADC0GTH ADC0LTL ADC0LTH B8 IP SADEN0 AMX0CF AMX0SL ADC0CF P1MDIN ADC0L ADC0H B0 P3 OSCXCN OSCICN P74OUT FLSCL FLACL A8 IE SADDR0 ADC1CN ADC1CF AMX1SL P3IF SADEN1 EMI0CN A0 P2 EMI0TC EMI0CF P0MDOUT P1MDOUT P2MDOUT P3MDOUT 98 SCON0 SBUF0 SPI0CFG SPIODAT ADC1 SPI0CKR CPT0CN CPT1CN 90 P1 TMR3CN TMR3RLL TMR3RLH TMR3L TMR3H P7 88 TCON TMOD TL0 TL1 TH0 TH1 CKCON PSCTL 80 P0 SP DPL DPH P4 P5 P6 PCON 0(8) Bit addressable 1(9) 2(A) 3(B) 4(C) 5(D) 6(E) 7(F) 18

Addressing Modes Eight modes of addressing are available with the C8051F020 The different addressing modes determine how the operand byte is selected Addressing Modes Instruction Register MOV A, B Direct MOV 30H,A Indirect ADD A,@R0 Immediate Constant ADD A,#80H Relative* Absolute* Long* Indexed SJMP AHEAD AJMP BACK LJMP FAR_AHEAD MOVC A,@A+PC * Related to program branching instructions 19

Register Addressing The register addressing instruction involves information transfer between registers Example: MOV R0, A The instruction transfers the accumulator content into the R0 register of the currently selected register bank.the register bank (Bank 0, 1, 2 or 3) must be specified prior to this instruction. 20

Direct Addressing This mode allows you to specify the operand by giving its actual memory address (typically specified in hexadecimal format) or by giving its abbreviated name (e.g. P3) Note: Abbreviated SFR names are defined in the C8051F020.inc header file Example: MOV A, P3 ;Transfer the contents of ;Port 3 to the accumulator MOV A, 020H ;Transfer the contents of RAM ;location 20H to the accumulator 21

Indirect Addressing This mode uses a pointer register to hold the effective address of the operand Only registers R0, R1 and DPTR can be used as the pointer registers The R0 and R1 registers can hold an 8-bit address, whereas DPTR can hold a 16-bit address Examples: MOV @R0,A ;Store the content of ;accumulator into the memory ;location pointed to by ;register R0. R0 could have an ;8-bit address, such as 60H. 22 MOVX A,@DPTR ;Transfer the contents from ;the memory location ;pointed to by DPTR into the ;accumulator. DPTR could have a

Immediate Constant Addressing This mode of addressing uses either an 8- or 16-bit constant value as the source operand This constant is specified in the instruction, rather than in a register or a memory location The destination register should hold the same data size which is specified by the source operand Examples: ADD A,#030H ;Add 8-bit value of 30H to ;the accumulator register ;(which is an 8-bit register). MOV DPTR,#0FE00H ;Move 16-bit data constant ;FE00H into the 16-bit Data ;Pointer Register. 23

Relative Addressing This mode of addressing is used with some type of jump instructions, like SJMP (short jump) and conditional jumps like JNZ These instructions transfer control from one part of a program to another The destination address must be within -128 and +127 bytes from the current instruction address because an 8-bit offset is used (2 8 = 256) Example: GoBack: DEC A ;Decrement A JNZ GoBack ;If A is not zero, loop back 24

Absolute Addressing Two instructions associated with this mode of addressing are ACALL and AJMP instructions These are 2-byte instructions. The 11-bit absolute address, to which the control is transferred, is specified by a label. The upper 5 bits of the 16-bit PC (program counter) address are not modified. The lower 11 bits are loaded from this instruction. So, the branch address must be within the current 2K byte page of program memory (2 11 = 2048) Example: ACALL PORT_INIT ;PORT_INIT should be ;located within 2k bytes. PORT_INIT: MOV P0, #0FH ;PORT_INIT subroutine 25

Long Addressing This mode of addressing is used with the LCALL and LJMP instructions It is a 3-byte instruction and the last 2 bytes specify a 16-bit destination location where the program branches It allows use of the full 64 K code space (2 16 = 65536) The program will always branch to the same location no matter where the program was previously Example: LCALL TIMER_INIT ;TIMER_INIT address (16-bits ;long) is specified as the ;operand; In C, this will be a ;function call: Timer_Init(). TIMER_INIT: ORL TMOD,#01H ;TIMER_INIT subroutine 26

Indexed Addressing The Indexed addressing is useful when there is a need to retrieve data from a look-up table A 16-bit register (data pointer) holds the base address (or start address) and the accumulator holds an 8-bit offset or index value The sum of these two registers forms the effective address for a JMP or MOVC instruction Example: MOV A,#08H ;Offset from table start MOV DPTR,#01F00H ;Table start address MOVC A,@A+DPTR ;Gets target value from the table ;start address + offset and puts it ;in A. After the execution of the above instructions, the program will branch to address 1F08H (1F00H+08H) and transfer the data byte contained in that location (look-up table) into the accumulator. 27

Instruction Types The C8051F020 instructions are divided into five functional groups: Arithmetic operations Logical operations Data transfer operations Boolean variable operations Program branching operations 28

Arithmetic Operations With arithmetic instructions, the C8051F020 CPU has no special knowledge of the data format (e.g. signed binary, unsigned binary, binary coded decimal, ASCII, etc.) The appropriate status bits in the PSW are set when specific conditions are met, which allows the user software to manage the different data formats [@Ri] implies contents of memory location pointed to by R0 or R1 Rn refers to registers R0-R7 of the currently selected register bank 29

Logical Operations Logical instructions perform Boolean operations (AND, OR, XOR, and NOT) on data bytes on a bit-by-bit basis Examples: ANL A, #02H ;Mask bit 1 ORL TCON, A ;TCON=TCON-OR-A 30

Data Transfer Instructions Data transfer instructions can be used to transfer data between an internal RAM location and an SFR location without going through the accumulator It is also possible to transfer data between the internal and external RAM by using indirect addressing The upper 128 bytes of data RAM are accessed only by indirect addressing and the SFRs are accessed only by direct addressing Mnemonic MOV @Ri, direct MOV @Ri, #data MOV DPTR, #data 16 MOVC A,@A+DPTR MOVC A,@A+PC MOVX A,@Ri MOVX A,@DPTR MOVX @Ri, A MOVX @DPTR,A PUSH direct POP direct XCH A,Rn XCH A, direct XCH A, @Ri XCHD A,@Ri Description [@Ri] = [direct] [@Ri] = immediate data [DPTR] = immediate data A = Code byte from [@A+DPTR] A = Code byte from [@A+PC] A = Data byte from external ram [@Ri] A = Data byte from external ram [@DPTR] External[@Ri] = A External[@DPTR] = A Push into stack Pop from stack A = [Rn], [Rn] = A A = [direct], [direct] = A A = [@Rn], [@Rn] = A Exchange low order digits 31

Boolean Variable Instructions The C8051F020 processor can perform single bit operations The operations include set, clear, and, or and complement instructions Also included are bit level moves or conditional jump instructions All bit accesses use direct addressing Examples: SETB TR0 ;Start Timer0. POLL: JNB TR0, POLL ;Wait till timer overflows. Mnemonic CLR C Clear C CLR bit Clear direct bit SETB C SETB bit Set C Set direct bit CPL C Complement c Description CPL bit Complement direct bit ANL C,bit AND bit with C ANL C,/bit AND NOT bit with C ORL C,bit OR bit with C ORL C,/bit OR NOT bit with C MOV C,bit MOV bit to C MOV bit,c MOV C to bit JC rel Jump if C set JNC rel Jump if C not set JB bit,rel Jump if specified bit set JNB bit,rel Jump if specified bit not set JBC bit,rel if specified bit set then clear it and jump 32

Program Branching Instructions Program branching instructions are used to control the flow of program execution Some instructions provide decision making capabilities before transferring control to other parts of the program (conditional branching). Mnemonic Description ACALL addr11 Absolute subroutine call LCALL addr16 Long subroutine call RET Return from subroutine RETI Return from interrupt AJMP addr11 Absolute jump LJMP addr16 Long jump SJMP rel Short jump JMP @A+DPTR Jump indirect JZ rel Jump if A=0 JNZ rel Jump if A NOT=0 CJNE A,direct,rel CJNE A,#data,rel CJNE Rn,#data,rel Compare and Jump if Not Equal CJNE @Ri,#data,rel DJNZ Rn,rel DJNZ direct,rel Decrement and Jump if Not Zero NOP No Operation 33

MOV Instruction MOV destination, source ; copy source to dest. MOV A,#55H ;load value 55H into reg. A MOV R0,A ;copy contents of A into R0 ;(now A=R0=55H) MOV R1,A ;copy contents of A into R1 ;(now A=R0=R1=55H) MOV R2,A ;copy contents of A into R2 ;(now A=R0=R1=R2=55H) MOV R3,#95H ;load value 95H into R3 ;(now R3=95H) MOV A,R3 ;copy contents of R3 into A ;now A=R3=95H

ADD Instruction ADD A, source MOV A, #25H MOV R2,#34H ADD A,R2 ;ADD the source operand ;to the accumulator ;load 25H into A ;load 34H into R2 ;add R2 to accumulator ;(A = A + R2)

8051 Program Counter & ROM Space

Looping

Loop inside a Loop (Nested Loop)

Conditional Jump Example

Conditional Jump Example

Unconditional Jump Instructions All conditional jumps are short jumps Target address within -128 to +127 of PC LJMP (long jump): 3-byte instruction 2-byte target address: 0000 to FFFFH Original 8051 has only 4KB on-chip ROM SJMP (short jump): 2-byte instruction 1-byte relative address: -128 to +127

Call Instructions LCALL (long call): 3-byte instruction 2-byte address Target address within 64K-byte range ACALL (absolute call): 2-byte instruction 11-bit address Target address within 2K-byte range

CALL Instruction & Role of Stack

CALL Instruction & Role of Stack