Top Banner
Lecture 3 Programming the 8051 Microcontroller Dr. Konstantinos Tatas
121

Programming 8051 microcontroller

Apr 03, 2018

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 1/121

Lecture 3

Programming the 8051 Microcontroller 

Dr. Konstantinos Tatas

Page 2: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 2/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University

2

Registers A 

R0 

R1 

R3 

R4 

R2 

R5 

R7 

R6 

DPH  DPL 

PC 

DPTR  

PC 

Some 8051 16-bit Register  

Some 8-bit Registers of 

the 8051  A: Accumulator B: Used specially in MUL/DIVR0-R7: GPRs

Page 3: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 3/121

8051 Programming using

 Assembly

Page 4: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 4/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University

4

The MOV Instruction – Addressing

ModesMOV dest,source ; dest = source

MOV A,#72H ;A=72H

MOV A, #‟r‟  ;A=„r‟ OR 72H 

MOV R4,#62H ;R4=62H

MOV B,0F9H ;B=the content of F9‟th byte of RAM 

MOV DPTR,#7634H

MOV DPL,#34H

MOV DPH,#76H

MOV P1,A ;mov A to port 1

Note 1:MOV A,#72H ≠ MOV A,72H

After instruction “MOV  A,72H ” the content of 72‟th byte of RAM will replace in Accumulator.

8086  8051

MOV AL,72H MOV A,#72H

MOV AL,‟r‟ MOV A,#‟r‟ 

MOV BX,72H

MOV AL,[BX] MOV A,72H

Note 2:MOV A,R3 ≡ MOV A,3

Page 5: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 5/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University

5

Arithmetic Instructions

ADD A, Source ;A=A+SOURCE

ADD A,#6 ;A=A+6

ADD A,R6 ;A=A+R6

ADD A,6 ;A=A+[6] or A=A+R6

 ADD A,0F3H ;A=A+[0F3H]

Page 6: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 6/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University

6

Set and Clear Instructions

SETB bit ; bit=1

CLR bit ; bit=0

SETB C ; CY=1

SETB P0.0 ;bit 0 from port 0 =1

SETB P3.7 ;bit 7 from port 3 =1

SETB ACC.2 ;bit 2 from ACCUMULATOR =1SETB 05 ;set high D5 of RAM loc. 20h

Note:

CLR instruction is as same as SETB

i.e:CLR C ;CY=0

But following instruction is only for CLR:

CLR A ;A=0

Page 7: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 7/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University

7

SUBB A,source ;A=A-source-CY 

SETB C ;CY=1

SUBB A,R5 ;A=A-R5-1

ADC A,source ;A=A+source+CY 

SETB C ;CY=1

ADC A,R5 ;A=A+R5+1

Page 8: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 8/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University

8

DEC byte ;byte=byte-1

INC byte ;byte=byte+1 

INC R7DEC A

DEC 40H ; [40]=[40]-1

CPL A ;1’s complement Example:

MOV A,#55H ;A=01010101 BL01: CPL A

MOV P1,A

ACALL DELAY

SJMP L01

NOP & RET & RETI 

All are like 8086 instructions.

 CALL

Page 9: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 9/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University

9

Logic Instructions

ANL byte/bit

ORL byte/bit

XRL byte

EXAMPLE:

MOV R5,#89H

ANL R5,#08H

Page 10: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 10/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University

10

Rotate Instructions

• RR A Accumulator rotate right 

• RL A Accumulator Rotate left  

• RRC A Accumulator Rotate right throughthe carry .

• RLC A Accumulator Rotate left throughthe carry .

Page 11: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 11/121

Page 12: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 12/121

Page 13: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 13/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University

13

• RAM memory space allocation in the 8051

7FH

30H

2FH

20H

1FH

17H10H

0FH

07H

08H

18H

00HRegister Bank 0

(Stack) Register Bank 1

Register Bank 2

Register Bank 3

Bit-Addressable RAM

Scratch pad RAM

Page 14: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 14/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University

14

8051 Flag bits and the PSW register  • PSW Register 

CY AC F0 RS1 OVRS0 P--

CYPSW.7Carry flag 

ACPSW.6 Auxiliary carry flag 

--PSW.5 Available to the user for general purpose

