Microprocessors Lab Manuals
-
Upload
pulakhamdam-vidhya-sagar-reddy -
Category
Documents
-
view
1.548 -
download
5
Transcript of 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
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:
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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”
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
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
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
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 ?
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
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
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
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
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
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
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
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
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
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
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
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
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
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);
}
}
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
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
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