8051 lab programs

Download 8051 Lab Programs

If you can't read please download the document

Upload: archankumarturaga

Post on 12-Jan-2016

278 views

Category:

Documents


3 download

DESCRIPTION

8051 Lab Manual

TRANSCRIPT

PROGRAM TO TEST I/O PORTS OF 8051 :

C:0x0000 7480 MOV A,#P0(0x80)C:0x0002 90E803 MOV DPTR,#0xE803C:0x0005 F0 MOVX @DPTR,ASTART:C:0x0006 7400 MOV A,#0x00C:0x0008 90E800 MOV DPTR,#0xE800LOOP:C:0x000B F0 MOVX @DPTR,AC:0x000C 04 INC AC:0x000D B4FFFB CJNE A,#0xFF,LOOP(C:000B)C:0x0010 020006 LJMP START(C:0006)

PROGRAM TO INTERFACE STEPPER MOTOR TO 8051 :

C:0x0000 7480 MOV A,#0x80C:0x0002 90E803 MOV DPTR,#0xE803C:0x0005 F0 MOVX @DPTR,ALOOP:C:0x0006 7488 MOV A,#0x88C:0x0008 90E800 MOV DPTR,#0xE800C:0x000B F0 MOVX @DPTR,AC:0x000C C0E0 PUSH ACC(0xE0)C:0x000E 120016 LCALL DELAY(C:0016)C:0x0011 D0E0 POP ACC(0xE0)C:0x0013 23 RL AC:0x0014 80F0 SJMP LOOP(C:0006)

DELAY:C:0x0016 780F MOV R0,#0x0FLOOP1:C:0x0018 79FF MOV R1,#0xFFLOOP2:C:0x001A D9FE DJNZ R1,LOOP2(C:001A)C:0x001C D8FA DJNZ R0,LOOP1(C:0018)

Program to interface DAC to 8051 :

Program to generate square wave using DAC :

C:0x0000 90E803MOV DPTR,#0xE803C:0x0003 7480 MOV A,#0x80C:0x0005 F0 MOVX @DPTR,AC:0x0006 90E800 MOV DPTR,#0xE800START:C:0x0009 740F MOV A,#0x0FC:0x000B F0 MOVX @DPTR,AC:0x000C 7400 MOV A,#0x00C:0x000E F0 MOVX @DPTR,AC:0x000F 020009 LJMP START(C:0009)

OUTPUT:

PROGRAM TO GENERATE TRIANGULAR WAVE USING 8051

C:0x0000 7480 MOV A,#P0(0x80)C:0x0002 90E803 MOV DPTR,#0xE803C:0x0005 F0 MOVX @DPTR,ASTART:C:0x0006 7400 MOV A,#0x00C:0x0008 90E800 MOV DPTR,#0xE800LOOP:C:0x000B F0 MOVX @DPTR,AC:0x000C 04 INC AC:0x000D B4FFFB CJNE A,#0xFF,LOOP(C:000B)LOOP1:C:0x0010 14 DEC AC:0x0011 F0 MOVX @DPTR,AC:0x0012 B400FB CJNE A,#0x00,LOOP1(C:0010)C:0x0015 020006 LJMP START(C:0006)

PROGRAM TO GENERATE SAWTOOTH WAVEFORM USING DAC