RS1PSW.4 Register Bank selector bit 1

RS0PSW.3 Register Bank selector bit 0

OVPSW.2Overflow flag 

--PSW.1User define bit PPSW.0 Parity flag Set/Reset odd/even parity

RS1 RS0 Register Bank Address 

0 0 0 00H-07H 

0 1 1 08H-0FH 

1 0 2 10H-17H 

1 1 3 18H-1FH 

Page 15: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 15/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University

15

Instructions that Affect Flag Bits:

Note: X can be 0 or 1

Page 16: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 16/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University

16

Example:MOV A,#38H

 ADD A,#2FH

38 00111000+2F +00101111---- -------------- 67 01100111

CY=0 AC=1 P=1

Example:MOV A,#88H

 ADD A,#93H

88 10001000 +93 +10010011 

---- -------------- 11B 00011011  

CY=1 AC=0 P=0 

Example:MOV A,#9CH

 ADD A,#64H

9C 10011100 +64 +01100100 

---- -------------- 100 00000000  

CY=1 AC=1 P=0 

Page 17: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 17/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University

17

Addressing Modes

• Immediate

• Register 

• Direct• Register Indirect

• Indexed

Page 18: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 18/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University 18

Immediate Addressing Mode

MOV A,#65H

MOV A,#‟A‟ 

MOV R6,#65H

MOV DPTR,#2343H

MOV P1,#65H

Example :

 Num EQU 30

… 

MOV R0,Num

MOV DPTR,#data1… 

ORG 100H

data1: db “Example” 

Page 19: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 19/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University 19

Example

• Write the decimal value 4 on the SSD inthe following figure. Switch the decimalpoint off.

Page 20: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 20/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University 20

Register Addressing Mode

MOV Rn, A ;n=0,..,7

ADD A, Rn

MOV DPL, R6

MOV DPTR, A

MOV Rm, Rn

Page 21: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 21/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University 21

Direct Addressing Mode

Although the entire of 128 bytes of RAM can be accessed using directaddressing mode, it is most often used to access RAM loc. 30 – 7FH.

MOV R0, 40H

MOV 56H, A

MOV A, 4 ; ≡ MOV A, R 4MOV 6, 2 ; copy R2 to R6

; MOV R6,R2 is invalid !

SFR register and their address

MOV 0E0H, #66H ; ≡ MOV A,#66H

MOV 0F0H, R2 ; ≡ MOV B, R 2

MOV 80H,A ; ≡ MOV P1,A

Page 22: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 22/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University 22

Register Indirect Addressing Mode• In this mode, register is used as a pointer to the data.

MOV A,@Ri ; move content of RAM loc.Where address is held by Ri into A

( i=0 or 1 )MOV @R1,B

In other word, the content of register R0 or R1 is sources or target in MOV, ADD and SUBBinsructions.

Example:

Write a program to copy a block of 10 bytes from RAM location sterting at 37h to RAM

location starting at 59h.

Solution:

MOV R0,37h ; source pointer 

MOV R1,59h ; dest pointer 

MOV R2,10 ; counter 

L1: MOV A,@R0

MOV @R1,A

INC R0

INC R1

DJNZ R2,L1

jump 

Page 23: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 23/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University 23

Indexed Addressing Mode And On-Chip

ROM Access

• This mode is widely used in accessing data elementsof look-up table entries located in the program (code)space ROM at the 8051

MOVC A,@A+DPTR 

A= content of address A +DPTR from ROM

Note: 

Because the data elements are stored in the program(code ) space ROM of the 8051, it uses the instructionMOVC instead of MOV. The “C” means code. 

Page 24: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 24/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University 24

• Example:

Assuming that ROM space starting at 250h contains “Hello.”, write a program to transfer the bytes into RAM locations starting at 40h.

Solution:

ORG 0

MOV DPTR,#MYDATAMOV R0,#40H

L1: CLR A

MOVC A,@A+DPTR 

JZ L2

MOV @R0,A

INC DPTR INC R0

SJMP L1

L2: SJMP L2

;-------------------------------------

ORG 250H

MYDATA: DB “Hello”,0

END

Notice the NULL character ,0, as end of string and how we use the JZ instruction todetect that.

Page 25: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 25/121

