Microprocessor and Micro Controller

24
Microprocessor & Microcontroller Laboratory Work Book LABORATORY WORK BOOK Microprocessor and Microcontroller Department of Electronic Engineering Lahore College for Women University, Lahore

Transcript of Microprocessor and Micro Controller

Page 1: Microprocessor and Micro Controller

Microprocessor & Microcontroller Laboratory Work Book

LABORATORY WORK BOOK

Microprocessor and Microcontroller

Department of Electronic Engineering

Lahore College for Women University, Lahore

Page 2: Microprocessor and Micro Controller

Microprocessor & Microcontroller Laboratory Work Book

Experiment

No

Experiments Description

Microprocessor

(Assembly language programming for 8086/8088)

1.

Write a program to: a). Prompt the user. b). Read first, Middle and last initials of a person’s name. c). Display them down the left margin.

2. Write a program which prompt the user to enter an upper case letter and the next line displays a message with the letter in lower case.

3.

(a). Replace the number in AX by its absolute value.

(b). Suppose AL and BL contains extended ASCII characters. Display the one that comes first in the character sequence. (c). If AL contains 1 or 3, display “O”. if AL contains 2 or 4, display “E”.

4.

(a). Read a character, and if its an uppercase letter, displays it. (b). Write a controlled loop to display a row of 80 stars. (c). Write some code to count the number of characters in an input line

Microcontroller

(Assembly language programming for 8051)

5.

(a). Write a program to load the accumulator with value 55H and compliment the accumulator 100 times. (b). Write a program to clear the accumulator and then add 3 to the accumulator 10 times

6. Write a code that toggles the pin of Port0, 1 and 2 after sometimes delay.

7.

a). Write a program to perform the following. 1. Keep monitoring P1.2 until it becomes high. 2. When P1.2 becomes high write value 45H on P0. 3. Sent a high to low pulse to P2.3

b). A switch is connected to P1.7. Write a program to check the status of switch and perform the following.

1. if switch = 0, send letter “N” to P2 2. if switch = 1, send letter “Y” to P2.

8.

a). Write a program which creates a square wave of 50% duty cycle on P1.5. Use Timer 0 to generate the time delay of Mode 1. b). Write a program which generates a square wave on pin P1.0. Use Timer 1 in Mode 2.

Page 3: Microprocessor and Micro Controller

Microprocessor & Microcontroller Laboratory Work Book

9.

a). Write a program for the 8051 to transfer letter “A” serially, continuously b). Write a program to transfer the message “YES” serially. Do this continuously c). Program the 8051 to receive bytes of data serially, and put them in P1.

Microcontroller (Hardware Projects using 8051)

10.

Single Blinking LED

11. LED Patterns

12. Driving AC Load

13. Driving DC Load

14. Sounding Buzzer

Page 4: Microprocessor and Micro Controller

Microprocessor & Microcontroller Laboratory Work Book

Experiment 1 Write a program to:

a). Prompt the user.

b). Read first, Middle and last initials of a person’s name.

c). Display them down the left margin.

CODE:

. MODEL SMALL

. STACK 100H

. DATA MSG1 DB ‘Enter First, Middle and Last initials: $’ MSG2 DB ‘First, Middle and Last initials: $’ CRLF DB ‘0DH 0AH $’ . CODE MAIN PROC LEA 0X, MSG1 MOV AH, 9 INT 21H LEA DX, CRLF MOV AH, 9 INT 21H MOV AH, 1 INT 21H MOV BH, AL LEA DX, CRLF MOV AH, 9 INT 21H MOV AX, 1 INT 21H MOV BL, AL LEA DX, CRLF MOV AH, 9 INT 21H MOV AH, 1 INT 21H MOV CL, AL LEA DX, CRLF MOV AH, 9 INT 21H LEA DX, MSG2 MOV AH, 9 INT 21H

Page 5: Microprocessor and Micro Controller

Microprocessor & Microcontroller Laboratory Work Book

MOV AH, 2 MOV DL, BH INT 21H MOV DL, CL INT 21H LEA DX, CRLF MOV AH, 9 INT 21H MOV AH, 4CH INT 21H MAIN ENDP END MAIN

Page 6: Microprocessor and Micro Controller

Microprocessor & Microcontroller Laboratory Work Book

Experiment 2

Write a program which prompt the user to enter an upper case letter

