microprocessors lab manuals

50
JAWAHAR LAL NEHRU TECHNOLOGICAL UNIVERSIY T P C 0 3 2 III YEAR B.TECH ECE &EIE –II SEMESTER (EC 05401)MICROPROCESSORS LAB I. Microprocessor 8086: 1. Introduction to MASM/TASM. 2. Arithmetic operation – Multi byte Addition and Subtraction, Multiplication and Division – Signed and unsigned Arithmetic operation, ASCII – arithmetic operation. 3. Logic operations – Shift and rotate – Converting packed BCD to unpacked BCD, BCD to ASCII conversion. 4. By using string operation and Instruction prefix: Move Block, Reverse string, Sorting, Inserting, Deleting, Length of the string, String comparison. 5. DOS/BIOS programming: Reading keyboard (Buffered with and without echo) – Display characters, Strings. II. Interfacing: 1. 8259 – Interrupt Controller: Generate an interrupt using 8259 timer. 2. 8279 – Keyboard Display: Write a small program to display a string of characters. 3. 8255 – PPI: Write ALP to generate sinusoidal wave using PPI. 4. 8251 – USART: Write a program in ALP to establish Communication between two processors. III. Microcontroller 8051 1. Reading and Writing on a parallel port. 2. Timer in different modes. 3. Serial communication implementation.

Upload: pulakhamdam-vidhya-sagar-reddy

Post on 27-Mar-2015

1.556 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Microprocessors Lab Manuals

JAWAHAR LAL NEHRU TECHNOLOGICAL UNIVERSIY

T P C 0 3 2

III YEAR B.TECH ECE &EIE –II SEMESTER(EC 05401)MICROPROCESSORS LAB

I. Microprocessor 8086:

1. Introduction to MASM/TASM.2. Arithmetic operation – Multi byte Addition and Subtraction, Multiplication

and Division – Signed and unsigned Arithmetic operation, ASCII – arithmetic operation.

3. Logic operations – Shift and rotate – Converting packed BCD to unpacked BCD, BCD to ASCII conversion.

4. By using string operation and Instruction prefix: Move Block, Reverse string, Sorting, Inserting, Deleting, Length of the string, String comparison.

5. DOS/BIOS programming: Reading keyboard (Buffered with and without echo) – Display characters, Strings.

II. Interfacing:

1. 8259 – Interrupt Controller: Generate an interrupt using 8259 timer.2. 8279 – Keyboard Display: Write a small program to display a string of characters.3. 8255 – PPI: Write ALP to generate sinusoidal wave using PPI.4. 8251 – USART: Write a program in ALP to establish Communication between two processors.

III. Microcontroller 8051 1. Reading and Writing on a parallel port.2. Timer in different modes.3. Serial communication implementation.

MICROPROCESSORS LAB

Page 2: Microprocessors Lab Manuals

YEAR &SEMESTER: III ECE, III EIE, II SEM

I. Microprocessor 8086:

1. Introduction to MASM/TASM.2. Arithmetic operation – Multi byte Addition and Subtraction, Multiplication

and Division – Signed and unsigned Arithmetic operation, ASCII – arithmetic operation.

3. Logic operations – Shift and rotate – Converting packed BCD to unpacked BCD, BCD to ASCII conversion.

4. By using string operation and Instruction prefix: Move Block, Reverse string, Sorting, Inserting, Deleting, Length of the string, String comparison.

5. DOS/BIOS programming: Reading keyboard (Buffered with and without echo) – Display characters, Strings.

II. Interfacing:

1. 8259 – Interrupt Controller: Generate an interrupt using 8259 timer.2. 8279 – Keyboard Display: Write a small program to display a string of characters.3. 8255 – PPI: Write ALP to generate sinusoidal wave using PPI.4. 8251 – USART: Write a program in ALP to establish Communication between two processors.

III. Microcontroller 8051 1. Reading and Writing on a parallel port.2. Timer in different modes.3. Serial communication implementation.

Additional Experiments to be conducted

1. Interfacing of traffic light controller.

2. Interfacing of stepper motor.

3. Interfacing of DAC

EXPT NO.1

INTRODUCTION TO TASM/MASM

ASSEMBLY LEVEL PROGRAMMING:

Page 3: Microprocessors Lab Manuals

A PROGRAM CALLED “ASSEMBLER” IS USED TO CONVERT THE MNEMONICS OF INSTRUCTIONS ALONG WITH THE DATA IN TO THEIR EQUIVALENT OBJECT CODE MODULES. THESE OBJECT CODE MODULES MAY FURTHER CONVERTED IN TO EXECUTABLE CODE BY USING LINKER AND LODER PROGRAMS.

STEPS INVOLVED IN ALP:

1. ENTERING A PROGRAM

2. ASSEMBLING A PROGRAM

3. LINKING A PROGRAM

4. USING DEBUG

ENTERING A PROGRAM:

BEFORE STARTING THE PROCESS, ENSURE THE ALL THE FILES i.e., EDITOR, ASSEMBLER, LINKER AND DEBUGGER ARE AVAILABLE IN THE SAME DIRECTORY IN WHICH YOU ARE WORKING.

C>NE→GET DISPLAY