Page 26: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 26/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University 26

External Memory Addressing

• MOVX A, @R1 ; A [R1] (in externalmemory)

• MOVX A, @DPTR

• MOVX @DPTR, A

Page 27: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 27/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University 27

16-bit, BCD and Signed

Arithmetic in 8051Exercise:

Write a program to add n 16-bit number. Get n

from port 1. And sent Sum to SSDa) in hex

 b) in decimal

Write a program to subtract P1 from P0 and sendresult to LCD

(Assume that “ACAL DISP” display A to SSD ) 

Page 28: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 28/121

Page 29: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 29/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University 29

Stack in the 8051 

• The register used to accessthe stack is called SP (stack 

 pointer) register.

• The stack pointer in the8051 is only 8 bits wide,which means that it can takevalue 00 to FFH. When8051 powered up, the SPregister contains value 07.

7FH

30H

2FH

20H

1FH

17H

10H

0FH

07H

08H

18H

00HRegister Bank 0

(Stack) Register Bank 1

Register Bank 2

Register Bank 3

Bit-Addressable RAM

Scratch pad RAM

Page 30: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 30/121

Page 31: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 31/121

Page 32: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 32/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University 32

How to use the stack

• You can use the stack as temporary storage for variables when calling functions

RLC A ;you can only rotate A

Call functionDIV AB ; A has the wrong value!!!!!

… 

function: MOV A, #5 ;values are for examplesake

MOV B, #10MUL AB ;you can only multiply on A

RET

Page 33: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 33/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University 33

Example (correct)

RLC A ;you can only rotate APUSH A ;saving A and B on the stack before

PUSH B ;calling function

Call function

POP B ;restoring B

POP A ;and A (POP in reverse order)DIV AB ; A has the wrong value!!!!!

… 

function: MOV A, #5 ;values are for example sake

MOV B, #10

MUL AB ;you can only multiply on ARET

Page 34: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 34/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University 34

Saving PSW• The Program Status Word registers contains flags that are often

important for correct program flow• You can push PSW on the stack before calling a function

ADD A, R0

PUSH PSW

PUSH A ;saving A and R0 on the stack before

PUSH R0 ;calling functionCall function

POP R0 ;restoring R0

POP A ;and A (POP in reverse order)

POP PSW

JC loop ;If this means the carry from the;function then don’t push PSW 

… 

function: MOV A, #5 ;values are for example sake

ADD A, R2 ;the flags are set according to ADD result

RET

Page 35: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 35/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University 35

LOOP and JUMP Instructions

DJNZ: 

Write a program to clear ACC, then

add 3 to the accumulator ten times

Solution:

MOV A,#0;

MOV R2,#10

 AGAIN: ADD A,#03DJNZ R2,AGAING ;repeat until R2=0 (10 times)

MOV R5,A

Page 36: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 36/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University 36

• Other conditional jumps :

JZ  Jump if A=0 

JNZ  Jump if A/=0 

DJNZ  Decrement and jump if A/=0 

CJNE A,byte  Jump if A/=byte 

CJNE reg,#data  Jump if byte/=#data 

JC  Jump if CY=1 

JNC  Jump if CY=0 

JB  Jump if bit=1 

JNB  Jump if bit=0 

JBC  Jump if bit=1 and clear bit 

Page 37: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 37/121

Page 38: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 38/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University 38

CJNE , JNC

Exercise:

Write a program that compare R0,R1.If R0>R1 then send 1 to port 2,

else if R0<R1 then send 0FFh to port 2,

else send 0 to port 2.

Page 39: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 39/121

Page 40: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 40/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University 40

• ACALL (absolute call)

ACALL is 2-byte instruction in contrast to LCALL,which is 13 bytes. Since ACALL is a 2-byte instruction,the target address of the subroutine must be within 2K 

 bytes address because only 11 bits of the 2 bytes are usedfor the address. There is no difference between ACALLand LCALL in terms of saving the program counter onthe stack or the function of the RET instruction. The onlydifference is that the target address for LCALL can be

anywhere within the 64K byte address space of the 8051while the target address of ACALL must be within a 2K-

 byte range.

Page 41: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 41/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University 41

Example

A  B  R5  R7  Address  Data 