and the next line displays a message with the letter in lower case.

.MODEL SMALL .STACK 100H .DATA CR EQU ODH LF EQU OAH MSG 1 DB ‘Enter an uppercase letter: $’ MSG 2 DB ODH, OAH, ’In lower case letter it is:’ CHAR DB? , ‘$’ .CODE MAIN PROC MOV AX,@DATA MOV DS, AX LEA DX, MSG 1 MOV AH, 9 INT 21 H MOV AH, 1 INT 21H ADD AL, 20H MOV CHAR, AL INT 21H MOV AH, 4CH INT 21H END MAIN

Page 7: Microprocessor and Micro Controller

Microprocessor & Microcontroller Laboratory Work Book

Experiment 3 (a). Replace the number in AX by its absolute value.

(b). Suppose AL and BL contains extended ASCII characters. Display the one that

comes first in the character sequence.

(c). If AL contains 1 or 3, display “O”. if AL contains 2 or 4, display “E”.

(a).

CMP AX, 0 JNL END_IF NEG AX

END_IF

(b).

MOV AH, 2 CMP AL, BL JNBE ELSE

MOV DL, AL JMP DISPLAY

ELSE: MOV DL, BL DISPLAY: INT 21 H END_IF:

(c ).

CMP AL, 1 JE ODD

CMP AL, 3 JE ODD CMP AL, 2

JE EVEN CMP AL, 4 JE EVEN JMP END_CASE

ODD: MOV DL, O JMP DISPLAY

Page 8: Microprocessor and Micro Controller

Microprocessor & Microcontroller Laboratory Work Book

EVEN: MOV DL, E JMP DISPLAY DISPLAY: MOV AH, 2 INT 21H END_CASE

Page 9: Microprocessor and Micro Controller

Microprocessor & Microcontroller Laboratory Work Book

Experiment 4 (a). Read a character, and if its an uppercase letter, displays it.

(b). Write a controlled loop to display a row of 80 stars.

(c). Write some code to count the number of characters in an input line

(a). MOV AH, 1 INT 21H CMP AL,’A’ JNGE END_IF CMP AL,’Z’ JNLE END_IF MOV DL, AL MOV AH, 2 INT 21H END_IF

(b). MOV CX, 80; MOV AH, 2; MOV DL, ‘*’ TOP: INT 21H; JCXZ SKIP; LOOP TOP; SKIP: END

(c).

MOV DX, 0 MOV AH, 1 INT 21H WHILE_: CMP AL, ODH JE END_WHILE

Page 10: Microprocessor and Micro Controller

Microprocessor & Microcontroller Laboratory Work Book

INC DX INT 21H JMP WHILE_ END_WHILE:

Page 11: Microprocessor and Micro Controller

Microprocessor & Microcontroller Laboratory Work Book

Experiment 5

(a). Write a program to load the accumulator with value 55H and

compliment the accumulator 100 times.

(b). Write a program to clear the accumulator and then add 3 to the

accumulator 10 times (a). ORG 0H MOV A, #55H MOV R3, #10H NEXT: MOV R2, #70 AGAIN: CPL A

DJNZ R2, AGAIN DJNZ R3, NEXT

END (b). ORG 0H

MOV A, #0H MOV R2, #10

NEXT: ADD A, #3H DJNZ R2, NEXT END

Page 12: Microprocessor and Micro Controller

Microprocessor & Microcontroller Laboratory Work Book

Experiment 6

Write a code that toggles the pin of Port0, 1 and 2 after sometimes

delay.

ORG OH BACK: MOV A, #55H MOV P0, A MOV P1, A MOV P2, A ACALL DELAY

MOV A, #0AAH MOV P0, A MOV P1, A MOV P2, A ACALL DELAY SJMP BACK DELAY: MOV R5, #10 H2: MOV R4, #20 H1: DJNZ R4, #H1 DJNZ R5, #H2 RET END

Page 13: Microprocessor and Micro Controller

Microprocessor & Microcontroller Laboratory Work Book

Experiment 7

a). Write a program to perform the following.

4. Keep monitoring P1.2 until it becomes high.

5. When P1.2 becomes high write value 45H on P0.

6. Sent a high to low pulse to P2.3

b).

A switch is connected to P1.7. Write a program to check the status of

switch and perform the following.

3. if switch = 0, send letter “N” to P2 4. if switch = 1, send letter “Y” to P2.