THEN TYPE THE PROGRAM AND CHECK ANY TYPING MISTAKE AND SYNTAX ERRORS. BEFORE QUIT THE EDITOR PROGRAM DO NOT FORGET TO SAVE IT. A NUMBER OF TEXT EDITORS ARE AVAILABLE IN THE MARKET EX: NORTON EDITOR (NE), TURBO C (FTC), EDLIN etc.

SAVE THE PROGRAM: FILE NAME.ASM

DATA SEGMENT ..DATA ENDS

CODE SEGMENTSTART:...CODE ENDSEND START

ASSEMBLING A PROGRAM:

MICROSOFT MACRO ASSEMBLER IS ONE OF THE EASY TO USE AND POPULAR ASSEMBLERS. ASSEMBLER ACCEPTS THE TEXT ASSEMBLY LANGUAGE PROGRAM FILE AS INPUT AND PREPARES AN OBJECT FILE. i.e., MASM ACCEPTS THE FILE NAMES ONLY WITH THE EXTENSION.ASM.

C: TASM FILE NAME.ASM

Page 4: Microprocessors Lab Manuals

SOURCE FILENAME [.ASM]:

OBJECT FILENAME [FILE.OBJ]:

LIST FILENAME [NUL.LST]:

THE OBJECT FILE IS CREATED WITH THE ENTERED NAME WITH .OBJ EXTENSION. THE .OBJ FILE CONTAINS THE CODED OBJECT MODULES OF THE PROGRAM TO BE ASSEMBLED.

THE LISTING FILE IS AUTOMATICALLY GENERATED IN THE ASSEMBLY PROCESS. THE LISTING FILE CONTAINS THE TOTAL OFFSET MAP OF THE SOURCE FILE INCLUDING LABELS, OFFSET ADDRESS, OPCODES, AND MEMORY ALLOTMENT FOR DIFFERENT LABELS.

LINKING A PROGRAM:

THE DOS LINING PROGRAM LINK.EXE THE DIFFERENT OBJECT MODULES OF A SOURCE PROGRAM AND TO GENERATE AN INTEGRATED EXECUTABLE CODE OF THE SOURCE PROGRAM. THE INPUT TO THE LINKER IS THE .OBJ FILE.

C:T LINK FILENAME.OBJ

THE OUTPUT OF THE LINKER OS FILENAME.EXE

USING DEBUG:

DEBUG.COM IS A DOS UTILITY THAT FACILITATES THE DEBUGGING AND TROUBLE SHOOTING OF AN ASSEMBLY LANGUAGE PROGRAMS. DEBUG IS USED TO TROUBLESHOOT THE FILES ONLY WITH EXTENSION.EXE.

DEBUG MAY BE USED EITHER TO DEBUG A SOURCE PROGRAM OR TO OBSERVE THE RESULTS OF EXTENSION OF AN .EXE FILE WITH THE HELP OF LIST FILE.LST AND DEBUG COMMANDS.

AFTER EXECUTION OF THE PROGRAM, THE OFFSET ADDRESS OF THE RESULT VARIABLES MAY BE OBSERVED USING THE ‘D’ COMMAND. THE RESULTS AVAILABLE IN THE REGISTERS MAY BE OBSERVED USING THE ‘R’ COMMAND.

C: DEBUG FILENAME.EXE

PRESS R THEN

T ....Q

Page 5: Microprocessors Lab Manuals

DEBUG COMMANDS:

DEBUG PROVIDES A SET OF COMMANDS THAT LETS YOU PERFORM A NUMBER OF USEFUL OPERATIONS.

THE COMMANDS THAT CONCERN US AT THIS POINT ARE THE FOLLOWING:

A ASSEMBLE SYMBOLIC INSTRUCTIONS INTO MACHINE CODE

D DISPLAY THE CONTENS OF AN AREA OF MEMORY

E ENTER DATA INTO MEMORY, BEGINNING AT A SPECIFIC LOCATION

G RUN THE EXECUTABLE PROGRAM IN MEMORY (G MEANS “GO”)

N NAME OF THE PROGRAM

P PROCEED, OR EXECUTE A SET OF RELATED INSTRUCTIONS.

Q QUIT THE DEBUG SESSION.

R DISPLAY THEN CONTENTS OF ONE OR MORE REGISTERS

T TRACES THE EXECUTION OF ONE INSTRUCTION.

U “UNASSEMBLE” (REALLY, DISASSEMBLE) MACHINE CODE INTO SYMBOLIC CODE

W WRITE A PROGRAME ONTO DISK

EXPT NO: 2

ARITHEMATIC OPERATIONS ON MULTIBYTE UNSIGNED, SIGNED AND ASCII NUMBERS

ARITHEMATIC OPERATIONS ON MULTIBYTE UNSIGNED NUMBERS:

ADDITION:

DATA SEGMENT

A DB 02H, 20H, 08H, 70H

B DB 03H, 04H, 05H, 06H

Page 6: Microprocessors Lab Manuals

SUM DB 5 DUP(0)

COUNT EQU 04

DATA ENDS

CODE SEGMENT

ASSUME CS: CODE, DS: DATA

START: MOV AX, DATA

MOV DS, AX

LEA SI, A+3