C:0x0000 7480 `MOV A,#P0(0x80)C:0x0002 90E803 MOV DPTR,#0xE803C:0x0005 F0 MOVX @DPTR,ASTART:C:0x0006 7400 MOV A,#0x00C:0x0008 90E800 MOV DPTR,#0xE800LOOP:C:0x000B F0 MOVX @DPTR,AC:0x000C 04 INC AC:0x000D B4FFFB CJNE A,#0xFF,LOOP(C:000B)C:0x0010 020006 LJMP START(C:0006)

OUTPUT:http://image.absoluteastronomy.com/images/encyclopediaimages/s/sa/sawtooth-td_and_fd.png

PROGRAM TO GENERATE EXPONENTIAL WAVE USING DAC

C:0x0000 7480 MOV A,#P0(0x80)C:0x0002 90E803 MOV DPTR,#0xE803C:0x0005 F0 MOVX @DPTR,AC:0x0006 7400 MOV A,#0x00C:0x0008 D3 SETB CLOOP:C:0x0009 33 RLC AC:0x000A 90E800 MOV DPTR,#0xE800C:0x000D F0 MOVX @DPTR,AC:0x000E B428F8 CJNE A,#0x28,LOOP(C:0009)LOOP1:C:0x0011 13 RRC AC:0x0012 F0 MOVX @DPTR,AC:0x0013 B401F3 CJNE A,#0x01,LOOP(C:0009)C:0x0016 020009 LJMP LOOP(C:0009)

http://www.ece.uci.edu/docs/hspice/hspice_2001_2-43.jpgOUTPUT:

PROGRAM TO GENERATE STAIRCASE WAVEFORM USING DAC

C:0x0000 7480 MOV A,#P0(0x80)C:0x0002 90E803 MOV DPTR,#0xE803C:0x0005 F0 MOVX @DPTR,ASTART:C:0x0006 7400 MOV A,#0x00C:0x0008 90E800 MOV DPTR,#0xE800LOOP:C:0x000B F0 MOVX @DPTR,AC:0x000C 120016 LCALL DELAY(C:0016)C:0x000F 242A ADD A,#0x2AC:0x0011 50F8 JNC LOOP(C:000B)C:0x0013 020006 LJMP START(C:0006)DELAY:C:0x0016 78FF MOV R0,#0xFFLOOP1:C:0x0018 D8FEDJNZ R0,LOOP1(C:0018)C:0x001A 22 RET

http://t1.gstatic.com/images?q=tbn:ANd9GcSd4XiZWtcwiA3tliAvbhU4saO1c7IMAsLjOzhSX4Op5GoMYj1H6A&t=1OUTPUT :

PROGRAM TO GENERRATE SINUSOIDAL WAVE USING DAC.

TO GENERATE SINUSOIDAL WAVEFORM WE USE LOOKUP TABLE METHOD.LET V= VPSIN + VOIF WE SELECT THE AVERRAGE VALUE OF THE SINE WAVE (THAT IS = 0O) AT THE MIDDLE OF THE AVAILABLE RANGE THE WAVEFORM CAN BE OF MAXIMUM POSSIBLE AMPLITUDE. THE FULL SWING IS LIMITED TO FFH IN AN 8-BIT SYSTEM. IF AVERAGE LEVEL V0IS SELECTED TO BE 80H THE VP(PEAK EXCURSION) CAN BE FFH 80H = 7FH. THUS THE WAVEFORM WILL TAKE FFH AT ITS POSITIVE PEAK(AT 90O)AND 01H(80H 7FH) AT ITS NEGATIVE PEAK(AT 270O). PUTTING THE VALUES IN ABOVE EQUATION,V= 7FH SIN + 80HIF WE CALUCLATE SAMPLES WITH 5OINTERVALS VWILL TAKE VALUES AS FOLLOWS :

C:0x0000 7480 MOV A,#P0(0x80)C:0x0002 90E803 MOV DPTR,#0xE803C:0x0005 F0 MOVX @DPTR,ASTART:C:0x0006 7840 MOV R0,#0x40C:0x0008 7948 MOV R1,#0x48C:0x000A 90E800 MOV DPTR,#0xE800LOOP:C:0x000D E2 MOVX A,@R0C:0x000E F0 MOVX @DPTR,AC:0x000F 08 INC R0C:0x0010 19 DEC R1C:0x0011 D9FA DJNZ R1,LOOP(C:000D)C:0x0013 020006 LJMP START(C:0006)

(DEG)V(DEG)V(DEG)V(DEG)V

58BH95FFH18575H27501H

1096H100FDH1906AH28003H

15A1H105FAH1955FH28505H

20ABH110F7H20055H29009H

25B6H115F3H2051AH2950DH

30C0H120EEH21041H30012H

35C9H125E8H21537H30518H

40D2H130E1H2202EH3101FH

45DAH135DAH22526H31526H

50E1H140D2H2301FH3202EH

55E8H145C9H23518H32537H

60EEH150C0H24012H33041H

65F3H155B6H2450DH3354AH

70F7H160ABH25009H34055H

75FAH165A1H25505H3455FH

80FDH17096H26003H3506AH

85FFH1758BH26501H35575H

90FFH18080H27001H36080H

THE SAMPLED VALUES ARE KEPT IN THE MEMORY STARTING AND CALLED ONE BY ONE TO OBTAIN A SINUSOIDAL WAVEFORM THE FREQUENCY OF SINUSOIDAL WAVEFORM DEPENDS ON THE DELAY CALUCLATION.http://www.sweethaven02.com/ModElec/DcAc/acee/fig0109.gif

PROGRAM TO INTERFACE ADC TO 8051

C:0x0000 7482 MOV A,#0x82C:0x0002 90E803 MOV DPTR,#0xE803C:0x0005 F0 MOVX @DPTR,AC:0x0006 7402 MOV A,#0x02C:0x0008 90E800 MOV DPTR,#0xE800C:0x000B F0 MOVX @DPTR,AC:0x000C 00 NOP C:0x000D 00 NOP C:0x000E 00 NOP C:0x000F 00 NOP C:0x0010 7401 MOV A,#0x01C:0x0012 F0 MOVX @DPTR,AC:0x0013 7805 MOV R0,#0x05C:0x0015 00 NOP C:0x0016 00 NOP C:0x0017 00 NOP C:0x0018 00 NOP C:0x0019 79FF MOV R1,#0xFFLOOP1:C:0x001B 18 DEC R0LOOP:C:0x001C 19 DEC R1C:0x001D B900FC CJNE R1,#0x00,LOOP(C:001C)C:0x0020 B800F8 CJNE R0,#0x00,LOOP1(C:001B)C:0x0023 7404 MOV A,#0x04C:0x0025 F0 MOVX @DPTR,AC:0x0026 7800 MOV R0,#0x00LOOP2:C:0x0028 08 INC R0C:0x0029 90E801 MOV DPTR,#0xE801C:0x002C E0 MOVX A,@DPTRC:0x002D 5401 ANL A,#0x01C:0x002F 70F7 JNZ LOOP2(C:0028)C:0x0031 E8 MOV A,R0C:0x0032 908501 MOV DPTR,#0x8501C:0x0035 F0 MOVX @DPTR,AC:0x0036 7402 MOV A,#0x02C:0x0038 90E800 MOV DPTR,#0xE800C:0x003B F0 MOVX @DPTR,AC:0x003C 7800 MOV R0,#0x00C:0x003E 020000 LJMP C:0000

Program to interface LCD to 8051

Pins to LCD to 8051Vcc, Vssand Vee: - Vccis connected to +5v supplyVssis connected to ground referenceVeeis used for contrastRS : Register Select :-If RS = 0, the instruction command code register is selected allowing the user to senda command such as clear display, cursor at home etc.,

If RS = 1,the data register is selected, allowing the user to send data to be displayed on the LCD.

R/W : Read/Write : -R/W input allows the userto write information to the LCD or read information from it.R/W = 1 when reading, R/W = 0 when writing.E,Enable : -The enable pin is used by the LCD to latch information presented to its data pins.When data is supplied to data pins, a high-to-low pulse must be applied to this pin in order for LCD to latchin the data present at the data pins. This pulse must be a minimum of 450ns wide.

D0-D7 : -The 8-bit data pins, D0-D7, are used to send information to the LCD or read the contents of the LCDs internal registers.To display letters and numbers we send ascii codesto these pins while making RS = 1.We also use RS=0 to check the busy flag bit to see if the LCDis ready to receive information.The busy flag bit D7 and can be read whenR/W = , RS=0, as follows : if R/W=1,RS=0. WhenD7 =1(busy flag = 1), the LCD is busy taking care of internal operations and will not accept any new information.When D7 = 0, the LCD is ready to receive new information.NOTE : It is recommended to check busy flag before writingany data to LCD.Here in our Kit Data pins D0-D7 of LCD are connected to PA 0f 8255.& RS PB0 R/W PB1 E PB2

C:0x0000 7480 MOV A,#P0(0x80)C:0x0002 90E803 MOV DPTR,#0xE803C:0x0005 F0 MOVX @DPTR,AC:0x0006 7438 MOV A,#0x38C:0x0008 12003B LCALL COMNWRT(C:003B)C:0x000B 120032 LCALL DELAY(C:0032)C:0x000E 740E MOV A,#0x0EC:0x0010 12003B LCALL COMNWRT(C:003B)C:0x0013 120032 LCALL DELAY(C:0032)C:0x0016 7401 MOV A,#0x01C:0x0018 12003B LCALL COMNWRT(C:003B)C:0x001B 120032 LCALL DELAY(C:0032)C:0x001E 7406 MOV A,#0x06C:0x0020 12003B LCALL COMNWRT(C:003B)C:0x0023 120032 LCALL DELAY(C:0032)C:0x0026 7484 MOV A,#0x84C:0x0028 12003B LCALL COMNWRT(C:003B)C:0x002B 120032 LCALL DELAY(C:0032)C:0x002E 1169 ACALL DISPDATA(C:0069)AGAIN:C:0x0030 80FE SJMP AGAIN(C:0030)DELAY:C:0x0032 7B05 MOV R3,#0x05HERE2:C:0x0034 7CFF MOV R4,#0xFFHERE1:C:0x0036 DCFE DJNZ R4,HERE1(C:0036)C:0x0038 DBFA DJNZ R3,HERE2(C:0034)C:0x003A 22 RET COMNWRT:C:0x003B 90E800 MOV DPTR,#0xE800C:0x003E F0 MOVX @DPTR,AC:0x003F 90E801MOV DPTR,#0xE801C:0x0042 740B MOV A,#0x0BC:0x0044 F0 MOVX @DPTR,AC:0x0045 7408 MOV A,#0x08C:0x0047 F0 MOVX @DPTR,AC:0x0048 740C MOV A,#0x0CC:0x004A F0 MOVX @DPTR,AC:0x004B 120032 LCALL DELAY(C:0032)C:0x004E 7408 MOV A,#0x08C:0x0050 F0 MOVX @DPTR,AC:0x0051 22 RET DATAWRT:C:0x0052 90E800 MOV DPTR,#0xE800C:0x0055 F0 MOVX @DPTR,AC:0x0056 90E801 MOV DPTR,#0xE801C:0x0059 740A MOV A,#0x0AC:0x005B F0 MOVX @DPTR,AC:0x005C 7409 MOV A,#0x09C:0x005E F0 MOVX @DPTR,AC:0x005F 740D MOV A,#0x0DC:0x0061 F0 MOVX @DPTR,AC:0x0062 7409 MOV A,#0x09C:0x0064 F0 MOVX @DPTR,AC:0x0065 120032 LCALL DELAY(C:0032)C:0x0068 22 RET DISPDATA:C:0x0069 7441 MOV A,#0x41C:0x006B 120052 LCALL DATAWRT(C:0052)C:0x006E 120032 LCALL DELAY(C:0032)C:0x0071 7452 MOV A,#0x52C:0x0073 120052 LCALL DATAWRT(C:0052)C:0x0076 120032 LCALL DELAY(C:0032)C:0x0079 7443 MOV A,#0x43C:0x007B 120052 LCALL DATAWRT(C:0052)C:0x007E 120032 LCALL DELAY(C:0032)C:0x0081 7448 MOV A,#0x48C:0x0083 120052 LCALL DATAWRT(C:0052)C:0x0086 120032 LCALL DELAY(C:0032)C:0x0089 7441 MOV A,#0x41C:0x008B 120052 LCALL DATAWRT(C:0052)C:0x008E 120032 LCALL DELAY(C:0032)C:0x0091 744E MOV A,#0x4EC:0x0093 120052 LCALL DATAWRT(C:0052)C:0x0096 120032 LCALL DELAY(C:0032)C:0x0099 22 RET

To get a scrolling LCD display just add the following lines after (C:0x002E 1169ACALL DISPDATA(C:0069)) this line :LOOP :MOV A,#1CHACALL COMNWRTACALL DELAYSJMP LOOP

Traffic Light Control using 8051 :

Steps to interface traffic light control to 8051Connect all the red lights to port A of 8255.

Connect all the orange lights to port B of 8255

Connect all the green lights to port C of 8255

PC0PB0

PA0PC1PB1PA1PA3PB3PC3PA2PB2PC2

The traffic lights are connected as above.

The program can be written in two waysBy using direct instructions

C:0x0000 7480 MOV A,#0x80C:0x0002 90E803 MOV DPTR,#0xE803C:0x0005 F0 MOVX @DPTR,ALOOP:C:0x0006 740E MOV A,#0x0EC:0x0008 120084 LCALL PORTA(C:0084)C:0x000B 7401 MOV A,#0x01C:0x000D 120089 LCALL PORTB(C:0089)C:0x0010 120093LCALL DELAY1(C:0093)C:0x0013 7400 MOV A,#0x00C:0x0015 120089 LCALL PORTB(C:0089)C:0x0018 7401 MOV A,#0x01C:0x001A 12008E LCALL PORTC(C:008E)C:0x001D 1200AA LCALL DELAY(C:00AA)C:0x0020 7400 MOV A,#0x00C:0x0022 12008E LCALL PORTC(C:008E)C:0x0025 740D MOV A,#0x0DC:0x0027 120084 LCALL PORTA(C:0084)C:0x002A 7402 MOV A,#0x02C:0x002C 120089 LCALL PORTB(C:0089)C:0x002F 120093 LCALL DELAY1(C:0093)C:0x0032 7400 MOV A,#0x00C:0x0034 120089 LCALL PORTB(C:0089)C:0x0037 7402 MOV A,#0x02C:0x0039 12008E LCALL PORTC(C:008E)C:0x003C 1200AA LCALL DELAY(C:00AA)C:0x003F 7400 MOV A,#0x00C:0x0041 12008E LCALL PORTC(C:008E)C:0x0044 740B MOV A,#0x0BC:0x0046 120084 LCALL PORTA(C:0084)C:0x0049 7404 MOV A,#0x04C:0x004B 120089 LCALL PORTB(C:0089)C:0x004E 120093 LCALL DELAY1(C:0093)C:0x0051 7400 MOV A,#0x00C:0x0053 120089 LCALL PORTB(C:0089)C:0x0056 7404 MOV A,#0x04C:0x0058 12008E LCALL PORTC(C:008E)C:0x005B 1200AA LCALL DELAY(C:00AA)C:0x005E 7400 MOV A,#0x00C:0x0060 12008E LCALL PORTC(C:008E)C:0x0063 7407 MOV A,#0x07C:0x0065 120084 LCALL PORTA(C:0084)C:0x0068 7408 MOV A,#0x08C:0x006A 120089 LCALL PORTB(C:0089)C:0x006D 120093 LCALL DELAY1(C:0093)C:0x0070 7400 MOV A,#0x00C:0x0072 120089 LCALL PORTB(C:0089)C:0x0075 7408 MOV A,#0x08C:0x0077 12008E LCALL PORTC(C:008E)C:0x007A 1200AA LCALL DELAY(C:00AA)C:0x007D 7400 MOV A,#0x00C:0x007F 12008E LCALL PORTC(C:008E)C:0x0082 8082 SJMP LOOP(C:0006)PORTA:C:0x0084 90E800 MOV DPTR,#0xE800C:0x0087 F0 MOVX @DPTR,AC:0x0088 22 RET PORTB:C:0x0089 90E801 MOV DPTR,#0xE801C:0x008C F0 MOVX @DPTR,AC:0x008D 22 RET PORTC:C:0x008E 90E802 MOV DPTR,#0xE802C:0x0091 F0 MOVX @DPTR,AC:0x0092 22 RET DELAY1:C:0x0093 758910 MOV TMOD(0x89),#0x10C:0x0096 7B47 MOV R3,#0x47AGAIN:C:0x0098 758B08 MOV TL1(0x8B),#0x08C:0x009B 758D01 MOV TH1(0x8D),#0x01C:0x009E D28E SETB TR1(0x88.6)BACK:C:0x00A0 308FFD JNB TF1(0x88.7),BACK(C:00A0)C:0x00A3 C28E CLR TR1(0x88.6)C:0x00A5 C28F CLR TF1(0x88.7)C:0x00A7 DBEF DJNZ R3,AGAIN(C:0098)C:0x00A9 22 RET

DELAY:C:0x00AA 758910 MOV TMOD(0x89),#0x10C:0x00AD 7BD4 MOV R3,#0xD4AGAIN1:C:0x00AF 758B08MOV TL1(0x8B),#0x08C:0x00B2 758D01 MOV TH1(0x8D),#0x01C:0x00B5 D28E SETB TR1(0x88.6)BACK1:C:0x00B7 308FFD JNB TF1(0x88.7),BACK1(C:00B7)C:0x00BA C28E CLR TR1(0x88.6)C:0x00BC C28F CLR TF1(0x88.7)C:0x00BE DBEF DJNZ R3,AGAIN1(C:00AF)C:0x00C0 22 RET

By using Rotate operations

C:0x0000 7480 MOV A,#0x80C:0x0002 90E803 MOV DPTR,#0xE803C:0x0005 F0 MOVX @DPTR,AC:0x0006 78EE MOV R0,#0xEEC:0x0008 7911 MOV R1,#0x11C:0x000A 7A11 MOV R2,#0x11AGAIN1:C:0x000C 90E800 MOV DPTR,#0xE800C:0x000F 120020 LCALL LOOP(C:0020)C:0x0012 90E801 MOV DPTR,#0xE801C:0x0015 120025 LCALL LOOP1(C:0025)C:0x0018 90E802 MOV DPTR,#0xE802C:0x001B 120030 LCALL LOOP2(C:0030)C:0x001E 80EC SJMP AGAIN1(C:000C)LOOP:C:0x0020 E8 MOV A,R0C:0x0021 F0 MOVX @DPTR,AC:0x0022 23 RL AC:0x0023 F8 MOV R0,AC:0x0024 22 RET LOOP1:C:0x0025 E9 MOV A,R1C:0x0026 F0 MOVX @DPTR,AC:0x0027 23 RL AC:0x0028 F9 MOV R1,AC:0x0029 12003B LCALL DELAY1(C:003B)C:0x002C 7400 MOV A,#0x00C:0x002E F0 MOVX @DPTR,AC:0x002F 22 RET LOOP2:C:0x0030 EA MOV A,R2C:0x0031 F0 MOVX @DPTR,AC:0x0032 23 RL AC:0x0033 FA MOV R2,AC:0x0034 120052 LCALL DELAY(C:0052)C:0x0037 7400 MOV A,#0x00C:0x0039 F0 MOVX @DPTR,AC:0x003A 22 RET DELAY1:C:0x003B 758910 MOV TMOD(0x89),#0x10C:0x003E 7B47 MOV R3,#0x47AGAIN:C:0x0040 758B08 MOV TL1(0x8B),#0x08C:0x0043 758D01 MOV TH1(0x8D),#0x01C:0x0046 D28E SETB TR1(0x88.6)BACK:C:0x0048 308FFD JNB TF1(0x88.7),BACK(C:0048)C:0x004B C28E CLR TR1(0x88.6)C:0x004D C28F CLR TF1(0x88.7)C:0x004F DBEF DJNZ R3,AGAIN(C:0040)C:0x0051 22 RET DELAY:C:0x0052 758910 MOV TMOD(0x89),#0x10C:0x0055 7BD4 MOV R3,#0xD4AGAIN2:C:0x0057 758B08 MOV TL1(0x8B),#0x08C:0x005A 758D01 MOV TH1(0x8D),#0x01C:0x005D D28E SETB TR1(0x88.6)BACK1:C:0x005F 308FFD JNB TF1(0x88.7),BACK1(C:005F)C:0x0062 C28E CLR TR1(0x88.6)C:0x0064 C28F CLR TF1(0x88.7)C:0x0066 DBEF DJNZ R3,AGAIN2(C:0057)C:0x0068 22RET