ORG 0H

VAL1 EQU 05H

MOV R5,#25H

LOOP: MOV R7,#VAL1

MOV A,#0ADD A,R5

ADD A,#12H

RRC A

DJNZ A, LOOP

SETB ACC.3 

CLR A 

CJNE A, #0, LOOP

HERE: SJMP HERE

END 

Page 42: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 42/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University42

I/O Port Programming

 Port 1( pins 1-8) 

• Port 1 is denoted by P1.

 –  P1.0 ~ P1.7

• We use P1 as examples to show the operations on ports.

 –  P1 as an output port (i.e., write CPU data to the external pin)

 –  P1 as an input port (i.e., read pin data into CPU bus)

Page 43: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 43/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University43

A Pin of Port 1

8051 IC

D  Q

Clk   Q

Vcc

Load(L1)

Read latch

Read pin

Write to latch

Internal CPU

 bus

M1

P1.X pin

P1.X

TB1

TB2

P0.x

Page 44: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 44/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University

44

Hardware Structure of I/O Pin

• Each pin of I/O ports

 –  Internal CPU bus:communicate with CPU

 –  A D latch store the value of this pin

• D latch is controlled by “Write to latch” 

 –  Write to latch=1:write data into the D latch –  2 Tri-state buffer : 

• TB1: controlled by “Read pin” 

 –  Read pin=1:really read the data present at the pin

• TB2: controlled by “Read latch” 

 –  Read latch=1:read value from internal latch

 –  A transistor M1 gate

• Gate=0: open

• Gate=1: close

Page 45: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 45/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University

45

Tri-state Buffer 

Output Input

Tri-state control

(active high)

L H Low

Highimpedance

(open-circuit)HH

L H

 

Page 46: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 46/121

Page 47: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 47/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University

47

Writing “0” to Output Pin P1.X 

D  Q

Clk   Q

Vcc

Load(L1)

Read latch

Read pin

Write to latch

Internal CPU

 bus

M1

P1.X pin

P1.X

8051 IC

2. output pin is

ground1. write a 0 to the pin

0

1 output 0

TB1

TB2

Page 48: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 48/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University

48

Port 1 as Output(Write to a Port) 

• Send data to Port 1: 

MOV A,#55H

BACK: MOV P1,A

ACALL DELAY

CPL A

SJMP BACK 

 –  Let P1 toggle.

 –  You can write to P1 directly.

Page 49: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 49/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University

49

Reading Input v.s. Port Latch

• When reading ports, there are two possibilities:  –  Read the status of the input pin.(from external pin value) 

• MOV A, PX

• JNB P2.1, TARGET ; jump if P2.1 is not set

• JB P2.1, TARGET ; jump if P2.1 is set

• Figures C-11, C-12

 –  Read the internal latch of the output port.

• ANL P1, A ; P1 ← P1 AND A 

• ORL P1, A ; P1 ← P1 OR A 

• INC P1 ; increase P1• Figure C-17

• Table C-6 Read-Modify-Write Instruction (or Table 8-5)

• See Section 8.3

Page 50: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 50/121

Page 51: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 51/121

Page 52: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 52/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University

52

Port 1 as Input(Read from Port) 

• In order to make P1 an input, the port must be programmed by writing 1 to

all the bit.

MOV A,#0FFH ;A=11111111B

MOV P1,A ;make P1 an input portBACK: MOV A,P1 ;get data from P0

MOV P2,A ;send data to P2

SJMP BACK 

 –  To be an input port, P0, P1, P2 and P3 have similar methods.

Page 53: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 53/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University

53

Instructions For Reading an Input Port

Mnemonics Examples Description

MOV A,PX MOV A,P2

Bring into A the data at P2

 pins

JNB PX.Y,.. JNB P2.1,TARGET Jump if pin P2.1 is low

JB PX.Y,.. JB P1.3,TARGET Jump if pin P1.3 is high

MOV C,PX.Y MOV C,P2.4Copy status of pin P2.4 to

CY

• Following are instructions for reading external pins of ports:

Page 54: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 54/121

Page 55: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 55/121

Page 56: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 56/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University

56

Read-modify-write Feature

• Read-modify-write Instructions

 –  Table C-6