LEA DI, B+3

LEA BX, SUM+4

MOV CX, COUNT

CLC

LP: MOV AL, [SI]

ADC AL, [DI]

MOV BYTE PTR [BX],AL

DEC SI

DEC DI

DEC BX

LOOP LP

JNC LP1

MOV BYTE PTR [BX], 01H

LP1: MOV AH, 4CH

INT 21H

CODE ENDS

END START

SUBTRACTION:

DATA SEGMENT

A DB 02H, 20H, 08H, 70H

B DB 03H, 04H, 05H, 06H

SUM DB 5 DUP(0)

COUNT EQU 04

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START: MOV AX,DATA

MOV DS,AX

Page 7: Microprocessors Lab Manuals

LEA SI,A+3

LEA DI,B+3

LEA BX,SUM+4

MOV CX,COUNT

CLC

LP: MOV AL,[SI]

SBB AL,[DI]

MOV BYTE PTR[BX],AL

DEC SI

DEC DI

DEC BX

LOOP LP

JNB LP1

MOV BYTE PTR[BX],01H

LP1: MOV AH,4CH

INT 21H

CODE ENDS

END START

MULTIPLICATION:

DATA SEGMENT

A DB 02H, 20H, 08H, 70H

B DB 03H, 04H, 05H, 06H

SUM DB 8 DUP(0)

COUNT EQU 04

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START: MOV AX,DATA

MOV DS,AX

LEA SI,A

LEA DI,B

Page 8: Microprocessors Lab Manuals

LEA BX,SUM

MOV CX,COUNT

CLC

LP: MOV AL,[SI]

MUL BYTE PTR[DI]

MOV WORD PTR[BX],AX

INC SI

INC DI

INC BX

INC BX

LOOP LP

MOV AH,4CH

INT 21H

CODE ENDS

END START

DIVISION:

DATA SEGMENT

A DW 0282H, 0820H, 0678H, 0790H

B DB 30H, 40H, 50H, 60H

SUM DB 8 DUP(0)

COUNT EQU 04

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

LEA SI,A

LEA DI,B

LEA BX,SUM

MOV CX,COUNT

Page 9: Microprocessors Lab Manuals

CLC

LP: MOV AX,[SI]

DIV BYTE PTR[DI]

MOV WORD PTR[BX],AX

INC SI

INC SI

INC DI

INC BX

INC BX

LOOP LP

MOV AH,4CH

INT 21H

CODE ENDS

END START

ARITHEMATIC OPERATIONS ON MULTIBYTE SIGNED NUMBERS

ADDITION:

DATA SEGMENT

A DB 92H, 80H, 88H, 87H

B DB 03H, 04H, 05H, 06H

SUM DB 5 DUP(0)

COUNT EQU 04

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START: MOV AX,DATA

MOV DS,AX

LEA SI,A+3

LEA DI,B+3

LEA BX,SUM+4

MOV CX,COUNT

CLC

Page 10: Microprocessors Lab Manuals

LP: MOV AL,[SI]

ADC AL,[DI]

MOV BYTE PTR[BX],AL

DEC SI

DEC DI

DEC BX

LOOP LP

JNC LP1

MOV BYTE PTR[BX],01H

LP1: MOV AH,4CH

INT 21H

CODE ENDS

END START

SUBSTRACTION:

DATA SEGMENT

A DB 02H, 20H, 08H, 70H

B DB 93H, 84H, 95H, 86H

SUM DB 5 DUP(0)

COUNT EQU 04

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START: MOV AX,DATA

MOV DS,AX

LEA SI,A+3

LEA DI,B+3

LEA BX,SUM+4

MOV CX,COUNT

CLC

LP: MOV AL,[SI]

SBB AL,[DI]

MOV BYTE PTR[BX],AL

DEC SI

Page 11: Microprocessors Lab Manuals

DEC DI

DEC BX

LOOP LP

JNB LP1

MOV BYTE PTR[BX],01H

LP1: MOV AH,4CH

INT 21H

CODE ENDS

END START

MULTIPLICATION:

DATA SEGMENT

A DB 92H, 80H, 88H, 97H

B DB 03H, 04H, 05H, 06H

SUM DB 8 DUP(0)

COUNT EQU 04

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START: MOV AX,DATA

MOV DS,AX

LEA SI,A

LEA DI,B

LEA BX,SUM

MOV CX,COUNT

CLC

LP: MOV AL,[SI]

IMUL BYTE PTR[DI]

MOV WORD PTR[BX],AX

INC SI

INC DI

INC BX

Page 12: Microprocessors Lab Manuals

INC BX

LOOP LP

MOV AH,4CH

INT 21H

CODE ENDS

END START

DIVISION:

DATA SEGMENT

A DW 0282H, 0820H, 0678H, 0790H

B DB 30H, 40H, 50H, 60H

SUM DB 8 DUP(0)

COUNT EQU 04

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

LEA SI,A

LEA DI,B

LEA BX,SUM

MOV CX,COUNT

CLC

LP: MOV AX,[SI]

IDIV BYTE PTR[DI]

MOV WORD PTR[BX],AX

INC SI

INC SI

INC DI

INC BX

INC BX