a). ORG 0H

SETB P1.2 MOV A, #45H

AGAIN: JNB P1.2, AGAIN

MOV P0, A SETB P2.3 CLR P2.3

END

b). ORG 0H

SETB P1.7 JNB P1.7, AGAIN JB P1.7, BACK

AGAIN: MOV P2, ‘N’ BACK: MOV P2, ‘Y’ END

Page 14: Microprocessor and Micro Controller

Microprocessor & Microcontroller Laboratory Work Book

Experiment 8

a). Write a program which creates a square wave of 50% duty cycle on

P1.5. Use Timer 0 to generate the time delay of Mode 1.

b). Write a program which generates a square wave on pin P1.0. Use

Timer 1 in Mode 2.

a). ORG 0H

MOV TMOD, #0F2H HERE: MOV TL0, #0F2H MOV TH0, #0FFH

CPL P1.5 ACALL DELAY SJMP HERE DELAY: SETB TR0 AGAIN: JNB TF0, AGAIN CLR TR0 CLR TF0 RET END

b). ORG 0H

MOV TMOD, #20H MOV TH1, #5 SETB TR1

BACK: JNB TF1, BACK

CPL P1.0 CLR TF1 SJMP BACK

END

Page 15: Microprocessor and Micro Controller

Microprocessor & Microcontroller Laboratory Work Book

Experiment 9

a). Write a program for the 8051 to transfer letter “A” serially, continuously

b). Write a program to transfer the message “YES” serially. Do this continuously

c). Program the 8051 to receive bytes of data serially, and put them in P1.

a). MOV TMOD, #20H

MOV TH1, #-6 MOV SCON, #50H SETB TR1 AGAIN: MOV SBUF, # “A” HERE: JNB T1, HERE

CLR TI SJMP AGAIN

b). MOV TMOD, #20H MOV TH1, #-3 MOV SCON, #50H SETB TR1

AGAIN: MOV A, # “Y” ACALL TRANS MOV A, # “E” ACALL TRANS

MOV A, # “S” ACALL TRANS SJMP AGAIN TRANS: MOV SBUF, A HERE: JNB TI, HERE CLR TI RET

c). MOV TMOD, #20H

MOV TH1, #-6 MOV SCON, #50H SETB TR1 HERE: JNB RI, HERE MOV A, SBUF MOV P1, A CLR RI SJMP HERE

Page 16: Microprocessor and Micro Controller

Microprocessor & Microcontroller Laboratory Work Book

Experiment 10

Single Blinking LED

8 × Green LEDs are connected to P0 of the training board through a darlington IC ULN2803. For further hardware details, please refer to Page 11,12 of 8051ETK User Manual

Code: /******************************************************************/ /* PROJECTS: Blinking LED */ /* */ /* OBJECTIVE: */ /* This project toggles the LED connected at Port P0.0 */ /* with approximate delay of 1 second. */ /* */ /* COPYRIGHTS: 8051 TRAINING KIT Team - All rights reserved - 2007 */ /* */ /******************************************************************/ #include <AT89x51.h> void delay (void); sbit LED =P0^0; void main (void) { P0=0x00; //Clearing Port0 for (;;) { LED=0; delay (); LED=1; delay (); } } void delay (void) { unsigned int y; for(y=0; y<33000; y++); }

Page 17: Microprocessor and Micro Controller

Microprocessor & Microcontroller Laboratory Work Book

Experiment 11

LED Patterns

8 × Green LEDs are connected to P0 of the training board through a darlington IC ULN2803. For further hardware details and connections, please refer to Page 11, 12 of 8051ETK User Manual

Code: /******************************************************************/ /* PROJECTS: LED Pattern */ /* */ /* OBJECTIVE: */ /* The led's on Port 0 glow in an different fashions. furthrer Random LED patterns can also be */ /* generated in the same way. */ /* */ /* COPYRIGHTS: 8051 TRAINING KIT Team - All rights reserved - 2007 */ /* */ /******************************************************************/ #include <AT89x51.h> void delay(void); void main(void) { P0 = 0; for(;;) { P0 = 0x01;//0000 0001 delay(); P0 = 0x02; delay();P0 = 0x04; delay();P0 = 0x08; delay();P0 = 0x10;//0001 0000 delay();P0 = 0x20;// 0010 0000 delay();P0 = 0x40; delay();P0 = 0x80; delay(); P0=0xff;delay();P0=0x00;delay(); P0=0xff;delay();P0=0x00;delay(); /* reverse*/ P0 = 0x80; delay(); P0 = 0x40;