• This features combines 3 actions in a single instruction: 

1. CPU reads the latch of the port2. CPU perform the operation

3. Modifying the latch

4. Writing to the pin

 –  Note that 8 pins of P1 work independently.

Page 57: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 57/121

Page 58: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 58/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University

58

Read-Modify-Write Instructions

ExampleMnemonics

SETB P1.4SETB PX.Y

CLR P1.3CLR PX.Y

MOV P1.2,CMOV PX.Y,C

DJNZ P1,TARGETDJNZ PX, TARGET

INC P1INC

CPL P1.2CPL

JBC P1.1, TARGETJBC PX.Y, TARGET

XRL P1,AXRL

ORL P1,AORL

 ANL P1,A ANL

DEC P1DEC

Page 59: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 59/121

Page 60: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 60/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University

60

Other Pins

• P1, P2, and P3 have internal pull-up resisters.

 –  P1, P2, and P3 are not open drain.

• P0 has no internal pull-up resistors and does not connects to

Vcc inside the 8051.

 –  P0 is open drain.

 –  Compare the figures of P1.X and P0.X. 

• However, for a programmer, it is the same to program P0, P1,

P2 and P3.

• All the ports upon RESET are configured as output.

Page 61: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 61/121

Page 62: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 62/121

P 0 i h P ll U R i

Page 63: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 63/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University

63

Port 0 with Pull-Up Resistors

P0.0

P0.1P0.2P0.3P0.4P0.5P0.6

P0.7

DS5000

8751

8951

Vcc10 K 

P  or  t  

0

Page 64: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 64/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University

64

Dual Role of Port 0

• When connecting an 8051/8031 to an external memory, the 8051

uses ports to send addresses and read instructions.

 –  8031 is capable of accessing 64K bytes of external memory.

 –  16-bit address:P0 provides both address A0-A7, P2 provides

address A8-A15. –  Also, P0 provides data lines D0-D7.

• When P0 is used for address/data multiplexing, it is connected to the

74LS373 to latch the address.

 –  There is no need for external pull-up resistors as shown inChapter 14.

Page 65: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 65/121

 ACOE343 - Embedded Real-Time Processor Systems -Frederick University

65

74LS373

D

74LS373ALE

P0.0

P0.7

PSEN

A0

A7

D0

D7

P2.0

P2.7

A8

A15

OE

OC

EA

G

8051ROM

Page 66: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 66/121

Page 67: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 67/121

Page 68: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 68/121

Page 69: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 69/121

Page 70: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 70/121

Page 71: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 71/121

Page 72: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 72/121

Page 73: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 73/121

 ACOE343 - Embedded Real-Time Processor Systems -

Frederick University

73

Generating longer delays

• Each register is 8 bits long, so it canincrement 256 times before overflowing

• For larger delays, or when interrupts are

required 8051 uses two timers

Page 74: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 74/121

Page 75: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 75/121

Page 76: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 76/121

Page 77: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 77/121

Page 78: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 78/121

Ti C l R i (TCON)

Page 79: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 79/121

 ACOE343 - Embedded Real-Time Processor Systems -

Frederick University

79

Timer Control Register (TCON)• Bit 7 (TF1) 8FH : Timer 1 overflow flag; set by hardware

upon overflow, cleared by software• Bit 6 (TR1) 8EH: Timer 1 run-control bit; manipulated by

software - setting starts timer 1, resetting stops timer 1

• Bit 5 (TF0) 8DH: Timer 0 overflow flag; set by hardware

upon overflow, cleared by software.• Bit 4 (TR0) 8CH: Timer 0 run-control bit; manipulated by

software - setting starts timer 0, resetting stops timer 0

• Bit 3 (IE1) 8BH: External 1 Interrupt flag bit

• Bit 2 (IT1) 8AH:• Bit 1 (IE0) 89H: External 0 Interrupt flag bit

• Bit 0 (IT0) 88H:

I iti li i d t i ti

Page 80: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 80/121

 ACOE343 - Embedded Real-Time Processor Systems -

Frederick University

80

Initializing and stopping timers

• MOV TMOD, #16H ;initialization

• SETB TR0 ;starting timersSETB TR1

• CLR TR0 ; stop timer 0CLR TR1 ; stop timer 1