Page 13: Microprocessors Lab Manuals

LOOP LP

MOV AH,4CH

INT 21H

CODE ENDS

END START

ARITHEMATIC OPERATIONS ON MULTIBYTE ASCII NUMBERS

ASCII ADDITION:

DATA SEGMENT

ASC1 DB ‘568’

ASC2 DB ‘684’

ASCSUM DB ‘0000’

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START: MOV AX,DATA

MOV DS,AX

CLC

LEA SI,ASC1+2

LEA DI,ASC2+2

LEA BX,ASCSUM+3

MOV CX,03

A20: MOV AH,00

MOV AL,[SI]

ADC AL,[DI]

AAA

MOV [BX],AL

DEC SI

DEC DI

DEC BX

LOOP A20

MOV [BX],AH

LEA BX,ASCSUM+3

Page 14: Microprocessors Lab Manuals

MOV CX,04

A30: OR BYTE PTR[BX],30H

DEC BX

LOOP A30

MOV AX,4C00H

INT 21H

CODE ENDS

END START

ASCII SUBSTRACTION:

DATA SEGMENT

ASC1 DB ‘568’

ASC2 DB ‘684’

ASCSUM DB ‘0000’

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START: MOV AX,DATA

MOV DS,AX

CLC

LEA SI,ASC1+2

LEA DI,ASC2+2

LEA BX,ASCSUM+3

MOV CX,03

A20: MOV AH,00

MOV AL,[SI]

SBB AL,[DI]

AAS

MOV [BX],AL

DEC SI

DEC DI

DEC BX

LOOP A20

JNB LP

MOV [BX],01H

LP: LEA BX,ASCSUM+3

MOV CX,04

A30: OR BYTE PTR[BX],30H

DEC BX

LOOP A30

Page 15: Microprocessors Lab Manuals

MOV AX,4C00H

INT 21H

CODE ENDS

END START

ASCII MULTIPLICATION:

DATA SEGMENT

MULCND DB ‘3657’

MULTPLR DB ‘6’

PRODUCT DB 5 DUP(0)

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE. DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV CX,04

LEA SI,MULCND+3

LEA DI,PRODUCT+4

AND MULTPLR,0FH

A20: MOV AL,[SI]

AND AL,0FH

MUL MULTPLR

AAM

ADD AL,[DI]

AAA

MOV [DI],AL

DEC DI

MOV [DI],AH

DEC SI

LOOP A20

LEA BX,PRODUCT+4

MOV CX,05

A30: OR BYTE PTR[BX],30H

DEC BX

LOOP A30

MOV AX,4C00H

Page 16: Microprocessors Lab Manuals

INT 21H

CODE ENDS

END START

ASCII DIVISION:

DATA SEGMENT

DIVDND DB ‘3698’

DIVSOR DB ‘4’

QUOTNT DB 4 DUP(0)

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV CX,04

SUB AH,AH

AND DIVSOR 0FH

LEA SI,DIVDND

LEA DI,QUOTNT

A20: MOV AL,[SI]

AND AL,0FH

AAD

DIV DIVSOR

MOV [DI],AL

INC SI

INC DI

LOOP A20

MOV [DI],AH

LEA DI,QUOTNT

MO0V CX,05

LP: OR BYTE PTR[DI],AH

DEC DI

LOOP LP

MOV AH,4CH

INT 21H

CODE ENDS

END START

Page 17: Microprocessors Lab Manuals

EXPT.NO.3

LOGIC OPERATIONS – SHIFT AND ROTATE – CONVERTING PACKED BCD TO UNPACKED BCD – BCD TO ASCII CONVERSION

PACKED BCD TO UNPACKED BCD:

DATA SEGMENT

BCD DB 35H

UNBCD DB ‘00’

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

LEA SI,BCD

LEA DI,UNBCD

MOV AL,[SI]

MOV AH,00

MOV CL,04

SHL AX,CL

ROL AL,CL

MOV [DI],AH

INC DI

MOV [DI],AL

MOV AH,4CH

INT 21H

CODE ENDS

END START

Page 18: Microprocessors Lab Manuals

BCD TO ASCII:

DATA SEGMENT

BCD DB 57H

ASC DB ‘00’

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

LEA SI,BCD

LEA DI,ASC

MOV AL,[SI]

MOV AH,33H

MOV CL,04

ROL AX,CL

ROL AL,CL

MOV [DI],AH

INC DI

MOV [DI],AL

MOV AH,4CH

INT 21H

CODE ENDS

END START

Page 19: Microprocessors Lab Manuals

EXPT.NO.4

BY USING THE STRING OPERATION AND INSTRUCTION PREFIX MOVE BLOCK, REVERSE STRING, SORTING, INSERTING,

DELETING, LENGTH OF THE STRING,STRING COMPARISION.

LENGTH OF THE STRING:

DATA SEGMENT

STR1 DB “THE KING”,”$”

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV CL,00H

LEA SI,STR1

LOOP1: CMP [SI],24H

JE LABEL1

INC CL

INC SI

JMP LOOP1

LABEL1: MOV AH,4CH

INT 21H

CODE ENDS

END START

MOVE STRING FROM ONE LOCATION TO ANOTHER LOCATION:

