8051 Microcontroller Architecture, Intro to Assembly Programming
EE4380 Fall 2002 Class 2
Pari vallal Kannan
Center for Integrated Circuits and Systems University of Texas at Dallas
Class 2: Objective
l l l l l l
8051 internal architecture Register Set Instruction Set Memory Map Intro to Stack, SFRs Assembly language programming
21-Jan-03
8051 Architecture
l
Programmers View
Register Set Instruction Set Memory map Pinout Timing characteristics Current / Voltage requirements
Hardware Designers View
21-Jan-03
Programmers View Register Set
l
Registers
A, B, R0 to R7 : 8 bit registers DPTR : [DPH:DPL] 16 bit register PC : Program Counter (Instruction Ptr) 16bits 4 sets of register bank R0-R7 Stack pointer SP PSW : Program Status Word (a.k.a Flags) SFR : Special Function Registers
l
Control the on-board peripherals
21-Jan-03
Assembly Absolute Basics
l l l l
Intel Assembly format
Operation destination source
; comment
Values are to be preceded by a # sign
#55, #32 etc #55H, #32H
Hex values are to be followed by H
If the first figure in a hex quantity is a letter (AF) then a 0 must precede it
#0FFH, #0C1H, #0D2H
21-Jan-03
Register Set Accumulator A, ACC
l l
Commonly used for moving data around, logic and arithmetic operations on 8bit data Examples
mov A, R0 push ACC mov A, #10 mov B, A mov A, 10 mov A, 0xFF mov A, 0FFH ;copy contents of R0 to A ;store A onto stack ;A 10 ;B A ;A mem(10) ;A 0xFF ;same as above
21-Jan-03
Register Set B Register
l l l
Commonly used as a temporary register, much like a 9th R register Used by two opcodes
mul AB, div AB
B register holds the second operand and will hold part of the result
Upper 8bits of the multiplication result Remainder in case of division
21-Jan-03
Register Set R0 to R7
l l l l l l
Set of 8 registers R0, R1, R7, each 8 bit wide Widely used as temporary registers Available in 4 banks (effectively 4x8 registers) Bank is chosen by setting RS1:RS0 bits in PSW Default bank (at power up) is the bank0 Examples
mov R0, A mov A, R0 mov R1, #45 ;R0 A ;A R0 ;R1 45
21-Jan-03
Registers - DPTR
l l l
16 bit register, called Data Pointer Used by commands that access external memory Also used for storing 16bit values
mov DPTR, #data16 movx A, @DPTR ; setup DPTR with 16bit ext address ; copy mem[DPTR] to A
DPTR is useful for string operations, look up table (LUT) operations
21-Jan-03
Registers - PC
l l l l
PC is the program counter Referred to as the Instruction Pointer (IP) in other microprocessors PC points to the next program instruction always After fetching an instruction (1 or multi byte), PC is automatically incremented to point to the next instruction
21-Jan-03
10
Registers - SP
l l
SP is the stack pointer SP points to the last used location of the stack
push will first increment SP and then copy data pop will first copy data and then decrement SP
l l l l
In 8051, stack grows upwards (from low mem to high mem) and can be in the internal RAM only On power-up, SP is at 07H Register banks 2,3,4 (08H to 1FH) is the default stack area Stack can be relocated by setting SP to the upper memory area in 30H to 7FH
mov SP, #32H
11
21-Jan-03
Registers - PSW
l l l l
Program Status Word is a bit addressable 8bit register that has all the flags CY - Carry Flag
Set whenever there is a carry in an arithmetic operation Carry from D3 to D4. Used for BCD operation P=1 if A has odd number of 1s Even parity Set if any arithmetic operation causes an overflow
AC - Aux. Carry Flag
P - Parity Flag
OV - Overflow Flag
21-Jan-03
12
Flags - Illustration
l
Addition example
mov A, #38 add A, #2F
38 + 2F --------67 --------CY = 0 AC = 1 P =1
0011 1000 0010 1111 --------------0110 0111 ---------------
21-Jan-03
13
Registers - SFRs
l
l l
Control the operation of on-board peripherals Special Function Registers at direct addresses 80H to FFH 8051 Clones may have additional SFRs All registers have an address
21-Jan-03
14
8051 Memory map
l l
Separate Code and Data memory Code Memory
Upto 64K long (some maybe onboard) (0x0000 to 0xFFFF) PSEN is the controlling signal Can store Program only (Read only) Upto 64K long (0x0000 to 0xFFFF) RD/WR are the controlling signals Can store data only (Read and Write) 128 bytes 0x00 to 0x7F (includes register banks) SFRs 0x80 to 0xFF (not all available)
Data Memory
Internal RAM
21-Jan-03
15
8051 - Memory Map
Memory Type IRAM Data Code SFRs Start 0x00 0x0000 0x0000 0x80 End 0x7F 0xFFFF 0xFFFF 0xFF RD, WR PSEN Signal Instruction mov A, xxH mov @Ri movx A, @DPTR movc A,@A+DPTR mov A, xxH
l l l
Internal ROM is vendor dependant On power-up PC starts at 0000H in ROM space Clones may have internal memory that may be used as both Code+Data
21-Jan-03
16
8051 Instruction Set
l
Data Transfer
Move/Copy data from one location to another mov, movc, movx, push, pop, xch, xchd Perform logic operations on data anl, orl, xrl, clr, cpl, rl, rlc, rr, rrc, swap Perform arithmetic operations on data add, addc, subb, inc, dec, mul, div Control the program flow (jumps, subroutine calls) jmp, ajmp, ljmp, sjmp, jc, jnc, jb, jnb, jbc, jz, jnz, acall, lcall, cjne, djnz, ret, reti
17
Logical
Arithmetic
Program control
NOP
21-Jan-03
8051 Instruction Set (contd.)
l
Read through the instruction set
Dont have to remember all the instructions Dont have to remember all possible cases
l l
Remember the types of instructions When writing code
Write down the operation needed in simple English Lookup the instruction set to see which (combo) of instructions will do the job
21-Jan-03
18
Assembly Opcode
l
Every assembly instruction translates to a unique binary Opcode
Can be 1, 2 or 3 bytes long 8051 Family Programmers Guide has a list 2 bytes, 1 cycles 0111 0100 data8 mov A, 0xAA 0111 0100 1010 10101 74 AA a10 a9 a8 1 0001 a7 a6 a5 a4 a3 a2 a1 a0 acall 0x557 101 1 0001 0101 0111 B1 57
Example1: mov A, #data
Example2: acall address11
21-Jan-03
19
Assembler Directives
l
Assembly statement structure
[label:] opcode [operands] [;comment] start: mov A, #D0H ;code starts here
Assembler directives Instruct assembler to do a special task
ORG xxxxH EQU
l
: origin, start assembling at xxxxH : define a constant : define byte, defines allocation of storage
count EQU 25 DATA1: DATA2: DB DB 28 hello world
DB
l l
END
: end of assembly file
20
21-Jan-03
Assembly Design Flow
l l
Create the assembly source file test.asm Assemble the asm file
C:\> as51 test.asm Assembler produces error and code list in test.lst If no errors, assembler produces .obj file
l l l l
Link the .obj files to produce an .abs file Create hex file from the .abs file Most assemblers directly produce the .hex file Download the .hex file onto the board or burn it into an EPROM.
21-Jan-03
21
Assembly Example #1
l
Target 8051 dev system
Program to fill up the first 4 registers in the register bank with some numbers and find their sum
Std 8051 device 2K on-chip ROM running a monitor program 32K external RAM at address 0x0000 to 0x7FFF This RAM is both code and data First 0x30 locations in external RAM is dedicated for the Interrupt Vector Table (IVT)
Start:
clearA: Addup:
Done:
ORG 0x30 ;skip the IVT area mov R0, #10 mov R1, #0A5H mov R2, #1 mov R3, #0x20 mov A, #0 ;now A = 0 add A, R0 ;now A = A + R0 add A, R1 add A, R2 add A, R3 mov R4, A ;store sum in R4 mov DPTR, #7FFF movx @DPTR, A ;store in ext. mem sjmp done ;loop here forever END
21-Jan-03
22
Class 2 Review
l l l l l l l
What are the different views/models of a uP ? What are the registers available in the 8051 ? What are the functions of the 8051 registers ? What is stack, PC, SFR, PSW/Flags ? What is an instruction set ? What is a memory map ? Why is it needed ? What is an assembly language program ? How does it look ?
21-Jan-03
23