• MOV R7, TH0 ; reading timers

• MOV R6, TL0

Page 81: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 81/121

G ti d l i th ti

Page 82: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 82/121

 ACOE343 - Embedded Real-Time Processor Systems -

Frederick University

82

Generating delays using the timers• To generate a 50 ms (or 50,000 us) delay we start the

timer counting from 15,536. Then, 50,000 steps later itwill overflow. Since each step is 1 us (the timer's clock is1/12 the system frequency) the delay is 50,000 us. 0

MOV TMOD, #10H; set up timer 1 as 16-bit interval timer CLR TR1 ; stop timer 1 (in case it was started in some

other subroutine)MOV TH1, #3CHMOV TL1, #0B0H ; load 15,536 (3CB0H) into timer 1SETB TR1 ; start timer 1JNB TF1, $; repeat this line while timer 1 overflow flag is

not setCLR TF1; timer 1 overflow flag is set by hardware ontransition from FFFFH - the flag must be reset bysoftwareCLR TR1 ; stop timer 1

G ti l d l

Page 83: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 83/121

 ACOE343 - Embedded Real-Time Processor Systems -

Frederick University

83

Generating long delays• If the microcontroller has a system clock frequency of 12 MHz then the longest delay

we can get from either of the timers is 65,536 usec.• To generate delays longer than this, we need to write a subroutine to generate a

delay of (for example) 50 ms and then call that subroutine a specific number of times.• ...

MOV TMOD, #10H; set up timer 1 as 16-bit interval timer 

• fiftyMsDelay:CLR TR1 ; stop timer 1 (in case it was started in some other subroutine)MOV TH1, #3CH

MOV TL1, #0B0H ; load 15,536 (3CB0H) into timer 1SETB TR1 ; start timer 1JNB TF1, $; repeat this line while timer 1 overflow flag is not setCLR TF1; timer 1 overflow flag is set by hardware on transition from FFFFH - the flagmust be reset by softwareCLR TR1 ; stop timer 1RET

• oneSecDelay:PUSH PSW

PUSH AR0 ; save processor statusMOV R0, #20 ; move 20 (in decimal) into R0• loop:CALL fiftyMsDelay ; call the 50 ms delay

DJNZ R0, loop ; 20 times - resulting in a 1 second delayPOP AR0POP PSW ; retrieve processor statusRET

Page 84: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 84/121

Page 85: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 85/121

Page 86: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 86/121

Page 87: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 87/121

I t t S i R ti

Page 88: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 88/121

 ACOE343 - Embedded Real-Time Processor Systems -

Frederick University

88

Interrupt Service Routines• ORG 0

JMP main

• ORG 0003H ; external interrupt 0 vector …. ; interrupt handler code for external interrupt 0RETI

ORG 0013H ; external interrupt 1 vector …. ;interrupt handler code for external interrupt 1RETI

ORG 0030H ; main programmain:SETB IT0 ; set external interrupt 0 as edge activated

SETB IT1 ; set external interrupt 1 as edge activatedSETB EX0 ; enable external interrupt 0SETB EX1 ; enable external interrupt 1SETB EA ; global interrupt enable… 

Page 89: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 89/121

Page 90: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 90/121

Page 91: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 91/121

Keil C keywords

Page 92: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 92/121

 ACOE343 - Embedded Real-Time Processor Systems -

Frederick University

92

Keil C keywords• data/idata: 

Description: The variable will be stored in internal data memory of controller.

example:unsigned char data x; //or  unsigned char idata y;

• bdata: Description: The variable will be stored in bit addressable memory of controller.

example:• unsigned char bdata x;

 //each bit of the variable x can be accessed as follows x ^ 1 = 1; //1st bit of variable x is set  x ^ 0 = 0; //0th bit of variable x is cleared  

• xdata: Description: The variable will be stored in external RAM memory of controller.

example:unsigned char xdata x;

Page 93: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 93/121

Page 94: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 94/121

Page 95: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 95/121

Page 96: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 96/121

C and Assembly together

Page 97: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 97/121

 ACOE343 - Embedded Real-Time Processor Systems -

Frederick University

97

C and Assembly together 

• extern unsigned long add(unsigned long, unsigned long);