DATA SEGMENT

Page 20: Microprocessors Lab Manuals

STR1 DB “SACET”

STR2 DB 05 DUP(0)

COUNT EQU 05

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START: MOV AX,DATA

MOV DS,AX

LEA SI,STR1

LEA DI,STR2

MOV CX,COUNT

CLD

REP MOV SB

MOV AH,4CH

INT 21H

CODE ENDS

END START

STRING COMPARISION:

DATA SEGMENT

NAME1 DB “ASSEMBLERS”

NAME2 DB “ASSEMBLERS”

Page 21: Microprocessors Lab Manuals

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV BH,00

CLD

MOV CX,10

LEA SI, NAME1

LEA DI,NAME2

REPE CMPSB

JNE LP1

MOV BH,01

LP: MOV AH,4CH

INT 21H

CODE ENDS

END START

REVERSE STRING:

DATA SEGMENT

STR1 DB “SACET”

SRT2 DB “00000”

COUNT EQU 05

DATA ENDS

Page 22: Microprocessors Lab Manuals

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV SI, OFFSET STR1

MOV DI, OFFSET STR2+4

MOV CX, COUNT

LP: MOV AL,[SI]

MOV [DI],AL

INC SI

DEC DI

LOOP LP

MOV AH,4CH

INT 21H

CODE ENDS

END START

STRING INSERTION:

DATA SEGMENT

STR1 DB “THE”,”$”

STR2 DB “EEE IS BEST”,”$”

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START: MOV AX,DATA

Page 23: Microprocessors Lab Manuals

MOV DS,AX

LEA SI, STR2+7

LEA DI,STR1

MOV CX,04

CLD

LP: MOV AL,[SI]

MOV [SI]+4,AL

INC SI

LOOP LP

LEA SI,STR2+7

MOV CX,03

LP1: MOV AL,[DI]

MOV [SI],AL

INC SI

INC DI

LOOP LP1

MOV BYTE PTR[SI],20H

MOV AH,4CH

INT 21H

CODE ENDS

END START

STRING DELETION:

DATA SEGMENT

STR1 DB “EEE IS THE BEST”,”$”

STR2 DB “000”

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START: MOV AX,DATA

MOV DS,AX

LEA SI, STR1+7

Page 24: Microprocessors Lab Manuals

LEA DI,STR2

MOV CX,03H

CLD

L1: MOV AL,[SI]

MOV [DI],AL

INC SI

INC DI

LOOP LP1

LEA SI,STR1+11

MOV CX,04H

L2: MOV AL,[SI]

MOV [SI]+4,AL

MOV BYTE PTR [SI],20H

INC SI

LOOP L2

MOV AH,4CH

INT 21H

CODE ENDS

END START

EXPT NO: 5

DOS/BIOS PROGRAMMING: TO DISPLAY THE STRING WITH ECHO AND WITHOUT ECHO

DATA SEGMENT

STR1 DB “ENTER ANY STRING”, “$”

STR2 DB “DO YOU WANT TO CENTRE POSITION”,”$”

PARLIST LABEL BYTE

MAXLEN DB 20

NAMELEN DB ?

Page 25: Microprocessors Lab Manuals

NAMEFLD 21 DUP(“$”)

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

XOR AX,AX

MOV AH,09H

LEA DX,STR1 ; display the string1

INT 21H

MOV AH,0AH

LEA DX,PARLIST ; read the string

INT 21H

MOV AX,0600H

MOV BH,30

MOV CX,0000 ;screen settings

MOV DX,384FH

INT 10H

MOV AH,09H

LEA DX,STR2 ; display the string2

INT 10H

MOV AH,01H ; 01 for read with echo,

INT 21H 07 for without echo

CMP AL, ‘Y’

JNZ LP1

MOV AH,02H

MOV BH,00 :page no.1

MOV DH,12 :12th row in page1

MOV DL,40 :40TH column in page1

INT 10H

LP1: MOV AH,09H

LEA DX,NAMEFLD

INT 21H

MOV AH,4CH

Page 26: Microprocessors Lab Manuals

CODE ENDS

END START

EXPT NO: 6

8259 -INTERRUPT CONTROLER

; FILENAME : I8259_1.ASM

; PROCESSOR : I8086

; VER. : V1.1

CODE SEGMENT

ASSUME CS: CODE, DS:CODE,ES:CODE,SS:CODE

INTA EQU 007CH

INTA2 EQU INTA+2

LCDC EQU 00H

LCDC_S EQU 02H

LCDD EQU 04H

INT_V EQU 040H*4

Page 27: Microprocessors Lab Manuals

INT_V1 EQU 041H*4

STACK EQU 0540H

ORG 1000H

XOR BX,BX

MOV ES,BX

MOV SS,BX

MOV DS,AX

MOV SP,STACK

MOV AX,OFFSET INTR0

MOV BX,INT_V

MOV WORD PTR ES:[BX],AX

XOR AX,AX

MOV WORD PTR ES:[BX+2],A

MOV AX,OFFSET INTR1

MOV BX,INT_V1

MOV WORD PTR ES:[BX],AX

CALL INIT

STI

L2: NOP

JMP L2

ORG 1100H

INTR0: CLI

