microcontroller (8051) general and simple alp n cprograms
DESCRIPTION
microcontroller 8051 based ALP's and c programs ALP's on simple and basic programs , which you can understand it very easily by executing in keil_3 . purposely made for micro controller based program executing.thank youTRANSCRIPT
//////MICRO CONTROLLER 8051 general and simple ALP’s Solved//////
1/////write alp to convert decimal to hex////d
org 0h
mov a,#255d
mov b,#10h
div ab
mov r0,b
mov b,#10h
div ab
end
2/////hex to decimal////d
org 0h
mov a,#0FFh
mov b,#0Ah
div ab
mov r0,b
mov b,#0Ah
div ab
end
3/////ascii to decimal(packed)/////d
org 0h
mov a,#32h
anl a,#0fh
mov r0,a
mov a,#34h
anl a,#0fh
swap a
add a,r0
mov r4,a
end
4////////decimal to ascii (packed)////d
org 0h
mov a,#12h
anl a,#0fh
add a,#30h
mov r3,a
mov a,#14h
anl a,#0f0h
swap a
add a,#30h
mov r4,a
end
5///// down counter /////d
org 0h
mov a,#20h
up:mov p2,a
dec a
lcall delay
cjne a,#20h,up
sjmp over
delay: mov r3,#0aah
b3:mov r2,#0aah
b2:mov r1,#0aah
b1:djnz r1,b1
djnz r2,b2
djnz r3,b3
ret
over: nop
end
6///////up counter////d
org 0h
mov a,#0h
up:mov p2,a
inc a
lcall delay
cjne a,#00h,up
sjmp over
delay: mov r3,#0aah
b3: mov r2,#0aah
b2: mov r1,#0aah
b1: djnz r1,b1
djnz r2,b2
djnz r3,b3
ret
over:nop
end
7/////BCD UP COUNTER///d
org 0h
mov a,#00h
go:mov p2,a
add a,#00h
da a
inc a
lcall delay
cjne a,#00h,go
sjmp over
delay:mov r3,#0FEh
b3: mov r2,#0FEh
b2: mov r1,#0FEh
b1: djnz r1,b1
djnz r2,b2
djnz r3,b3
ret
over:nop
end
8////step wave////d
org 0h
back:mov a,#00h
mov P0,a
lcall delay
mov a,#07fh
mov P0,a
lcall delay1
mov a,#0ffh
mov P0,a
lcall delay2
mov a,#07fh
mov P0,a
lcall delay
sjmp back
sjmp last
delay:mov r0,#0ffh
back1:djnz r0,back1
delay1:mov r0,#0ffh
back2:djnz r0,back2
delay2:mov r0,#0ffh
back3:djnz r0,back3
ret
last:nop
end
9////square wave////d
org 0
back: mov a,#00h
mov p2,a
lcall delay
mov a,#0ffh
mov p2,a
lcall delay
mov p2,a
sjmp back
sjmp last
delay:mov r0,#0ffh
back2:djnz r0,back2
ret
last:nop
end
10////ramp///d
org 0h
back:mov a,#00h
go: mov P0,a
inc a
lcall delay
cjne a,#0ffh,go
sjmp back
sjmp last
delay:mov r0,#0ffh
back1:djnz r0,back1
ret
last:nop
end
11/////triangular wave/////d
org 0h
mov a,#00h
back:inc a
mov p2,a
cjne a,#0ffh,back
go:dec a
mov p2,a
cjne a,#00h,go
sjmp back
sjmp last
delay:mov r0,#0ffh
back1:djnz r0,back1
ret
last:nop
end
12///exchange of data internaaly///d
org 0h
mov 20h,#02h
mov 21h, #03h
mov 22h , #04h
mov 23h , #05h
mov r0,#20h
mov r1,#30h
mov r2,#05h
back:mov a,@r0
mov @r1,a
inc r0
inc r1
djnz r2,back
sjmp last
last:nop
end
13 ////exchange block of data in bulk///// d
org 0h
mov 20h,#02h
mov 21h,#03h
mov 22h,#04h
mov 23h,#05h
mov 30h,#07h
mov 31h,#08h
mov 32h,#09h
mov 33h,#06h
mov r0,#20h
mov r1,#30h
mov r2,#05h
back:mov a,@r0
mov r3,a
mov a,@r1
mov @r0,a
mov a,r3
mov @r1,a
inc r0
inc r1
djnz r2,back
sjmp last
last:nop
end
14/////// internal to external transfer /////// d
org 0h
mov 20h,#02h
mov 21h,#03h
mov 22h,#04h
mov 23h,#05h
mov r0,#20h
mov dptr,#400h
mov r2,#05h
back:mov a,@r0
movx @dptr,a
inc dptr
inc r0
djnz r2,back
sjmp last
last:nop
end
15/////external to internal////d
org 0h
mov r0,#20h
mov dptr,#400h
mov r2,#05h
back:movx a,@dptr
mov @r0,a
inc dptr
inc r0
djnz r2,back
sjmp last
last:nop
end
16///// count even and odd numbers //////d
org 0
mov dptr,#400h
mov r0,#04h
back:movx a,@dptr
rrc a
inc dptr
jc vyas
inc r2
jmp hell
vyas:inc r3
hell:djnz r0,back
sjmp last
last :nop
end
17///////aritmatic operation (all in one)////d
org 0
mov dptr,#700h
movx a,@dptr
mov r0,a
addd:cjne r0,#00h,subbb
inc dptr
movx a,@dptr
mov r1,a
inc dptr
movx a,@dptr
mov r2,a
mov a,r1
add a,r2
mov r4,a
sjmp last
subbb:cjne r0,#01h,mull
inc dptr
movx a,@dptr
mov r1,a
inc dptr
movx a,@dptr
mov r2,a
mov a,r1
subb a,r2
mov r4,a
sjmp last
mull:cjne r0,#02h,last
inc dptr
movx a,@dptr
mov r1,a
inc dptr
movx a,@dptr
mov r2,a
mov a,r1
mov b,r2
mul ab
mov r4,a
sjmp last
last:mov r4,#0ffh
end
15////desending order////
org 0
mov 20h,#86h
mov 21h,#87h
mov 22h ,#88h
mov 23h ,# 89h
mov r2,#03h
back1:mov r1,#03h
mov r0,#20h
back:mov b,@r0
inc r0
mov a,@r0
cjne a,b,so
so:jnc exchange
jmp last
exchange:mov @r0,b
dec r0
mov @r0,a
inc r0
last:djnz r1,back
djnz r2,back1
end
16/////ascending order /////
org 0
mov 20h,#86h
mov 21h,#87h
mov 22h ,#88h
mov 23h ,# 89h
mov r2,#03h
back1:mov r1,#03h
mov r0,#20h
back:mov b,@r0
inc r0
mov a,@r0
cjne a,b,so
so:jc exchange
jmp last
exchange:mov @r0,b
dec r0
mov @r0,a
inc r0
last:djnz r1,back
djnz r2,back1
End
17//////compare 2 bits///////
org 0
mov r1,#02fh
mov a,@r1
num1:cjne a,#00h,num2
inc r1
mov a,@r1
anl a,#0fh
sjmp last
num2:cjne a,#01h,num3
inc r1
mov a,@r1
anl a,#0f0h
sjmp last
num3:cjne a,#02h,deff
inc r1
mov a,@r1
sjmp last
deff:mov a,#0fh
last:mov r5,a
end
18//////c programin using 8051 _lcd interfacing/////
#include<reg51.h>
#define cmdport P2
#define dataport P0
#define q 100
sbit rs = cmdport^4; //register select pin
sbit rw = cmdport^5; //read write pin
sbit e = cmdport^6; //enable pin
void delay(unsigned int msec) //Function to provide time delay in msec.
{
int i,j ;
for(i=0;i<msec;i++)
for(j=0;j<1275;j++);
}
void lcdcmd(unsigned char item) //Function to send command to LCD
{
dataport = item;
rs= 0;
rw=0;
e=1;
delay(1);
e=0;
}
void lcddata(unsigned char item) //Function to send data to LCD
{
dataport = item;
rs= 1;
rw=0;
e=1;
delay(1);
e=0;
}
void main()
{
lcdcmd(0X38); //for using 8-bit 2 row mode of LCD
delay(100);
lcdcmd(0x0E); //turn display ON for cursor blinking
delay(100);
lcdcmd(0X01); //clear screen
delay(100);
lcdcmd(0X06); //display ON
delay(100);
lcdcmd(0X80); //bring cursor to position 6 of line 1
delay(100);
while(1)
{
lcdcmd(0X80); //bring cursor to position 6 of line 1
delay(100);
lcddata('C');
delay(100);
lcddata('E');
delay(100);
lcddata('T');
delay(100);
while(1);
}
}
19///write an c program to run steper motor////
#include<reg51.h>
void delay(int);
void main()
{
do
{
P2 = 0x0e; //1110
delay(10000);
P2 = 0x0d; //1101
delay(10000);
P2 = 0x0b; //1011
delay(10000);
P2 = 0x07; //0111
delay(10000);
}
while(1);
}
void delay(int k)
{
int i,j;
for(i=0;i<k;i++)
{
for(j=0;j<100;j++)
{}
}
}
20///////write an c program to run dc motor/////
#include <at89c51xd2.h>
void delay (int k)
sbit pwm=P2^4;
void main (void)
{
{
pwm=1;
delay();
delay();
delay();
delay();
pwm=0;
delay();
}
while (1)
}
void delay (int k)
{
unsigned int i,j,count;
for (i=0;i<300;i++)
{
for(j=0;j<300;j++)
{
count++
}
}
}
21/////dptr shift right/////
org 0hmov dptr,#8948h
mov a,dpl
mov r3,a
rrc a
mov dpl,a
mov a,dph
rrc a
mov dph,a
end