The 8051 microcontroller

29
8051 ASSEMBLY LANGUAGE PROGRAMMING BY AVINASH KUMAR MISHRA

description

8051 assembly language programming.

Transcript of The 8051 microcontroller

Page 1: The 8051  microcontroller

8051 ASSEMBLY LANGUAGE PROGRAMMING

BYAVINASH KUMAR MISHRA

Page 2: The 8051  microcontroller

INTRODUCTION TO PROGRAMMING:

CPU CAN ONLY WORK IN BINARY,IT CAN DO SO AT VERY FAST SPEED.FOR HUMAN IT IS QUITE TEDIOUS AND SLOW TO DEAL WITH 0’S & 1’S IN ORDER TO PROGRAM THE COMPUTER .A PROGRAM THAT CONSISTS OF 0s AND 1s IS CALLED MACHINE LANGUAGE.

ASSEMBLY LANGUAGE WERE DEVELOPED THAT

PROVIDED MNEUMONICS FOR THE MACHINE CODE INSTRUCTION ,PLUS OTHER FEATURES

Page 3: The 8051  microcontroller

.

THAT MADE PROGRAMMING FASTER AND LESS

PRONE TO ERROR. ASSEMBLY LANGUAGE PROG-

RAMS MUST BE TRANSLATED INTO MACHINE

CODE BY A PROGRAM CALLED ASSEMBLER. TO

PROGRAM IN ASSEMBLY LANGUAGE , THE PR-

OGRAMMER MUST KNOW ALL THE REGISTERS

OF THE CPU AND THE SIZE OF EACH ,AS WELL

AS OTHER DETAILS.

Page 4: The 8051  microcontroller

STRUCTURE OF ASSEMBLY LANGUAGE

AN ASSEMBLY LANGUAGE CONSISTS OF FOUR

FIELDS.“ [LABEL:] MNEUMONICS

[OPERAND] [;COMMENT] ” HERE BRACKETS INDICATE THAT A

FIELD ISOPTIONAL .

Page 5: The 8051  microcontroller

EXAMPLE

ORG OOH ;START AT LOCATION 0MOV R5,#25H ;LOAD 25H INTO R5MOV R6,#20H ; LOAD 20H INTO R6MOV A ,#00H ; LOAD 00H INTO AADD A ,R5 ; ADD CONTENTS OF R5

TO AADD A ,R6 ; ADD CONTENTS OF R6 TO

AADD A ,#12H ; NOW A=A+ 12HHERE: SJMP HERE ; STAY IN THIS LOOPEND

Page 6: The 8051  microcontroller

STEPS TO CREATE A PROGRAM :

ASSEMBLER PROGRAM

OH PROGRAM

Page 7: The 8051  microcontroller

PROGRAM COUNTER:

IT IS SPECIAL FUNCTION REGISTER

WHICH GENERALLY TELL OUR CONTR-

OLLER OR PROCESSOR ABOUT NEXT

EXECUTING PROCESS.

Page 8: The 8051  microcontroller

STACK POINTER:

IT IS THE SPECIAL FUNCTION REGISTER

WHICH IS USED TO STORE THE EXECUTED

PROGRAM INSIDE YOUR STACK MEMORY.

IT GENERALLY WORK ON THE PHENOMENA

LIFO( LAST IN FIRST OUT).

Page 9: The 8051  microcontroller

ASSEMBLER DIRECTIVES:

ORG(ORIGIN):USED TO INDICATE THE BEGINNING OF THE ADDERESS .

EQU(EQUATE): USED TO DEFINE A CONSTANT WITHOUT COPYING A MEMORY LOCATION.

END: IT INDICATES TO THE ASSEMBLER THE

END OF SOURCE(ASM ) FILE.

Page 10: The 8051  microcontroller

PROGRAM STATUS WORD(PSW):

Page 11: The 8051  microcontroller

DEFINITION OF PSW REGISTER:THE PROGRAM STATUS WORD (PSW) REG-ISTER IS AN 8 - BIT REGISTER. IT IS ALSOREFFERED TO AS FLAG REGISTER.ALTHOUGHPSW REGISTER IS 8-BITS WIDE, OLY 6-BITSARE USED BY 8051 . THE OTHER TWO AREUSER DEFINABLE FLAGS. FOUR OF FLAGSARE CALLED CONDITIONAL FLAGS ,MEANSTHAT THEY INDICATE SOME CONDITION

Page 12: The 8051  microcontroller

CONTINUE

THAT RESULT AFTER A INSTRUCTION IS

EXECUTED . THESE FOUR ARE CY (CARRY)

,AC(AUXILIARY CARRY) , P ( PARITY) AND

OV(OVERFLOW) .RS0 AND RS1 ARE USED

TO CHANGE BANK REGISTORS . THE PSW