MOV DX,OFFSET CUSOR1

JMP DISP

INT 03

ORG 1110H

INIT : ICW1

MOV AL, 0010011B

OUT INTA,AL ;ICW2 interrupt vector

MOV AL,40H

OUT INTA2,AL ;ICW4

MOV AL,00000011B

OUT INTA2,AL ;interrupt mask

MOV AL,11000000B

OUT INTA2,AL

Page 28: Microprocessors Lab Manuals

RET

ORG 1180H

DISP: CALL LCD

NOP

STI

RET

LCD: CALL ALLCLR

MOV SI,DX

CALL STRING

RET

ORG 1220H

CUSOR1 DB 'INTERRUPT IR0',00H,00H

ORG 1240H

CUSOR2 DB 'INTERRUPT IR1',00H,00H

LCD instruction

ALLCLR: MOV AH,01H

JMP LNXX

DISPOFF:

MOV AH,08H

JMP LNXX

DISPON: MOV AH,0FH

JMP LNXX

LN11: MOV AH,02H

JMP LNXX

LN21: MOV AH,0C0H

LNXX: CALL BUSY

MOV AL,AH

OUT LCDC,AL

RET

busy flag check

BUSY: IN AL,LCDC_S

Page 29: Microprocessors Lab Manuals

AND AL,10000000B

JNZ BUSY

RET

; 1 char. LCD OUT

; AH = out data

CHAROUT:

CALL BUSY

;

MOV AL,AH

OUT LCDD,AL

RET

;

STRING: MOV AH,BYTE PTR ES:[SI]

CMP AH,00H

JE STRING1

; out

CALL BUSY

CALL CHAROUT

INC SI

JMP STRING

STRING1:

RET

TIMER: MOV CX,2

TIMER2: PUSH CX

MOV CX,0

TIMER1: NOP

NOP

NOP

NOP

LOOP TIMER1

POP CX

LOOP TIMER2

RET

CODE ENDS

END

Page 30: Microprocessors Lab Manuals

EXPT NO: 7

8279 –KEYBORAD DISPLAY

AIM ;Program to Display Hi-q ELECTRONICS using Encode method.

;007EH Command Port

;007CH Data Port

CODE SEGMENT

ASSUME CS: CODE, DS: CODE, SS: CODE, ES: CODE

ORG 1000H

MOV CX,08H

MOV AL,00H

MOV DX,007EH ; Routine to clear

OUT DX,AL ; all displays

MOV AL,90H

OUT DX,AL

RPT: MOV AL,00H ; 8 8-bit character

MOV DX,007CH ; display Left

OUT DX,AL ; entry, Encoded

LOOP RPT ; scan keyboard

MOV DX,007EH

Page 31: Microprocessors Lab Manuals

MOV AL,10H

OUT DX,AL

MOV DX,007FH

MOV AL,90H ; Write to 8279

OUT DX,AL ; display RAM

BCK: MOV SI,1100H ; Routine to

MOV CX,08H ; display Hi-q

BCO: MOV AL,[SI] ; Electronics

MOV DX,007CH

OUT DX,AL

INC SI

CALL DLY ; Provide some

LOOP BCO ; delay

MOV CX,08H

BC1: MOV AL,[SI]

MOV DX,007CH

OUT DX,AL

INC SI

CALL DLY

LOOP BC1

JMP BCK

DLY: PUSH CX

MOV CX,0000H

ZZ: LOOP ZZ

POP CX

RET

;Display lookup table

ORG 1100H

DB 67H,03H,04H,76H

DB 97H,83H,97H,93H

DB 87H,13H,0F3H,073H

DB 03H,93H,0D6H,04H

CODE ENDS

END

Page 32: Microprocessors Lab Manuals

EXPT NO: 8

8255 – PPI

AIM: To generate sinusoidal signal using DAC

MOVW AX,0000

MOVW SI,9000

MOVW CX,0000

MOVB AL,80

MOVW DX,0FFE6

OUTB AL,DX

MOVW DX,0FFE2

R1: MOVB AL,[SI]

OUTB DX,AL

MOVW CX,000F

L1: LOOP L1

INCW SI

CMPW SI,903D

JNE R1

MOVW SI,9000

JMP R1

Page 33: Microprocessors Lab Manuals

EXPT NO: 8

8255 – PPI

AIM: To interface switch

NOTES:

THE INTERFACE IS CONNECTED TO J4 TRAINER.

THE PROGRAM DISPLAYS THE POSITION OF THE SWITCH

THE PROGRAM VERIFIES THE SWITCH IN OFF POSITION

THE PROGRAM VERIFIES THE SWITCH IN ON POSITION.

THE PROGRAM STARTS AT MEMORY LOCATION 0000:4000H

PROGRAM:

MEMORY OPCODES MNEMONIC COMMENT

4000 B8 00 00 MOVW AX,0000 ;Initialisation

4003 BA E6 FF MOVW DX,0FFE6 ;Assigning Portaddress.

4006 B0 92 MOVB AL,92 ;Configuring 8255 Port A As

4008 EE OUTB AL,DX ; I/P & Port C As O/P

4009 B3 00 MOVB BL,00 ;Initialisation Of BL Register.