void main(){unsigned long a;a = add(10,30); //calling Assembly function

while(1);}

Page 98: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 98/121

Page 99: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 99/121

Example 1

Page 100: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 100/121

 ACOE343 - Embedded Real-Time Processor Systems -

Frederick University

100

Example 1

• Generate a 5V peek-to-peek 200μs periodsquare waveform on the DAC output

Page 101: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 101/121

Page 102: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 102/121

Page 103: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 103/121

Function return values

Page 104: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 104/121

 ACOE343 - Embedded Real-Time Processor Systems -

Frederick University

104

Function return values

Page 105: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 105/121

Page 106: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 106/121

Data Converters

Page 107: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 107/121

•  Analog to Digital Converters(ADC) – Convert an analog quantity

(voltage, current) into adigital code

• Digital to Analog Converters

(DAC) – Convert a digital code into

an analog quantity (voltage,

current)

Page 108: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 108/121

Temperature Recording by a Digital System

Page 109: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 109/121

 ACOE343 - Embedded Real-Time Processor Systems -

Frederick University

109

Temperature Recording by a Digital System 

Sampling &quantization

Temperature

(ºC)

Time

Temperature

(ºC)

Time

Page 110: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 110/121

Page 111: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 111/121

Page 112: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 112/121

Page 113: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 113/121

Page 114: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 114/121

Page 115: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 115/121

Characteristics of Data

Page 116: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 116/121

 ACOE343 - Embedded Real-Time Processor Systems -

Frederick University

116

Converters (Cont…) 5. Resolution

 – The analog voltage (or current) that corresponds to a change of 1LSB in the

binary code – It is affected by the number of bits of the converter and the Full Scale voltage

(VFS)

 – For example if the full-scale voltage of an 8-bit D/A converter is 2.55V the theresolution is:

VFS/(2N-1) = 2.55 /(28-1) 2.55/255 = 0.01 V/LSB = 10mV/LSB

6. Conversion Time

 – The time from the moment that a “Start of Conversion” signal is applied to an A/D

converter until the corresponding digital value appears on the data lines of theconverter.

 – For some types of A/D converters this time is predefined, while for others thistime can vary according to the value of the analog signal.

0.1Vo

Vo

7. Settling Time

 – The time needed by the analog signal atthe output of a D/A converter to be within10% of the nominal value.

Page 117: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 117/121

ADC TYPES

Page 118: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 118/121

 ACOE343 - Embedded Real-Time Processor Systems -

Frederick University

118

 ADC TYPES• Direct Conversion

 – Fast

 – Low resolution

• Successive approximation

 – Low-cost – Slow

 – Not constant conversion delay

• Sigma-delta

 – High resolution, – low-cost,

 – high accuracy

Interfacing with Data Converters

Page 119: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 119/121

 ACOE343 - Embedded Real-Time Processor Systems -

Frederick University

119

• Microprocessor compatible data converters are attached onthe microprocessor’s bus as standard I/O devices.

DAC

CS

Vout

D7

WR

D6D5D4D3D2D1D0 Vref 

V(+)

V(-)

   8   0   8   8   S  y  s   t  e  m

D7D6D5D4D3

D2D1D0

 A19

 A0

WR

IO/M'

RD

 A11 A10 A9 A8 A7 A6

 A5 A4

Vout

      1      0      K

      1      0      K

+5V

Page 120: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 120/121

D/A Converters exampleWrite a program to generate the waveform, shown below, at the output of

Page 121: Programming 8051 microcontroller

7/28/2019 Programming 8051 microcontroller

http://slidepdf.com/reader/full/programming-8051-microcontroller 121/121

0

4

3

2

1

V (volts)

t (msec )1 5 6 7 8

Write a program to generate the waveform, shown below, at the output of 

an 8-bit digital to analog converter. The period of the waveform should be

approximately 8 ms. Assume that a time delay function with a 1 μs

resolution is available. The full scale output of the converter is 5.12 V andthe address of the DAC is P0, while the WR signal is in P1.1.

C o

C o

Co

Assuming that an 8-bit A/D converter is used to interface a temperature sensor measuring temperature values in the temperature range 0 - 51.2 

, specify: The resolution in of the system in

The digital output word for a temperature of 32 5