Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
(Approved by AICTE & Affiliated to JNTU K, Kakinada) Loyola Nagar, Dhulipalla (Village), Sattenapalli (Mandal) Guntur (Dist). Pin: 522 412
Department of E.C.E
III YEAR B.Tech ECE II Semester MICROPROCESSORS AND INTERFACING LAB I. Microprocessor 8086:
1 .Introduction to MASM / TASM. 2 .Arithmetic operation Multibyte addition and subtraction, Multiplication and Division signed and unsigned Arithmetic operation, ASCII - .Arithmetic operation. 3. Logical operations - Shift and rotate Converting packed BCD to unpacked BCD , BCD to ASCII conversion. 4. By using string operations and Instruction prefix. Move Block , Reverse string, sorting, Inserting ,Deleting, Length of the String, String comparison.
5. Modular Program: Procedure, Near and Far implementation, Recursion. 6. DOS /BIOS programming, Reading keyboard (buffered with and without echo) Display characters , strings.
II. Interfacing:
1. 8259 Intrupt controller. 2. 8279 - Keyboard Display. 3. 8255 PPI 4. 8251 USART.
LITAM
Page 2
Department of E.C.E
Department of E.C.E
32. ASCENDING ORDER PROGRAMMING (HARDWARE)...54 33. SORTING DESCENDING ORDER (IN TERMS OF BYTES)(SOFTWARE)...56 34. DESCENDING ORDER PROGRAMMING (HARDWARE).....57 35. DOS PROGRAMMING (SOFTWARE)...59 36. DOS PROGRAMMING (HARDWARE).....60 37. FACTORIAL OF A GIVEN NUMBER N USING RECURSIVE PROCEDURE (SOFTWARE)............................................................................................................62
II.
INTERFACING PROGRAMS:
1.PROCEDURE FOR INTERFACING .64 2.KEYBOARD INTERFACING THROUGH 8086 MICROPROCESSOR..65 3.TRAFFIC LIGHT CONTROLLER INTERFACE THROUGH 8086 MICROPROCESSOR68 4.DUAL DIGITAL TO ANALOG CONVERTER INERFACING WITH 8086 MICROPROCESSOR..70 5.REAL TIME CLOCK INTERFACE THROUGH 8086 MICROPROCESSOR.72 6.ELEVATOR INTERFACE THROUGH 8086 MICROPROCESSOR....78 7.STEPPER MOTOR INTERFACE THROUGH 8086 MICROPROCESSOR.80
III.
1.PROCEDURE FOR PROGRAMMING..83 2. ADDITION OF TWO NUMBERS (HARDWARE)...84 3. SUBTRACTION OF TWO NUMBERS (HARDWARE)...85 4. MULTIPLICATION OF TWO NUMBERS (HARDWARE).86 5. DIVISION OF TWO NUMBERS (HARDWARE).87 6. HEX TO ASCII CONVERSION(HARDWARE)...88 7. LARGEST AMONG N NUMBERS (HARDWARE)..89 8. CHECKING THE 5th BIT POSITION(HARDWARE)...90
LITAM
Page 4
Department of E.C.E
Microprocessor 8086
LITAM
Page 5
Department of E.C.E
LITAM
Page 6
Department of E.C.E
LITAM
Page 7
Micro Processors & Interfacing Lab Addition of two 16-bit numbers Start
Department of E.C.E
Stop
LITAM
Page 8
Department of E.C.E
1.ADDITION OF TWO 16-BIT NUMBERS (SOFTWARE) Aim: To write an assembly language program for the addition, Subtraction, Multiplication and Division of two 16-bit numbers in software and hardware. Apparatus: Software
TASM software PC Source code: Code segment Assume cs:code,ds:data Mov ax,data Mov ds,ax Mov ax,n1 Mov bx,n2 Add ax,bx Mov n3,ax Hlt Code ends Data segment N1 dw 0202h N2 dw 0305h N3 dw ? Data ends End
Hardware
8086 Microprocessor kit Keyboard
Input: N1= 0202h N2= 0305h Output: N3= 0507 AX= 0507 ; BX 0305
LITAM
Page 9
Department of E.C.E
LITAM
Page 10
Micro Processors & Interfacing Lab Subtraction of two 16-bit numbers Start
Department of E.C.E
Stop
LITAM
Page 11
Department of E.C.E
Output: N3=0200
LITAM
Page 12
Department of E.C.E
Input: S DS: 3000 3004 3005 3006 Output: D DS: 4000 : 22 4001 : 11 : 44, : 22, : 22, : 11
LITAM
Page 13
Micro Processors & Interfacing Lab Multiplication of two 16-bit numbers Start
Department of E.C.E
Multiply by bx
Stop
LITAM
Page 14
Department of E.C.E
LITAM
Page 15
Department of E.C.E
2000 2003 2006 2008 200A 200C 200F 2011 2013 2015 2017 2018 2019 2020 2022 Input: S DS: 3000 3001 3002 3003 Output: D DS: 4000 4001 4002 4003 : : : : : : : :
MOVW MOVW MOVB INCW MOVB INCW MOVB INCW MOVB MULW MOVW INCW INCW MOVW INT
BE 00 30 BF 00 40 8A 04 47 8A 24 47 8A 1C 47 8A 3C F7 E3 89 05 47 47 89 15 CC
04 08 04 00
LITAM
Page 16
Micro Processors & Interfacing Lab Division of two 16-bit numbers Start
Department of E.C.E
Divide by bx
Stop
LITAM
Page 17
Department of E.C.E
LITAM
Page 18
Department of E.C.E
Input: S DS: 3000 3004 3005 3006 Output: D DS: 4000 4001 4002 4003 : 00 : 02 : 02 : 02 : 08, : 08, : 03, : 03
Result: Hence the arithmetic operations addition, Subtraction, Multiplication and Division of two 16-bit numbers are performed in software and hardware.
LITAM
Page 19
Department of E.C.E
Stop
LITAM
Page 20
Department of E.C.E
Source code: Code segment Assume cs:code,ds:data Mov ax,data Mov ds,ax Mov ax,N1 Mov bx,N2 Add ax,bx AAA Mov N3,ax Hlt Code ends Data segment N1 dw 02 N2 dw 03 N3 dw ? Data ends End
Output : N3=05
LITAM
Page 21
Department of E.C.E
2000 2003 2006 2008 2009 200A 200C 200E 200F 2012 2014
MOVW MOVW MOVW INCW INCW MOVW ADDW AAA ADDW MOVW INT
BE 00 30 BF 00 40 8B 04 46 46 8B 1C 03 C3 C3 05 30 30 89 05 CC
Input: S DS: 3000 3007 3008 3009 Output: D DS: 4000 : 39 4001 : 30 : : : : 06, 00, 03, 00
LITAM
Page 22
Department of E.C.E
Stop
LITAM
Page 23
Department of E.C.E
Output: N3=0004
LITAM
Page 24
Department of E.C.E
2000 2003 2006 2008 2009 200A 200C 200E 200F 2012 2014
MOVW MOVW MOVW INCW INCW MOVW SUBW AAS ADDW MOVW INT
BE 00 30 BF 00 40 8B 04 46 46 8B 1C 2B C3 3F 05 30 30 89 05 CC
Input: S DS: 3000 3010 3011 3012 Output: : : : : 08, 00, 04, 00
LITAM
Page 25
Department of E.C.E
Stop
LITAM
Page 26
Department of E.C.E
LITAM
Page 27
Department of E.C.E
2000 2003 2006 2008 2009 200A 200C 200E 2010 2013 2015
MOVW MOVW MOVW INCW INCW MOVW MULW AAM ADDW MOVW INT
BE 00 30 BF 00 40 8B 04 46 46 8B 1C F7 E3 04 0A 05 30 30 89 05 CC
Input: S DS: 3000 3013 3014 3015 Output: D DS: 4000 : 36 4001 : 30 : : : : 03, 00, 02, 00
LITAM
Page 28
Department of E.C.E
Stop
LITAM
Page 29
Department of E.C.E
LITAM
Page 30
Department of E.C.E
2000 2003 2006 2008 2009 200A 200C 200E 2010 2013 2015
MOVW MOVW MOVW INCW INCW MOVW DIVW AAD ADDW MOVW INT
BE 00 30 BF 00 40 8B 04 46 46 8B 1C F7 F3 05 0A 05 30 30 89 05 CC
Input: S DS: 3000 3016 3017 3018 OUTPUT: : : : : 06, 00, 03, 00
D DS: 4000 : 32 4001 : 30 Result: Hence the ASCII arithmetic operations addition, Subtraction, Multiplication and Division of two 16-bit numbers are performed in software and hardware
LITAM
Page 31
Department of E.C.E
Move n1 into cx and Load effective address of array1, array2, array3 into si, bx, di
NO
LITAM
Page 32
Department of E.C.E
LITAM
Page 33
Department of E.C.E
Move n1 into cx and Load effective address of array1, array2, array3 into si, bx, di
NO
LITAM
Page 34
Department of E.C.E
Result: 0000000000
LITAM
Page 35
Department of E.C.E
Move n1 into cx and Load effective address of array1, array2, array3 into si, bx, di
NO
LITAM
Page 36
Department of E.C.E
LITAM
Page 37
Department of E.C.E
Move n1 into bl and Load effective address of array1, into si, di and move count into cx
NO
LITAM
Page 38
Department of E.C.E
Result: Hence the Multi byte arithmetic operations addition, Subtraction, Multiplication and Division are performed in software
LITAM
Page 39
Micro Processors & Interfacing Lab Packed BCD to Un packed BCD Start
Department of E.C.E
AND al with 0f
Move al result in to N2
AND bl with 0f
NO
Stop
LITAM
Page 40
Department of E.C.E
LOGICAL OPERATIONS
Aim: To write an assembly language program to perform logical operations in software and hardware. Apparatus: Software TASM software PC Hardware 8086 Microprocessor kit Keyboard
LITAM
Page 41
Department of E.C.E
LITAM
Page 42
Department of E.C.E
AND al with 0f
AND bl with 0f
LITAM
Page 43
Department of E.C.E
LITAM
Page 44
Department of E.C.E
Input: S DS: 3000 Output: D DS: 4000 : 35 4001 : 36 Result: Hence the Logical operations Packed to unpacked BCD and BCD to ASCII conversions are performed in both software and hardware : 65
LITAM
Page 45
Department of E.C.E
Move SI to al
Stop
LITAM
Page 46
Department of E.C.E
STRING OPERATIONS
Aim: To write an assembly language program to perform comparison, reversing and sorting of the given strings in software and hardware. Apparatus: Software TASM software PC Hardware 8086 Microprocessor kit Keyboard
Output: letni
LITAM
Page 47
Department of E.C.E
LITAM
Page 48
Department of E.C.E
yes
Jump to next
Stop
LITAM
Page 49
Department of E.C.E
: 0000 : 0fff
LITAM
Page 50
Department of E.C.E
ADDRESS 2000 2003 2006 2009 200A 200B 200C 200E 2011 2014 2016 2017 201A 201D 201F INPUT:
LABEL MNEMONICS MOVW MOVW MOVW CLD REP CMPSB JNE MOVW MOVW MOVW INT MOVW MOVW MOVW INT
OPCODES BE 0020 BF 00 30 B9 04 00 FC F3 A6 75 09 BF 00 50 B8 00 00 89 05 CC BF 00 50 B8 FF FF 89 05 CC
L1:
(i) S DS: 2500 : 08, 2501 : 08, 2502 : 03, 2503 : 03, S DS: 3000 3001 3002 3003 OUTPUT: (i) D DS: 5000 : FF 5001 : FF : 02, : 02, : 02, : 02
LITAM
Page 51
Department of E.C.E
Start
yes
If [SI+1] <al no
Exchange content of SI+1, al and Exchange content of SI, al ADD 01 to SI , decrement cx yes If Cx0 no decrement content of dx yes If dx0 no Stop
LITAM
Page 52
Department of E.C.E
Code segment Assume cs:code,ds:data Mov ax,data Mov ds,ax Mov dx,count-1 Again0:mov cx,dx Mov si,offset array Again1:mov al,[si] Cmp al,[si+1] Jl back Xchg [si+1],al Xchg [si],al Back:add si,01 Loop again1 Dec dx Jnz again0 Hlt Code ends Data segment Array db 53h,19h,25h,02h Count equ 04h Data ends End
Output: 02,19,25,53
LITAM
Page 53
Department of E.C.E
L3: L2:
L1:
LITAM
Page 54
Department of E.C.E
yes
If [SI+1] >al no
LITAM
Page 55
Department of E.C.E
Code segment Assume cs:code,ds:data Mov ax,data Mov ds,ax Mov dx,count-1 Again0:mov cx,dx Mov si,offset array Again1:mov al,[si] Cmp al,[si+1] JG back Xchg [si+1],al Xchg [si],al Back:add si,01 Loop again1 Dec dx Jnz again0 Hlt Code ends Data segment Array db 53h,19h,25h,02h Count equ 04h Data ends End
Output: 53,25,19,02
LITAM
Page 56
Department of E.C.E
L3: L2:
L1:
Result: Hence the String operations are performed in both software and hardware and the output is verified
LITAM
Page 57
Department of E.C.E
Load the effective address of message1 in to dx Read the string input, move content of al in to char
Stop
LITAM
Page 58
Department of E.C.E
LITAM
Page 59
Department of E.C.E
LITAM
Page 60
Department of E.C.E
If al=00
Stop
If bl=00
Stop
LITAM
Page 61
Department of E.C.E
LITAM
Page 62
Department of E.C.E
LITAM
Page 63
Department of E.C.E
INTERFACING PROCEDURE:1. For interfacing program in 8086, we should select the 3, 4, 7 pins in 8086 kit. For hardware program 3, 7 pins should select. 2. Connect RS-232 cable between CPU to 8086 Kit.
3. Select my computer\D drive\AHALYA (folder)\ESA863 (folder) \XT863 (folder)\XT863 (Window). 4. Press enter key and reset the kit. 5. For down load the program, the command is ctrl+D and enter the file name. (For example: tra863 [it is for traffic light controller]). 6. After completion of down loading the program, reset the kit.
7. Then type G 2000. 8. Then press enter key. 9. Get the output according to the interfacing kits connected.
LITAM
Page 64
Department of E.C.E
1.KEYBOARD INTERFACING Aim: To interface a keyboard to microprocessor 8086 Apparatus: Keyboard interface kit
8086 Microprocessor Trainer kit PC RS 232 Cable Power supply
Source code:
; KEYBOARD INTERFACE ; Assumes the interface is connected over J4 of trainer ; This program displays the value of the pressed key on the PC console ; in serial mode or LCD in stand-alone mode of operation. ; This program starts at 0:2000H location OUTPUT 2500AD ORG 2000H MOV AX,0000H MOV ES,AX MOV DX,0FFE6H ; Configure 8255 in Mode0 MOV AL,92H ; PortA as i/p , PortC as o/p` OUT DX,AL JMP SHORT START MES: DB 'KEY PRESSED = ',0H START: CALL FAR 0FE00:0031H ;Newline LEA DX,MES MOV AX,DX CALL FAR 0FE00:0013H ;Call for displaying the message CALL KSCAN CALL DELAY JMP SHORT START KSCAN: MOV CL,01H NEXT: MOV AL,CL MOV DX,0FFE4H OUT DX,AL MOV DX,0FFE0H IN AL,DX MOV AH,AL OR AL,AL JNZ KEYCODE CONT: ROL CL,1 CMP CL,08H JE KSCAN JMP NEXT LITAM Page 65
Micro Processors & Interfacing Lab KEYCODE:MOV BL,0H MOV AL,AH SHIFT: SHR AL,1 CMP AL,00H JZ ROW INC BL JMP SHIFT ROW: MOV AL,CL MOV CL,02H ROL AL,CL AND AL,0FBH OR AL,BL CALL FAR 0FE00:0052H RET DELAY: PUSH CX MOV CX,00H DLY: LOOP DLY POP CX RET END
Department of E.C.E
; Delay routine
LITAM
Page 66
Department of E.C.E
1 2 3 4 5 6 7 8 9 AC CE CHK != MC MR MM+ . + * / %
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 0A 0B 0C 0D 0E 0F
Result : Hence the keyboard interfacing is performed and the output is observed
LITAM
Page 67
Department of E.C.E
2. TRAFFIC LIGHT INTERFACING Aim: To interface a traffic light controller to microprocessor 8086 Apparatus: traffic light controller interface kit
8086 Microprocessor Trainer kit PC RS 232 Cable Power supply
Source code:
; TRAFFIC LIGHT CONTROLLER INTERFACE ; The interface is connected over J4 of of trainer ; Traffic system moves from one state to other after a fixed delay ; This program starts at 2000H location OUTPUT 2500AD ORG 2000H START: MOV AL,80H MOV DX,0FFE6H OUT DX,AL AGAIN: MOV SI,2038H NEXTST: MOV AL,[SI] MOV DX,0FFE0H OUT DX,AL INC SI ADD DX,2 MOV AL,[SI] OUT DX,AL INC SI ADD DX,2 MOV AL,[SI] OUT DX,AL INC SI CALL DELAY CMP SI,2056H JNZ NEXTST JMP AGAIN DELAY: MOV CX,0FFH DLY5: PUSH CX MOV CX,03FFH DLY10: NOP LOOP DLY10 POP CX LOOP DLY5 RET LITAM
; Initialisation of 8255 Mode 0 ; All ports as o/p ports ; Table of port values
; PortA value
; PortB value
; PortC value ; Calling Delay routine ; Checking for the end of the data values
; Delay routine
Page 68
Micro Processors & Interfacing Lab ORG 2038H PORTVALUES: DB 10H,81H,7AH ; State 1 DB 44H,44H,0F0H ; All ambers ON DB 08H,11H,0E5H ; State 2 DB 44H,44H,0F0H ; All ambers ON DB 81H,10H,0DAH ; State 3 DB 44H,44H,0F0H ; All ambers ON DB 11H,08H,0B5H ; State 4 DB 44H,44H,0F0H ; All ambers ON DB 88H,88H,00H ; State 5 DB 44H,44H,0F0H ; All ambers ON DB 00H ; Dummy
Department of E.C.E
Result: Hence, the traffic light controller interfacing is performed and the output is observed.
LITAM
Page 69
Department of E.C.E
3. DIGITAL TO ANALOG CONVERTER INTERFACING Aim: To interface a digital to analog converter to microprocessor 8086 Apparatus: digital to analog converter interface kit
8086 Microprocessor Trainer kit PC RS 232 Cable Power supply
Source code:
; Assume the interface is connected over J4 of trainer ; This program generates a Square or Triangular wave at Xout or Yout ; The program can be executed in Stand alone or Serial mode ; Execute the program from memory location 2000H OUTPUT 2500AD ORG 2000H MOV AX,0000H MOV CS,AX MOV ES,AX MOV DX,0FFE6H ;Initialise all 8255 MOV AL,80H ;ports as O/P ports OUT DX,AL CALL FAR 0FE00:01EDH ;newline routine JMP SHORT START ;display message string MES: DB 0AH, 0DH, 'DUAL DAC INTERFACE ' DB 0AH, 0DH, 'S - SQUARE WAVE' DB 0AH, 0DH, 'T - TRIAGLUAR WAVE', 0H START: LEA DX,MES ;display message on LCD MOV AX,DX ;or console CALL FAR 0FE00:0013H GETKEY: CALL FAR 0FE00:00A9H ;wait fo user entry CMP AL,53H ;if S,jump to square JE SQUARE ;wave routine CMP AL,54H ;if T, jump to triangle JE TRIANGLE ;wave routine JMP SHORT GETKEY ;wait for valid key ;Triangular wave generation routine TRIANGLE: CALL FAR 0FE00:0031H RPT1: MOV CX,0FFH ;set count MOV AL,00H ;start from 0 UP: INC AL ;increment data for LITAM Page 70
Micro Processors & Interfacing Lab MOV DX,0FFE0H ;+ive going slope and OUT DX,AL ;output at port A & B MOV DX,0FFE2H OUT DX,AL LOOP UP MOV CX,FFH ;set count MOV AX,CX ;start from FFh DOWN: DEC AL ;decrement data for MOV DX,0FFE0H ;-ive going slope at OUT DX,AL ;port A & B MOV DX,0FFE2H OUT DX,AL LOOP DOWN JMP SHORT RPT1 ;repeat continuously SQUARE: CALL FAR 0FE00:0031H RPT2: MOV AL,0FFH ;O/P FFh at ports MOV DX,0FFE0H OUT DX,AL MOV DX,0FFE2H OUT DX,AL MOV CX,FFH ;delay DLY1: LOOP DLY1 MOV AL,00H ;O/P 0 at ports MOV DX,0FFE0H OUT DX,AL MOV DX,0FFE2H OUT DX,AL MOV CX,FFH DLY2: LOOP DLY2 ;delay JMP SHORT RPT2 ;repeat continuously END
Department of E.C.E
Result: Hence, the digital to analog converter interfacing is performed and the output is observed on CRO.
LITAM
Page 71
Department of E.C.E
4.REAL TIME CLOCK INTERFACING Aim: To interface a real time clock to microprocessor 8086 Apparatus: real time clock interface kit
8086 Microprocessor Trainer kit PC RS 232 Cable Power supply
Source code:
SET RTC: ; Assume the interface is connected over J4 of the trainer ; this program is to set the rtc parametrs ; For RTC interface first execute this program from 2400H and then ; execute read rtc program from 2000H ; this program can be in serial mode only OUTPUT 2500AD ORG 2400H MOV AX,0000H MOV ES,AX MOV BL,0H MOV SI,2300H MOV DX,0FFE6H MOV AL,80H OUT DX,AL MOV DX,FFE4H MOV AL,10H OUT DX,AL MOV AL,28H HDLY: DEC AL JNE HDLY
;set address counter ;initialise pointer ;initialise all 8255 ports ;as output ;hold line high
SET: MOV DX,0FFE2H ;output address to RTC MOV AL,BL OUT DX,AL NOP NOP MOV DX,0FFE0H ;get rtc parameter from MOV AL,[SI] ;memory and output OUT DX,AL ;to rtc MOV DX,0FFE4H ;make write and hold state MOV AL,50H ;high OUT DX,AL NOP NOP MOV AL,10H ;make write signal low LITAM
Page 72
Micro Processors & Interfacing Lab OUT DX,AL ;keeping hold high INC BL ;increment address count CMP BL,0DH ;all parameters over? JE STOP ;if yes , stop INC SI ;else point to next parameter JMP SHORT SET ;and repeat STOP: MOV AL,00H OUT DX,AL INT 3 END READ RTC: ; This program continuously reads RTC values and output the same ; on the PC console ; first execute the setrtc program then execute this program ; to get rtc values. ; This program can be in Serial mode only OUTPUT 2500AD ORG 2000H MOV AX,0000H MOV CS,AX MOV ES,AX MOV DS,AX JMP START ;Display Message Strings MES: DB 0AH,0AH,0DH,48H,52H,53H,20H,20H,20H,20H DB 4DH,49H,4EH,20H,20H,20H,20H,53H,45H,43H DB 20H,20H,20H,20H,41H,2FH,50H,20H,20H,20H DB 20H,20H,44H,41H,59H,20H,20H,20H,20H,20H DB 44H,44H,2DH,4DH,4DH,2DH,59H,59H LINE: DB 0AH,0DH,2DH,2DH,2DH,20H,20H,20H,20H,2DH DB 2DH,2DH,20H,20H,20H,20H,2DH,2DH,2DH,20H DB 20H,20H,20H,2DH,2DH,2DH,20H,20H,20H,20H DB 20H,2DH,2DH,2DH,20H,20H,20H,20H,20H,2DH DB 2DH,2DH,2DH,2DH,2DH,2DH,2DH,0AH,0DH,00H SPACE: DB 20H,20H,20H,20H,20H,00H HYP: DB 2DH,00H AM: DB 41H,4DH,20H,00H,00H PM: DB 50H,4DH,20H,00H LITAM ;hold and write low
Department of E.C.E
Page 73
Micro Processors & Interfacing Lab WEEK: DB 53H,55H,4EH,00H DB 4DH,4FH,4EH,00H DB 54H,55H,45H,00H DB 57H,45H,44H,00H DB 54H,48H,52H,00H DB 46H,52H,49H,00H DB 53H,41H,54H,00H DB 20H,20H,20H,00H BAK: DB 08H,00H NEW: DB 0DH,00H START: MOV SI,2300H ;initialise pointer CALL READ ;get rtc values MOV DX,0FFE6H ;initialise 8255 port A MOV AL,90H ;as I/P , port B as O/P OUT DX,AL CS: LEA DX,MES ;display message for rtc MOV SI,DX ;parameters CALL FAR 0FE00:01AFH ;Display message and line REPT: LEA DX,NEW MOV SI,DX CALL FAR 0FE00:01AFH MOV BX,2304H ;get hours value CALL DAT AND AL,3FH CALL FAR 0FE00:0052H ;Display Hours LEA DX,SPACE MOV SI,DX CALL FAR 0FE00:01AFH MOV BX,2302H ;get min. value CALL DAT CALL FAR 0FE00:0052H ;Display Minutes MOV SI,DX CALL FAR 0FE00:01AFH MOV BX,2300H ;get seconds CALL DAT CALL FAR 0FE00:0052H ;Display seconds MOV SI,DX CALL FAR 0FE00:01AFH MOV BX,2305H ;check for 12/24 MOV AL,[BX] ;hrs format AND AL,08H LITAM
Department of E.C.E
Page 74
Micro Processors & Interfacing Lab JNE DD MOV AL,[BX] ;check for AM or PM AND AL,04H ;if bit2=1 display PM JNE PM1 LEA DX,AM MOV SI,DX CALL FAR 0FE00:01AFH JMP SHORT MM PM1: LEA DX,PM ;routine to display PM MOV SI,DX CALL FAR 0FE00:01AFH JMP SHORT MM DD: LEA DX,HYP ;if 24 hour format MOV SI,DX ;display PM CALL FAR 0FE00:01AFH MOV SI,DX CALL FAR 0FE00:01AFH MOV SI,DX CALL FAR 0FE00:01AFH MM: LEA DX,SPACE MOV SI,DX CALL FAR 0FE00:01AFH MOV AX,00H MOV BX,2306H ;get day of week MOV AL,[BX] AND AL,07H LEA DX,WEEK ;display day of week CHK: CMP AL,00H JE DISP MOV CX,04H INCR: INC DX LOOP INCR DEC AX JMP SHORT CHK DISP: MOV SI,DX CALL FAR 0FE00:01AFH LEA DX,SPACE MOV SI,DX CALL FAR 0FE00:01AFH MOV BX,2307H ;get date value LITAM
Department of E.C.E
Page 75
Micro Processors & Interfacing Lab CALL DAT CALL FAR 0FE00:0052H ;display date LEA DX,HYP MOV SI,DX CALL FAR 0FE00:01AFH MOV BX,2309H ;get month value CALL DAT CALL FAR 0FE00:0052H ;display month MOV SI,DX CALL FAR 0FE00:01AFH MOV BX,230BH ;get year value CALL DAT CALL FAR 0FE00:0052H ;display year CALL REWRT ;check for update seconds CLEAR: PUSH CX MOV CX,0029H BACK: LEA DX,BAK MOV SI,DX CALL FAR 0FE00:01AFH LOOP BACK POP CX JMP REPT REWRT: MOV BX,2300H MOV AL,[BX] PUSH AX MOV SI,2300H CALL READ POP AX MOV BX,2300H CMP AL,[BX] JE REWRT RET READ: MOV DX,FFE4H MOV AL,10H OUT DX,AL MOV AL,28H HDLY: DEC AL JNE HDLY MOV AL,30H OUT DX,AL LITAM ;routine to check updating ;of seconds value in ;location 2300H ;repeat read and display ;operation ;routine to clear old values
Department of E.C.E
Page 76
Micro Processors & Interfacing Lab MOV CL,00H ;clear rtc reg. counter NEXT: MOV DX,FFE2H ;output address to rtc MOV AL,CL OUT DX,AL MOV AL,04H ;read access time delay RDLY: DEC AL JNE RDLY MOV DX,FFE0H ;read data from rtc IN AL,DX AND AL,0FH ;AND with 0Fh and store MOV [SI],AL ;in memory INC SI ;increment address and rtc reg. INC CL CMP CL,0DH ;are all reg. addressed? JNE NEXT ;no, get next parameter MOV DX,0FFE4H ;else make hold and read lines low MOV AL,00H OUT DX,AL RET DAT: MOV AL,[BX] ;routine to club the lower
Department of E.C.E
AND AL,0FH ;nibbles of the memory MOV AH,AL ;locations INC BX MOV AL,[BX] AND AL,0FH ROL AL,1 ROL AL,1 ROL AL,1 ROL AL,1 OR AL,AH RET END CALL FAR 0FE00:0052H
Result: Hence, the real time clock interfacing is performed and the output is observed. .
LITAM
Page 77
Department of E.C.E
5.ELEVATOR INTERFACING Aim: To interface a Elevator to microprocessor 8086 Apparatus: Elevator interface kit
8086 Microprocessor Trainer kit PC RS 232 Cable Power supply
Source code:
; ELEVATOR INTERFACE ; Assumes the interface is connected over J4 of trainer ; The elvator will work in both Upward and Downward directions ; This program starts at 2000H location OUTPUT 2500AD ORG 2000H MOV DX,0FFE6H ; Configure 8255 MOV AL,82H ; PortA as o/p,PortB as i/p OUT DX,AL XOR AX,AX ; Initial stage is ground floor LOOP1: MOV AL,AH OR AL,0F0H MOV DX,0FFE0H OUT DX,AL MOV DX,0FFE2H LOOP2: IN AL,DX AND AL,0FH CMP AL,0FH JZ LOOP2 ; AH is the floor position
; Get request
MOV SI,00H FINDF: ROR AL,01H JNC FOUND ;If requested floor found INC SI JMP SHORT FINDF ; Otherwise,continue search FOUND: MOV AL,[SI]2100H ; Get requesting floor code CMP AL,AH ; Compare with current floor JA GOUP ; If it need to go UP JB GODN ; If it need to g DOWN CLEAR: MOV AL,[SI]2104H MOV DX,0FFE0H OUT DX,AL LITAM
Page 78
Micro Processors & Interfacing Lab JMP SHORT LOOP1 GOUP: CALL DELAY INC AH ; Elevator goes UP by one LED XCHG AL,AH OR AL,0F0H MOV DX,0FFE0H OUT DX,AL AND AL,0FH XCHG AH,AL CMP AL,AH JNZ GOUP JMP SHORT CLEAR GODN: CALL DELAY DEC AH ; Elevator goes DOWN by one LED XCHG AH,AL OR AL,0F0H MOV DX,0FFE0H OUT DX,AL AND AL,0FH XCHG AL,AH CMP AL,AH JNZ GODN JMP SHORT CLEAR DELAY: MOV CX,0800H ; Delay between glow of successive LEDs HR1: LOOP HR1 HR2: LOOP HR2 RET
Department of E.C.E
ORG 2100H VALUE1: DB 00H,03H,06H,09H ; Position codes for floors VALUE2: DB 0E0H,0D3H,0B6H,79H ; clear code+position dode for all floors
Result: Hence, the elevator interfacing is performed and the output is observed.
LITAM
Page 79
Department of E.C.E
6.STEPPER MOTOR INTERFACING Aim: To interface a Stepper motor to microprocessor 8086 Apparatus: Stepper motor interface kit
8086 Microprocessor Trainer kit PC RS 232 Cable Power supply
Source code:
; Assume the interface is connected over J4 of the trainer. ; This program illustrates the control of direction of ; rotation of the Stepper motor depending upon user choice. ; The program executes in a continuous loop. ; The program can be executed in STAND-ALONE MODE or SERIAL ; MODE of operation. ; The program starts at memory location 0:2000H ; Please refer ESA 86/88E user's manual for mnemonic ; syntax suitable to trainer OUTPUT 2500AD ORG 2000H MOV AX,0000H ;Initialise Segment MOV CS,AX MOV ES,AX ;Registers MOV DX,0FFE6H ;Initialise MOV AL,80H ;all 8255 Ports as o/p OUT DX,AL CALL FAR 0FE00:01EDH JMP SHORT START ; Display Message String MES1: DB 0AH,0DH,'ENTER DIRECTION' DB 0AH,0DH,'A-ANTICLOCKWISE C-CLOCKWISE',00H LEA DX,@MES1 ;Display message MOV AX,DX ;on LCD or Console CALL FAR 0FE00:0013H CALL FAR 0FE00:00A9H ;Wait for user entry CMP AL,41H ;If key ='A', JE ANTI ;rotate anti-clockwise CMP AL,43H ;If key = 'C' JE CLO JMP GET LITAM ;rotate clockwise ;Accept valid key only Page 80
START:
GET:
Micro Processors & Interfacing Lab ; Routine for Clockwise rotation of motor CLO: R1: CALL COMMON OUT DX,AL CALL DELAY ;Introduce delay RCR AL,1 ;Rotate bits in JMP SHORT R1 ;data byte right & repeat
Department of E.C.E
; Routine for Anti-clockwise rotation of motor ANTI: R2: CALL COMMON OUT DX,AL CALL DELAY RCL AL,1 ;Rotate bits JMP SHORT R2 ;left & repeat
COMMON: CALL FAR 0FE00:0031H CALL FAR 0FE00:00H MOV AL,11H ;Output value MOV DX,0FFE0H ;to Port A RET DELAY: MOV CX,800H SS: LOOP SS RET END ;Delay routine
Result: Hence, the Stepper motor interfacing is performed and the output is observed.
LITAM
Page 81
Department of E.C.E
LITAM
Page 82
Department of E.C.E
LITAM
Page 83
Department of E.C.E
ADDRESS 8000 8003 8004 8006 8009 800A 800C 800F 8010
LABEL
OPERANDS DPTR,#9000 A,@DPTR 0F0,A DPTR,#9001 A,@DPTR A,0F0 DPTR,#9002 @DPTR,A 8010 (L1)
OPCODES 90 90 00 E0 F5 F0 90 90 01 E0 25 F0 90 90 02 F0 8D F3
L1:
SJMP
05 03
LITAM
Page 84
Department of E.C.E
LITAM
Page 85
Department of E.C.E
LITAM
Page 86
Department of E.C.E
Result: Hence the arithmetic addition, subtraction, multiplication and division operations were
performed.
LITAM
Page 87
Department of E.C.E
MD 9000 05 MD 9000 A
MD 9001 35 MD 9001 41
LITAM
Page 88
Department of E.C.E
LITAM
Page 89
Department of E.C.E
ADDRESS 8000 8003 8004 8005 8006 8007 8008 800A 800C 800D 8010 8012 8013
LABEL
MNEMONICS MOV MOVX INC RLC RLC RLC JC MOV MOVX LJMP
OPERANDS DPTR,#8900 A,@DPTR DPTR A A A 8010 (L1) A,#0FF @DPTR,A 0030 A,#00 @DPTR,A 0
OPCODES 90 89 00 E0 A3 33 33 33 40 06 74 FF F0 02 00 63 74 00 F0 02 00 00
L1:
Input: 1)MD 8900 05 2)MD 8900 25 Output: G 8000 1)MD 8901 FF 2)MD 8901 00 Result: Hence the logical operations on 8051 microcontroller were performed and output is verified.
LITAM
Page 90