.1 AND PSW.5 ARE GENERAL PURPOSE

STATUS FLAG BITS AND CAN BE USED BY

PROGRAMMER FOR ANY PURPOSE.

Page 13: The 8051  microcontroller

8051 REGISTER BANKS & STACK:THERE ARE 32 BYTES OF RAM ARE

SET ASIDE FOR THE REGISTER BANKS

ANDSTACK. THERE ARE 128 BYTES OF

RAMARE USED IN 8051 . THE 128 BYTES

AREASSIGNED ADDRESSES 00 TO 7FH.

FROMTHESE 32 BYTES ARE USED FOR

STACK AND REGISTER BANK .

Page 14: The 8051  microcontroller

THERE ARE 4 REGISTER BANKS. THESE ARE

[1] BANK(0) : ADDRESS FROM 00H TO 07H.

[2] BANK(1) : ADDRESS FROM 08H TO 0FH.

[3] BANK(1) : ADDRESS FROM 10H TO 17 H.

[4] BANK(1) : ADDRESS FROM 18H TO 1FH.

FROM 20H TO 2FH ARE ASSIGNED FOR BIT-

ADDERESSABLE RAM AND FROM 30H TO 7F

H ARE FOR SCRATCH PAD RAM.

Page 15: The 8051  microcontroller

RAM ALLOCATION

Page 16: The 8051  microcontroller

8051 REGISTER BANKS & THEIRRAM ADDERESSES

Page 17: The 8051  microcontroller

STACK IN THE 8051:

STACK SI THE SECTION OF RAM USED BY

CPU TO STORE INFORMATION TEMPORA –

RILY . THIS INFORMATION COULD BE DATA

OR ADDERESS . THE CPU NEEDS THIS AREA

FOR STORAGE SINCE THERE ARE ONLY A

LIMITED NUMBER OF REGISTERS.

Page 18: The 8051  microcontroller

PUSHING ONTO STACK:WE PUSH DATA ONTO STACK,THE

STACKPOINTER (SP) IS INCREMENTED BY

ONE.• EXAMPLE:MOV R6,#25HMOV R1,#12HMOV R4,#0F3HPUSH 6PUSH 1PUSH 4

Page 19: The 8051  microcontroller

SOLUTION:

AFTER AFTER AFTER PUSH6 PUSH1 PUSH 4 0B 0B 0B 0B0A 0A 0A 0A F309 09 09 12 09 1208 08 25 08 25 08 25

START SP=07 SP=08 SP=09 SP=0A

Page 20: The 8051  microcontroller

POPPING FROM STACK:

Page 21: The 8051  microcontroller

PROGRAMMING 8051 TIMERS:

• THE 8051 HAS TWO TIMERS : TIMER0

TIMER1.• TIMER0 AND TIMER1 ARE 16-BITS

WIDE.• THE 8051 HAS 8-BIT

ARCHITECTURE , EACH IS ACCESSED BY TWO

SEPARATE REGISTERS OF LOW BYTE AND

HIGH BYTE.

Page 22: The 8051  microcontroller

• TIMER0 REGISTERS: THE 16-BIT REGISTER OF TIMER0 IS ACCESSED AS LOW

BYTE AND HIGH BYTE i.e TL0 & TH0.• TIMER1 REGISTERS: THE 16-BIT REGISTER OF TIMER0 IS ACCESSED AS LOW

BYTE AND HIGH BYTE i.e TL1 & TH1.• TMOD (TIMER MODE) REGISTER: BOTH

TIMERS 0 &1 USE SAME REGISTER TMOD.

Page 23: The 8051  microcontroller

FIGURE OF TIMER0 AND TIMER1

Page 24: The 8051  microcontroller

TMOD REGISTER

Page 25: The 8051  microcontroller

STEPS TO PROGRAM FOR MODE1 a) LOAD TMODb) LOAD TH & TLc) START TIMER (SBIT TR)d) SET TI MER FLAG H:JNB TF,He) CLR TRf) CLR TFg) RET

Page 26: The 8051  microcontroller

STEPS TO PROGRAM FOR MODE2a) LOAD TMOD REGISTERb) LOAD TIMER TYPEc) SET TIMER/START TI MERd) SET FLAGe) CLR FLAGf) RET

Page 27: The 8051  microcontroller

COUNTERS

TIMER / COUNTERS ARE USED TO

GENERATE TIME DELAYS . THESE

TIMERS CAN BE USED AS COUNTERS

COUNTING EVENTS HAPPENING OUT-

SIDE THE 8051 . WHEN THE TIMER /

COUNTER IS USED AS A TIMER, THE

8051’S CRYSTAL IS USED AS THE SOURCE

OF FREQUENCY.

Page 28: The 8051  microcontroller

END.

Page 29: The 8051  microcontroller

THANK YOU.