Page 18: Microprocessor and Micro Controller

Microprocessor & Microcontroller Laboratory Work Book

delay();P0 = 0x20; delay();P0 = 0x10; delay();P0 = 0x08; delay();P0 = 0x04; delay();P0 = 0x02; delay();P0 = 0x01; delay(); P0=0xff;delay();P0=0x00;delay(); P0=0xff;delay();P0=0x00;delay(); } } void delay(void) { unsigned int y; for(y=0;y<30000;y++); }

Page 19: Microprocessor and Micro Controller

Microprocessor & Microcontroller Laboratory Work Book

Experiment 12

Driving AC Load

220V AC can also be controller (Switched ON and OFF) through Microcontroller using a Traic interface circuit (Consisting of BT138 Triac and MOC3041 AC optocoupler) Hardware connections on page 19 of 8051ETK User Manual A red indicator LED is also connected. The connections with the blue colour terminal connector should be as in fig below.

MCTDK Board

1

2

3

Connector # 1

AC Out

AC BULBAC BULB

TRIAC CONNECTIONS

Code:

/******************************************************************/ /* PROJECTS: Switching ON/OFF AC Load */ /* */ /* OBJECTIVE: */ /* This project toggles the AC Load connected at Port P2.0 */ /* of the microcontroller through some interface cct. */ /* */ /* COPYRIGHTS: 8051 TRAINING KIT Team - All rights reserved - 2007 */

Page 20: Microprocessor and Micro Controller

Microprocessor & Microcontroller Laboratory Work Book

/* */ /******************************************************************/ #include <AT89x51.h> void delay (void); sbit Bulb =P2^0; void main (void) { for (;;) { Bulb=0; // bulb gets OFF delay (); Bulb=1; //Bulb is OFF delay (); } } void delay (void) { unsigned int y; for(y=0; y<33000; y++); }

Page 21: Microprocessor and Micro Controller

Microprocessor & Microcontroller Laboratory Work Book

Experiment 13

Driving DC Load

DC Load up to 30V, 1 Amp can also be controller (Switched ON and OFF) through microcontroller using a darlington IC. An optocoupler is also connected in between for safety purpose. Hardware connections on page 19, 20 of 8051ETK User Manual An Orange indicator LED is also connected. The connections with the blue colour terminal connector should be as in fig below.

Code: /******************************************************************/ /* PROJECTS: Switching ON/OFF DC Load */ /* */ /* OBJECTIVE: */ /* This project toggles the DC Load connected to Port P2.1 */ /* of the microcontroller through some interface cct. */ /* */

Page 22: Microprocessor and Micro Controller

Microprocessor & Microcontroller Laboratory Work Book

/* COPYRIGHTS: 8051 TRAINING KIT Team - All rights reserved - 2007 */ /* */ /******************************************************************/ #include <AT89x51.h> void delay (void); sbit FAN =P2^1; void main (void) { for (;;) { FAN=0; // Fan gets OFF delay (); FAN=1; //Fan is OFF delay (); } } void delay (void) { unsigned int y; for(y=0; y<33000; y++); }

Page 23: Microprocessor and Micro Controller

Microprocessor & Microcontroller Laboratory Work Book

Experiment 14

Sounding Buzzer

A 5-12V buzzer is connected to P3.5 (T1) of the microcontroller. The buzzer can be sounded manually through a push button T1(near buzzer) or through software by writing 0 on the said port. Please refer to page 23, 24 for hardware connection.

Code: /******************************************************************/ /* PROJECTS: Buzzer tone */ /* */ /* OBJECTIVE: */ /* This project sounds buzzer connected at Port P3.5 of uC */ /* */ /* COPYRIGHTS: 8051 TRAINING KIT Team - All rights reserved - 2007 */ /* */ /******************************************************************/ #include <AT89x51.h> void delay (void); sbit Buzzer = P3^5; void main (void) { for (;;) { Buzzer=0; delay (); Buzzer=1; delay (); } } void delay (void) { unsigned int y; for(y=0; y<33000; y++); }

Page 24: Microprocessor and Micro Controller

Microprocessor & Microcontroller Laboratory Work Book