400B BA E4 FF MOVW DX,0FFE4 ;Assign Port Address

400E B0 01 MOVB AL,01 ;Make Pc0 Scan Line High

4010 EE OUTB AL,DX ;

4011 BA E0 FF MOVW DX,0FFE0 ;Assign Port Addres

4014 EC INB AL,DX ;Check Pa0 For Switch Position

4015 24 01 ANDB AL,01 ;Mask All Extra Bits

(Except LSB)4017 3C 01 CMPB AL,01 ;Compare Positions Is ON/OFF

4019 75 02 JNE 401D ;If On Replace Register BL

Page 34: Microprocessors Lab Manuals

401B B3 01 MOVB BL,01 ;With 01

401D CC INT 03 ;Interrupt.

EXPT. NO: 9

8251-USART

AIM: To establish communication between two processors.

= 007A M51 EQU 007AH

= 0078 V51 EQU 0078H

= 005E M53 EQU 005EH

= 0058 TM0 EQU 0058H

0000 CODE SEGMENT

ASSUME CS:CODE DS:CODE, SS:CODE, ES:CODE

1000 ORG 1000H

1000 B0 36 MOV AL,36H

1002 BA 005E MOV DX,M53

1005 EE OUT DX,AL

1006 BA 0058 MOV DX,TM0

1009 B0 0A MOV AL,0AH

100B EE OUT DX,AL

100C B0 00 MOV AL,00H

100E EE OUT DX,AL

100F BC 0540 MOV SP,0540H

1012 BA 007A MOV DX,M51

1015 EE OUT DX,AL

1016 EE OUT DX,AL

1017 EE OUT DX,AL

1018 EE OUT DX,AL

1019 E8 1049 R CALL DLY

101C B0 40 MOV AL,040H

101E EE OUT DX,AL

101F E8 1049 R CALL DLY

Page 35: Microprocessors Lab Manuals

1022 B0 CE MOV AL,0CEH

1024 EE OUT DX,AL

1025 E8 1049 R CALL DLY

1028 B0 27 MOV AL,27H

102A EE OUT DX,AL

102B E8 1049 R CALL DLY

102E BE 2100 MOV SI,2100H

1031 BA 007A STS: MOV DX,M51

1034 EC IN AL,DX

1035 24 81 AND AL,81H

1037 3C 81 CMP AL,81H

1039 75 F6 JNE STS

103B 8A 04 MOV AL,[SI]

103D 46 INC SI

103E 3C 00 CMP AL,00H

1040 74 06 JE OVR

1042 BA 0078 MOV DX,V51

1045 EE OUT DX,AL

1046 EB E9 JMP STS

1048 CC OVR: INT 3

1049 B9 0010 DLY: MOV CX,0010H

104C E2 FE XX: LOOP XX

104E C3 RET

2100 ORG 2100H 2100 0D 0A DB 0DH,0AH

2102 57 45 4C 43 4F 4D DB 'WELCOME TO HiQ ELECTRONICS 8251/53 STUDY CARD' 45 20 54 4F 20 48 69 51 20 45 4C 45 43 54 52 4F 4E 49 43 53 20 38 32 35 31 2F 35 33 20 53 54 55 44 59 20 43 41 52 44 212F 0D 00 DB 0DH,00H

2131 CODE ENDS END

Page 36: Microprocessors Lab Manuals

EXPT NO: 10

READING AND WRITING ON PARALLEL PORT

READING DATA:

THEORY: To Read a Pin of a Port on the 8051 requires that a logic 1 first be written to that Pin . Hence FF should be written to port 1 to read all the 8 bits.

PROGRAM:

ADDRESS OPCODES MNEMONIC

4100 75 90 FF MOV P1 ,# FF

4103 E5 90 MOV A, P1

4105 90 45 00 MOV DPTR, # 4500

4108 F0 MOVX @ DPTR, A

4109 80 FE HLT: SJMP HLT

WRITING DATA:

THEORY: 8051 has four parallel ports. But, only port 1 is user – free as Port 2 outputs the high byte of the external memory address and port 0 outputs the low byte of the external memory address, time- multiplexed with the byte being written or read and port 3 pins have alternate functions.

PROGRAM:

ADDRESS OPCODES MNEMONIC

4100 75 45 MOV A, # 45

4102 F5 90 MOV P1, A

Page 37: Microprocessors Lab Manuals

4104 80 FE HLT: SJMP HLT

EXPT. NO: 11

TIMER IN DIFFERENT MODES

AIM: Initialize the timer 0 of 8051 Micro controller in different modes.

MODE 0:

MOV TMOD, # 0000 1000 B ; Select timer 0 in TMOD

SETB TR0 ; Start timer 0

CLR TR0 ; Stop timer 0

HLT: SJMP HLT ; Infinite loop

MODE 1:

MOV SP, # 54H ; Initialize the stack pointer

MOV TMOD, # 0000 0001 B ; Timer 0 in mode 1

SETB ET0 ; Enable timer 0 interrupt

SETB TR0 ; Start timer 0

SETB EA ; Enable all

HLT: SJMP HLT ; Infinite loop

MODE 2:

MOV TMOD, # 0000 0010 B ; Load TMOD for timer 0 in mode 2

