p-6

6a

 1.Interrupt with level triggering

org 0000h

sjmp 0030h ;main program

 --------------interrupt service routine for INT1 to turn on/off led

org 0013h ;INT1 vector address

mov p0,#0aah ;LED ON/OFF

mov r4,#255 ;delay for 1 sec

repeat: mov r5,#255

 next: mov r6,#04h

 c2: djnz r6,c2

djnz r5,next

djnz r4,repeat

mov p0,#55h ;LED ON/OFF

reti ; return on interrupt

 ---------------main program for initialization

 org 0030h

mov p0,#00 ;configure port as output port

mov ie,#10000100b ; enable external interrupt 1

here: sjmp here ;stay here until interrupted

end


2.Interrupt with edge triggering

org 0000h

sjmp 0030h ;main program

 -----------interrupt service routine for INT1 to turn on/off led

org 0013h ;INT1 vector address

mov p0,#0aah ;LED ON/OFF

mov r4,#255 ;delay for 1 sec

repeat: mov r5,#255

 next: mov r6,#04h

 c2: djnz r6,c2

djnz r5,next

djnz r4,repeat

mov p0,#55h ;LED ON/OFF

reti ; return on interrupt

---------------main program for initialization

 org 0030h

setb tcon.2 ;make INT1 edge triggered interrupt

mov p0,#00 ;configure port as output port

mov ie,#10000100b ; enable external interrupt 1

 here: sjmp here ;stay here until interrupted

end

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

6b

Transmit serially
 #include<reg51.h>
 void main()
 {
 char A[]="microcontrollerlab,0";
 unsigned char i=0;
 //P3=0x03;
 TMOD=0x20;
 TH1=0xFD;
 SCON=0x50;
 TR1=1;
 while(1)
 {
 while(A[i]!='\0')
 {
 SBUF=A[i];
 while(TI==0);
 TI=0;
 i++;
 }
 i++;
 }
 i=0;
 }
 
Receive serially
 #include<reg51.h>
 sbit rs=P3^7;
 sbit en=P3^5;
 sbit rw=P3^6;
 void delay(unsigned int time)
 { unsigned int i,j;
for(i=0;i<time;i++)
for(j=0;j<5;j++); }
void lcdcmd(unsigned char value) {
P2=value;
rs=0;
rw=0;
en=1;
delay(50);
en=0;
delay(50); }
void display(unsigned char value) {
P2=value;
rs=1;
rw=0;
en=1;
delay(50);
en=0;
delay(50); }
void lcdinit(void) {
P2=0x00;
P3=0x03;
delay(1500);
display(0x30);
delay(450); 
display(0x30);
delay(300);
display(0x30);
delay(650);
lcdcmd(0x38);
delay(50);
lcdcmd(0x0E);
delay(50);
lcdcmd(0x01);
delay(50);
lcdcmd(0x06);
delay(50);
lcdcmd(0x00);
delay(50); }
 void main()
 { 
char data1;
 lcdinit(); 
 
TMOD=0x20;
 TH1=0xFD;
 SCON =0x50;
 TR1=1;
 while(1)
 {
 while(SBUF!=0x0D)
 {
 while(RI==0);
 data1=SBUF;
 RI=0;
 display(data1);
 delay(50);
 }
 }
 }


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

6c

1.sine wave

org 0000h
sjmp 30h
org 30h
 mov p1,#00 ; configure p1 as o/p port
again:mov dptr, #table
mov r2,#36
back: clr a
movc a, @a+dptr ; send data from table to DAC to 
 generate sine wave
 mov p1,a
inc dptr
djnz r2,back
sjmp again
org 300h
 table: db 128,151,172,192,210,226,239,248,254,255,254,248,239,226,210
db 192,172,150,128,106,84,64,46,30,17,8,2,0,2,8,17,30,46,64,84,106
 end

2.square wave

org 0000h
 sjmp 0030h
 org 0030h
 mov p1,#00h ; configure p1 as o/p port
 //mov p2,#00h
repeat: clr a
 mov p1,a ; send 00 an p1
 call delay ; delay
 mov a,#0ffh ; send FFh(high) an p1
mov p1,a
 call delay ; delay
 sjmp repeat ; repeat to generate square wave
 delay: mov r1,#05h 
 back1: mov r2,#0e5h
 back: djnz r2,back
 djnz r1,back1
 ret
end

3.Triangle wave
 org 0000h
sjmp 030h
org 0030h
mov p1,#00h ; configure p1 as o/p port
 repeat: mov a,#00h ; generate triangular wave an port p1
 up: mov p1,a
inc a
call delay
cjne a,#0ffh,up
dec a ; generate up ramp
 down: mov p1,a
dec a
acall delay
cjne a,#0ffh,down ; generate down ramp
sjmp repeat
 delay: mov r3,#0e0h ; delay between steps
 back: djnz r3,back
ret
end

4.Up ramp
org 0000h
sjmp 030h
org 0030h
mov p1,#00h ; configure p1 as o/p port
clr a ; A=0
 again: mov p1,a ; o/p increment value of A
inc a
acall delay ; delay between steps
sjmp again ; repeat forever
 delay: mov r3,#0e0h ;delay program
 back: djnz r3,back
 ret
 end

5.Down ramp
org 0000h
sjmp 030h
org 0030h
mov p1,#00h ; configure p1 as o/p port
mov a,#0ffh ; A= 0ffh
 again: mov p1,a ; output high at port 1
dec a
acall delay ; decrement Accumulator
sjmp again ; Delay between steps
 delay: mov r3,#0e0h
 back: djnz r3,back
ret
 end

6d.Write ALP to interface an LCD display and to display a message on it

org 0000h
 sjmp 0030h
 org 0030h
 mov dptr,#mcomm
 c1: clr a
movc a,@a+dptr
acall commwrt ; call command subroutine
acall delay ; give LCD some time
jz send_dat
inc dptr
sjmp c1
 send_dat: mov dptr,#mdata
 d1: clr a
 movc a,@a+dptr
 acall datawrt ; call data with subroutine
 acall delay ; give LCD some time
 inc dptr
jz again
 sjmp d1
 again: sjmp again ;stay here
 commwrt: mov p2,a ; send command to lcd through p2
 clr p3.7 ; RS=0 for command
 clr p3.6 ; R/W= for write
 setb p3.5 ; E=1
 acall delay ; delay
 clr p3.5 ; E=0 for H to L
 ret
 datawrt: mov p2,a ; send data to p2
setb p3.7 ; RS=1 for data
clr p3.6 ; R/W=0 for write

setb p3.5 ; E=1
acall delay ; delay
clr p3.5 ; E=0 for H to L pulse
ret
 delay: mov r3,#50 ; Long delay
here2: mov r4,#255
here: djnz r4,here
 djnz r3,here2
 ret
org 0300h
 mcomm: db 38h,0eh,01h,06h,00h,0 ; commands and null
 mdata: db " microcontroller " ; data and null
 end

6e

i.continous rotation
org 0000h
sjmp 30h
org 0030h
setb p3.2 ; p3.2 configured as i/p port
mov p0,#00h ; port 0 configured as o/p port
 mov a,#88h ; load step sequence
 cw: jnb p3.2, ccw ; check status of switch, if switch is not pressed
 p3.2=1
mov p0,a ; issue sequence to motor
rr a ; for rotate right clockwise
acall delay
acall delay
sjmp cw
 ccw: rl a ; if p3.2=0(switches pressed)
acall delay ; issue sequence to motor
acall delay
mov p0,a ; for rotateing counter clockwise
sjmp cw
delay: mov r4,#07h ; repeat
repeat: mov r5,#0ffh ; delay between steps
next: djnz r5,next
djnz r4,repeat
ret
end


ii.90º rotation
org 0000h
sjmp 30h
org 0030h
mov p0,#00h ; port 0 configured as o/p port
 mov a,#88h ; Load step sequence.
 mov r0,#50 ; for 90º degree of rotation
step angle =
90
1.8
=50)
 back: rr a
mov p0,a ; issue sequence to motor
acall delay ; wait
acall delay
djnz r0,back
 again: sjmp again ; stay here
delay: mov r4,#07h
 repeat: mov r5,#0ffh
 next: djnz r5,next
djnz r4,repeat
ret
end


Comments

Popular posts from this blog

p-3

p-5

p-2