MOV TH0, #33 H ; Load TH 0 with preset value to be

reloaded

MOV TL0, #33 H ; Starting count = preset value

SETB TR0 ; Start timer 0

HLT: SJMP HLT ; Infinite loop

Page 38: Microprocessors Lab Manuals

EXPT. NO: 12

SERIAL COMMUNICATION IMPLEMENTATION

#include<8051.h>

#include<serial_IO.h>

unsigned char c;

void serial_init() // Initialize UART baud rate to 9600

{

TMOD = 0X20;

TH1 = 0XFD;

TI = 1;

TR1 = 1;

SCON = 0X52;

//PCON =0x80;

}

void main()

{

serial_init();

while(1)

{

c = getchar();

putchar(c);

}

}

Page 39: Microprocessors Lab Manuals

EXPT. NO: 13

INTERFACING OF TRAFFIC LIGHT CONTROLLER

AIM: Interface the traffic light controller and control the traffic in different roads

MOVB AL,80H ;Intialise 8255 in mode0MOVW DX,0FFE6OUTB DX,AL  ;All ports as O/P

AGIAN : MOVW SI,2038NEXTST : MOVB AL,[SI]

MOVW DX,0FFE0OUTB DX,AL ;output value at port AINCW SIADDB DL,02MOVB AL[SI]OUTB DX,AL ;output value at port BINCW SIADDB DL,02MOVB AL,[SI]OUTB DX,AL ;output value at port CINCW SICALL DELAY ;Call Delay routineCMPW SI,2056 ;Check for end of dataJNZ NEXTSTJMP AGAIN

DELAY: MOVW CX,0FFF ;Delay routineDLY5: PUSH CX

MOVW CX,03FFDLY10: NOP

LOOP DLY10POP CXLOOP DLY5RET

ORG 20382038 88H,83H,F2H ;State1

88H,87H,F2H ;All ambers ON38H,88H,F4H ;State278H,88H,F4H ;All ambers ON83H,88H,F8H ;State387H,88H,F8H ;All ambers ON88H,38H,F1H ;State488H,78H,F1H ;All ambers ON88H,88H,00H ;State544H,44H,00H ;All ambers ON

2056 00H ;Dummy

EXPT. NO: 14

Page 40: Microprocessors Lab Manuals

INTERFACING OF STEPPER MOTOR

14.a AIM: To rotate stepper Anti Clockwise direction.

MOVB AL, 80H ; Initialize 8255 in mode0MOVW DX, 0FFE6OUTB DX, AL   ; All ports as O/PMOVB AL, 11 ; Output value to port AMOVW DX, 0FFE0

R1: OUTB DX, ALCALL DELAY ; Introduce delayRORB AL, 01 ; rotate bits in data byte right &repeatJMP R1

DELAY: MOVW CX, 0800 ;Delay routineLP : LOOP LP

RET

14.b AIM: To rotate stepper Clockwise direction.

MOVB AL, 80H ; Initialize 8255 in mode0MOVW DX, 0FFE6OUTB DX, AL   ; All ports as O/PMOVB AL, 11 ; Output value to port AMOVW DX, 0FFE0

R1: OUTB DX, ALCALL DELAY ; Introduce delayROLB AL, 01 ; rotate bits in data byte right &repeatJMP R1

DELAY: MOVW CX, 0800 ; Delay routineLP : LOOP LP

RET

EXPT. NO: 15

INTERFACING OF DAC

Page 41: Microprocessors Lab Manuals

15.a AIM: To generate triangular wave by interfacing DAC

MOVW AX, 0000 ;Initialize segment registersMOVW CS, AXMOVW ES, AXMOVW DX, 0FFE6 ;Initialize all 8255 ports as O/PMOVB AL, 80OUTB DX, AL

RPT1: MOVW CX, 0FF ;Set up countMOVB AL, 00 ;start from 0

UP: INCB AL ;Increment data for +ve MOVW DX, 0FFE0 ;going slope and outputOUTB DX, AL ;at port A and port BMOVW DX, 0FFE2OUTB DX, ALLOOP UPMOVW CX, 0FF ;set up count start from FFMOVW AX, CX

DOWN: DECB AL ;decrement data for -veMOVW DX, 0FFE0 ;going slope and outputOUTB DX, AL ;at port A and port BMOVW DX, 0FFE2OUTB DX, ALLOOP DOWNJMP RPT1

15.b AIM: To generate square wave by interfacing DAC

MOVW AX, 0000 ;Initialize segment registersMOVW CS, AXMOVW ES, AXMOVW DX, 0FFE6 ;Initialize all 8255 ports as O/PMOVB AL, 80OUTB DX, AL

RPT1: MOVB AL, 0FF ; out put FF at portsMOVW DX, 0FFE0OUTB DX, ALMOVW DX, 0FFE2OUTB DX, ALMOVW CX,1700 ;Delay

DLY1 LOOP DLY1MOVB AL, 00 ;output 0 at ports MOVW DX, 0FFE0OUTB DX, ALMOVW DX, 0FFE2OUTB DX, ALMOVW CX,1700 ;Delay

DLY2 LOOP DLY2JMP RPT1 ;Repeat continuosly